Posts by oasuke

Welcome to our brand new Clickteam Community Hub! We hope you will enjoy using the new features, which we will be further expanding in the coming months.

A few features including Passport are unavailable initially whilst we monitor stability of the new platform, we hope to bring these online very soon. Small issues will crop up following the import from our old system, including some message formatting, translation accuracy and other things.

Thank you for your patience whilst we've worked on this and we look forward to more exciting community developments soon!

Clickteam.

    It's necessary for me to be able to go back to earlier versions of my code, but at the same time this feature clutters up my project folder.

    Could the autobackup feature be changed to put the backups in a subfolder? Something like "*project name* Previous Versions?"

    You can use Belvedere(program) or make a batch script to automatically move the backups into a subfolder


    Generally speaking for backups, I use a program called syncback which backups my entire project directory and renames them incremental every 2hours or so.

    Zlib compression would be great!

    Also just a small thing I noticed(unrelated to the extension), You have to set the Alpha blend to 255 of the Active Picture while it creates the collision layer in order for the collison bg to actually be invisible. (Before it was set to "Make Invisible", which doesn't work)

    Quote

    I have an idea!


    Yeah, I was going to use this method but the problem lies when using the expression editor to view the folders

    (the event editor sucks),

    I disagree,it just needs better ways organizing objects. I'm also far too fond of using the event editor to just switch.

    Quote

    I'd be willing to bet you don't need anything like 1000 objectsor 7000 lines of code).

    No, I was just exaggerating that number. It's more closer to around 500, however I always look at the most extreme possibility since it's easily possible to reach 1k.

    7000 lines of code I most certainly need. For starters everything is being done in a single frame, so that includes any game mechanic I might need(cutscenes/gimmicks/every enemy/so on), which is actually quite small considering i've added just about everything I need. Just to give perspective, although every enemy is run off the same physics engine, I still need 10~20 lines of events to make them behave in a unique pattern. I have around 100 or so enemies. 100x20lines=2000 events just on enemies. Yes, It's possible I could unify them in way that would only require me to specify some variables so they'd all only use 1 event, but I feel that limits what I can do. Even if they had 100 lines each, as long as it performs its routine without hiccups or instability, I don't see the issue.

    In any case, the amount of code shouldn't ever be a problem considering 7k lines aren't being read every loop. In fact, probably only around 500 lines are read each loop, while the rest is deactivated.

    The complied executable + zipped is 3MB total.(Including external folders)
    The runtime object count averages at only 100 objects.
    The FPS never drops below 59, even when run on an outdated laptop.
    I'm quite content in what I have.

    Getting on topic, Yves sent me an email and unfortunately folder icons cannot be added during MMF2's life.

    I would still have to guess which folder to hover over. (Though it only takes less than 2 seconds, it adds up..when instead i could just look and instantly find it. Its mainly the particles/effect type objects that take up space. I wish I had combined them all in 1 object before, for the sake of organization.

    I've brought the request up before, but I'd really like to have an answer. Is there any possible way for the folders in the event editor to have custom icons? A simple edit button when you right-click a folder that brings you into the graphic editor would be most suitable. It's really starting to become troublesum to navigate through identical folders, especially since their folder names aren't displayed either. It's one of the main reasons I'm trying to keep everything external; so my event editor can be more organized and clean.

    Please login to see this picture.
    This is the best I could do with condensing 1k+ objects into folders, but there's still too many to wade without any visual identification.When I use the expression editor,I basically have to guess which folders the objects are in. Possibly I could use an active object and place them next to a folder, but I really don't want to do that.

    Any idea if this will ever be implemented within MMF2's future?

    The trick is to keep everything organized into groups, groups and more groups. Not only is this easier to keep track of, but it helps a lot when you need to copy and paste specific bundles of events between frames. :D

    Wow you're doing the multi-frame approach? That's impressive considering the quality of this game. I've been keeping my eye out for this for some time now, and it's looking wonderful.

    there a few pointers in there that do explain things a bit but not properly, here's a example of what i mean when i say there not tuts and just examples that you cant really learn much from,

    >> Start loop "MoveRight" Val(Edittext$("Edit Box"))times <<

    and here's the explanation the person wrote to go with that

    >> trigger a loop when the user is holding right or left <<

    Whoever wrote that comment probably did it more for themselves than to actually explain. The expression "Val" is used to convert a string(text) into a number. Let's say you have the string "100". Yes, the string contains a number, but the quotations makes it a string so you have to use the Val expression to retrieve that number. So getting back to that expression, Val(Edittext$("Edit Box")) is simply retreiving the text from an edit box, and converting it to a number(Val) for use in fast loops. If the edit box text reads "100", then the loop would run 100 times and so on.

    Quote

    so now lets say i wanted to use a loop to make my bullet move, but i want to have a set speed it moves at and don't want to use the edit box that's used in that example, because nothing is explained in what it does at witch point in that instruction then i don't know what to do with it, this is how most if not all examples seem to be, if you can point me in the direction of a example that does tell you what all the things are and do that they used in the instruction then i might be able to learn, also im not under any peer pressure to walk away, im under a time limit of trial period pressure that will end in a few days and force me to walk away, hope you can help me get the grasp of it.

    You'd do the same thing, except manually put in how many loops you want the bullet to move.

    >>Start loop "MoveBullet" 20 times.

    Honestly you're probably starting off better than me. When I first got TGF/MMF 1.5 I didn't read a single tutorial for the most part of 2 years and somehow managed to still have fun without really knowing any of the mechanics behind anything. I mostly learned from taking apart an engine source, playing around with it. see what happens if I did XYZ, and so on.

    (It took months just for me to figure out how to scroll the camera. that was probably the most exciting day I had that year)

    Just to update, although I found a working method method for using Active Objects, I'd still like a proper extension according to my request. The active object method involves using a different animation sequence to load each new spritesheet in. You still have to "fill" up the amount of frames you want to use though.

    I'm willing to pay upward of $200+ depending on the functionality.

    1. Rename-able Flag
    The alterable value can be renamed, so why don't flag? Why should we have to remember it be numbers?

    And just to add to this, infinite flags/alt.values. I really hate using the value-add extension since it doesnt have an add to/subtract function.(You have to compare the external value to itself then (+1/-1) to subsitute adding/subtracting action, which makes the event look 3x longer. Same thing with advance global values extension, except it doesnt have a spread value.)

    These both perform the "Add to", but I think you can tell which one people would rather use..
    Please login to see this picture.
    Value-Add

    Please login to see this picture.
    Active

    I really wish I could just revise the way the action is written. It can be rewritten as "Set "A"("Active") to "A"("Active")+1. We already know we're using the Value-Add extension and an alterable, so there's no reason to have "Ext. Alt.Value", and we already know it references the fixed value, so elimnate alt("Value-Add". Fixed "Active"). It still won't be better than the add-to, but just a simple rename would help tons. I'm not an expert at coding, but I believe it deals with this little segment here, so i'll try fiddling with that.

    If anyone else wants to help;
    Please login to see this link.

    Because I've worked in a single frame since Knytt,

    Same. Every since I started using a single frame I never looked back. I can't even imagine how someone can make a game using 20+ frames relying on behaviors(which has a bunch of quirks as is) and such. Instead of being vague, here is exactly why I don't use behaviors;

    1) You have to import every object you want to reference into the behavior
    2) When you reference an imported object's alt. values, it uses the generic "alterable value A-Z" name instead.
    3) When you exit out the behavior editor, you can't undo/redo a mistake..(Why has nobody addressed that yet?)
    4) You have no control over what behavior routine is executed first since it depends on which object was created first.
    5) If something goes wrong, you have to dig through potentially 1000's of other object behaviors to debug.

    Those are the main quirks that set me off. In my opinion it's only useful for widgets and small snippets of code. I don't see any problem with using a level editor. It's easy, reliable and has so many other benefits. What if you were working on a project with a group of people and they didn't have MMF? Do you expect them to all buy it just to do some level design? Then there's the problem of just handing out your source code. Instead, you can just give them your editor/(if you used Tiled, the .tmx file), and they can easily design the level without those problems. It's also helpful for just keeping your game more modular.

    Even with good qualifer suggestions, I doubt you'll see it added overnight or within a few months. Yes it'll be in MMF3, but I personally don't want to wait an undefined amount of time until it's released

    Sorry, i can't see what I need to do in the extension, I understand that must be controlled within MMF and not in the extension, since it's a proper implementation of a behavior you need.

    The extension is fine as it is. I was just stating the GetObjectGid expression saves me from having to do lot of tedious naming work.


    The GIDS are taken within the tmx file (so they are handled by Tiled and correct), i don't see what you meant sorry :P

    Yeah it has nothing to do with the extension. I'm saying when you add a new tileset in Tiled, the gid of the object is automatically set according to the size of the tileset. This means which order you add the tilesets into Tiled is important, since the gid index will change depending on the order you add them in. I'll go ahead and explain my simple reference event. Let's say I have an object tileset that has 40 tiles. In Tiled, the gid will be 1-40, with 1 being the first tile and 40 being the last tile.

    Then I setup an ini like this

    In MMF2, I have two events such as this;

    If Object is loaded
    --> Set current group of ini to GetObjectGid("Map")
    (Sets the current ini group to the gid, which are the objects.

    If Object is loaded
    +Current group name GetObjectGid("Map") Exists
    --> Create object
    --> Set Alt.String to current group name
    (I'm typing this from a college library so I don't access to MMF2 to give the exact event structure)

    However, when I add a new object tileset (lets called it enemy) into Tiled, the gid for the enemy tileset will continue from the last. So, if the enemy tileset has 10 tiles, the gid will be 41-51 for those tiles. The ini would be;

    Code
    [41]
    name="enemy1"
    
    
    [42]
    name="enemy2"
    ...
    [51]
    name="enemy10"

    And that's basically it. This isn't a bug/problem, but rather just how Tiled works. It would be cool if I could manually change the gid with Tiled, but I can easily live without that.

    It seems I can no longer edit my post, so I just want to add one more tip.

    If you want to reference objects based on their gid, you need to take care to add the object tilesheets in the same order for all .tmx files, else the gids will be inconsistent. For example, object sheet 1 has gid 0-44 since it was added first. Object sheet 2 would then be 45+ and so on. This isn't a problem, but more of just the way Tiled works.

    Excellent job. The Get Object Gid expression was a great addition. Now I don't have to worry about naming each object I add into the editor since I can just reference it based on the gid value it has.(Of course, I'm using an ini to associate the object with whichever gid it has)

    I also found a neat little method of making animated tiles which can be setup in just 4 events. I decided to fully utilize the '"Insert Rectangle" for quicker animated tile creation. Basically, whatever size the area of the rectangle is, it'll create animated tiles in that section. All you have to do is create a rectangle object, name it "Atile"(short for AnimatedTile), and then drag it to whatever size area you want the tiles to be created in. In my example, it's the entire frame.
    Please login to see this picture.

    Next, give the atile these properties.
    Please login to see this picture.
    anispd = animation speed.
    layer = what layer it'll be created on.
    maxframe = how many frames it has
    name = the filename of the image, which will be located in the tiles folder. Make sure you put the extension too.
    tilex= the width of the tile
    tiley= the height of the tile

    That's all you have to do as far as the level editor goes. The rest is handled in MMF2, and explained in my example. It'd be ideal to NOT use 16x16 for large sections of animations since that's a lot of objects.( Or perhaps dynamically create the animated tiles as level progresses, probably more efficent) For large areas of backgrounds, I suggest using 32x32 or larger, and saving the 16x16 for small animated decorations.

    Result:
    Please login to see this picture.

    (Requires Text Blitter extension. Although it used the Function Object, you can just replace that with regular fast loops. You also don't need the create by name, but I'm just too used to using that)