Posts by NecroLuigi

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.

    Hey, there! Yeah Del_Duio, I hear you! We kept expanding this game for several months, and it makes me kinda sad we never fully finished it before moving on to other projects...

    Dev618, there are several sides for procedural level generation. Maybe the most important for MMF is that you won't be using its level editor for the levels themselves, but instead, create a map loader technology in it. So you make a map maker in another frame in order to save the level layouts (what tiles are obstacles, what are not) in arrays (we call these "map pieces"). Then, when you are in the "game" frame (the one which contains the map loading capability), at the start of the frame you load one of the map piece arrays that you previously saved and place all other objects (player, enemies, etc) accordingly.

    Now, what exits in your level lead to which other arrays of your map pieces database?

    That question refer to the actual procedural generation. Basically, you have to define some procedural logic (half random, half logical rules) that tell MMF how to create a random map layout - that is, where the player starts and how all rooms are connected from that initial room up until the very last room in the game. In our case, because the map generator is in itself somewhat complex and we wanted to keep things modular, we made it so that the map is generated on its own dedicated frame and saved into an array. Then when the player starts the game, the game executes its map generation frame, which generates the overall layout of rooms. Then it goes to the next frame, which is already the game frame (where absolutely every weapon, enemy, boss, dialog and anything else that happens in the game is coded) - at the Start of Frame it loads the right map piece (it knows which one to load based on the map layout array). When the player avatar moves out of the screen through one of the map piece exits, we update a value somewhere to let the game know where he is moving in the map layout. Then we restart the frame - and because the player coordinates in the overall map layout are updated, this time the frame will load a different map piece, according to what is established in the procedurally generated map layout array.

    I know it can sound a little daunting or confusing at first, but that's really the core of the idea! You'd then would have to figure out which rules your procedural generator needs to have to accomodate the design of your game, but that will come naturally once you get the hang of it.

    Hope it was helpful! :)

    Ok, made a couple of updates to the guide. Here are the highlights:

    1. Pharanygitis updated his FGL Ads extension to allow for banner ads. THANKS, PHARANY! You can't still control when an ad will close (only setting a countdown for its automatic closure at the moment you call it), but it's already enough for some implementations. Pharanygitis is still working on this extension, it seems, so that might change!

    2. I found that Flash Game Distribution is part of the FGL network and, since they now provide ads as well, it now requires you to necessarily integrate their API (Pharany's extension) in your game if you want it distributed in Flash Game Distribution. Doing so will automatically serve a preroll ad while your game loads, which basically limits you to go with them for preroll (and even having a preroll at all). It still looks like a great service, but you should consider this limitation.

    3. In CPMStar, you can keep your game from showing video ads by removing an option in your CPMStar ad codes dashboard. Knowing this makes me think of them again as quite a decent choice for ad serving, since you can call banners and preroll videos, and you can control when to show and when to hide ads (destroy the CPMStar object when you want to hide it, create it again and call an ad when you want to show it again).

    Phew! Lots of discoveries! :D

    Here's the link again to the complete guide: Please login to see this link.

    Ok, I found what the problem was (updated my last post). I'm testing it now. Brash, I believe the option to hide the ad is based solely on the "Timeout" parameter that has to be filled when you call a banner ad.

    Pharanygitis, great work, man! Is there a way to decide exactly when a banner will disappear? The option to set a countdown is nice, but if I want to implement a banner in my main menu, for example, I'll start the banner at the moment the player gets in that menu, but I can't know in advance how long he'll stay there, so I'd have to set timeout to 999999 (or maybe -1 for infinite) and then need a "Stop Ad" action that is called only when the player clicks on New Game, for example... Any chance to have that? :)

    Brash, is your extension showing any actions other than "Init FGLAds" and "Show Ads"?

    From Pharany's last post, I understand he implemented actions to show banners as well as hiding ads, which seems to be the functionality that you're after too! However, I believe the extension installation package wasn't fully updated, cause I can't see any new actions in the event editor for these new banner actions, only than the two I just mentioned (Init FGLAds and Show Ads). I'm actually trying to confirm if the extension installation package is indeed broken, or if I'm doing something wrong on my end...

    UPDATE: I found the problem! The install package contains a folder called "Extension" instead of "Extensions". When I installed it, I simply copied the whole thing into my MMF folder and it created an "Extension" folder that, of course, wasn't having its contents read by MMF. So party people, beware: when installing this extension, make sure you move the extension mfx file into the Extensions folder.

    I'll test it now and see what happens! :D

    Hey, Brashmonkey! Long time no talk! How are you? :)

    I understand your drama, these sites are all really confusing! However, you just need to create a dev account in FGL and find a place that says "Create Ad Code" (you don't even have to create a game profile to do that). They'll generate a code snippet that can be open in wordpad that will contain the code that you need to paste when connecting with FGL through Pharanys' extension.

    FGL used to work solely with game sponsorships (someone sees your game, bids and buys some sort of license from you), and only recently started supporting in game ads, which is a totally different, non-dependent thing. That's why their whole site focuses on explaining how sponsorship works, and has virtually no info on in-game ad monetization. :)

    Anyway, once Phanarys answers, I'll be able to test an implementation of that myself and post additional info here!

    Yo, Pharanys, thanks! Man, you're the GOD of Flash monetization in MMF! :O

    I couldn't see the new options, though! I tried opening in MMF Dev 2.0 and it looked the same as before. Then I tried installing the new version in Fusion 2.5, just to check it maybe the new features weren't compatible with MMF 2.0, but it seems Fusion don't identify the extension at all, so I can't open the examples either.


    Checking into the 7zip file containing the extension in your download page, I see that the examples folder has a April, 4th date, while the extension and data folders are from March, 26th. Specifically the file Data/Runtime/Flash/Please login to see this link. is showing a date of March, 26th. Is it possible that the download package needs a fix, or am I unable to install the new version to MMF2 and Fusion due to some problem on my side?

    Thanks again for the amazing volunteer support, man! Seriously!

    Hey, Pharanygitis! Congrats for that, and thanks for all the great work you've done in integrating several services with the MMF Flash runtime! :D

    I downloaded your FGL extension and, from what I understand, it only allows fullscreen ads, is that right? Is there a way to show just a small banner?

    Furthermore, is there a way to decide when to hide the ad (as we did with Mochi using a "Hide Ad" action)? I have my whole game in a single MMF frame, so an interlevel ad would effectively need to be called in and out through events... Is that possible?

    Thanks!

    Hello, fellow clickers!

    Like many people here, I've been affected by the Mochi shutdown, and in these last weeks I've been digging all around the web to find suitable replacements for its services. I managed to find the answers I needed, and decided to share with you, in the hope to save some of your time! ;)

    Mochi did several things: ads, leaderboard, analytics, distribution... There are other service providers that offer corresponding services (CPMStar, Newgrounds, Kongregate, FGL Ads, etc etc etc), but unfortunately they are not a viable option for us MMF users unless we have their APIs converted into extensions.

    However, hidden all around this forum and in users' personal websites, there are many solutions that are great alternatives to Mochi! The difficult part for me was finding them and seeing if they were still working (extensions developed by volunteers could have stopped working at some point, download links go broken, etc). But once you know where to go for each of these functionalities, the rest is reasonably easy (as easy as it was with Mochi anyway).

    The good news in a nutshell: there are some viable, easy, working alternatives for everything that Mochi used to do, thanks to the work of some people here in this community!

    I've compiled my findings in a semi-organized blog post - this way I can keep updating the list as I get more familiar with the different services and extensions.

    Here's the list: Please login to see this link.

    I hope this helps!

    By the way, thanks to the unsung heroes who developed extensions for most of this! :)

    See ya

    Hey guys! Only 8 hours left to get your hands on the Super BR Bundle at Please login to see this link.. Last chance to pay what you want to get 49 Bullets, 20+ other exclusive games, and 8 commercial games including Magicka and Dungeonland, and have 100% of the money given to charity! Really, ONE HUNDRED PERCENT! The whole money is being used to help an institution that gives full education to children that would otherwise be on the streets.

    C'mon clickers, where's your Christmas spirit? :D

    Hey, everyone! Just quickly passing by to show a game we just finished in MMF2! :D

    Please login to see this media element.


    About the game

    49 Bullets is a mini action roguelike inspired by The Binding of Isaac, with some very vague inspiration from Stephen King's The Dark Tower books! You have to slash and shoot your way through the ever changing desert, as you gain levels, collect loot and try to reach your ultimate destiny. 49 Bullets features procedural maps, procedural loot, a level up system complete with super-traditional character stats, 4 "biomes", 12+ enemies and maybe one or another thing I forgot to mention!


    How to get it / Why should I care

    Well, here is the coolest thing: this game is part of the Super BR Jam charity bundle, available at Please login to see this link.

    It is a pay-what-you-want bundle which proceedings go 100% to charity, and give you access to several commercial games, plus 22 games created specially for Super BR Jam - including 49 Bullets! :D

    The charity being helped is 'Solar Meninos de Luz', an institution that provides education and health care for children living in really poor areas of Brazil. So when you buy the bundle and / or let others know about it, basically all of the money that you help us raise goes to those children's education and health, so that they can have a better future!


    So, why am I telling all this?

    Well, 3 things:

    1. 49 Bullets was made in MMF and we are quite proud of it! So yeah, gotta show it here, right? :P

    2. To tell you that if you liked what you saw from 49 Bullets, the commercial games that are also part of the bundle and the other 21 games created specially for the jam, you can buy the bundle at Please login to see this link. and get all of those games - you name the price, pay and get access to all the games. Simple as that!

    3. To kindly ask you to help us spread the word! The bundle is available only for a very short time, and unfortunately we are still faaaaar behind our objective in terms of the amount we must raise for Solar Meninos de Luz! I'm not organizing the bundle myself, but I've been assured that there's no way to make the bundle available for any longer (there are logistic and contractual complications), so we need to get the word out really fast. Every tweet, post, like, share etc counts - A LOT!

    Thanks everyone! And let's get the word out for those kids! :D

    Gabriel - @pixel_cows

    Hello, Phi! First of all, AWESOME extension, thanks and congrats! :D

    Would you happen to have somewhere a download link for the previous 2 or 3 releases of this extension? We have been using it in The Journey of Eko and recently had to reinstall MMF. I downloaded all the needed extensions, but I'm still unable to open the mfa for the game - MMF says it's lacking debugobject.mfx. I then reinstalled Debug Object directly from your link (instead of Extension View), and also directly from your site, but no luck... The funny thing is that I know the extension is installed, I am able to add it to a new app, and damn it, I can SEE the files in the Data and Extension folders! :D I just can't open the Eko mfa, which leads me to think that maybe it's looking for an older version of the extension... Any idea if that would be at all possible, and do you have handy a couple older versions? Even if my game uses and outdated version, I'd need the old extension at least to be able to open the mfa and remove the events before I can update to the new version of the extension.

    If that's any help, we originally added the extension around June (I believe), and I see a post from you in early July announcing a new version - that's what led me to this hypothesis in the first place.

    Thanks a lot! :D

    By the way, NecroLuigi, do you think you could make an example for the Neural Network object? I would really appreciate it if you could.

    I will surely do that as soon as I completely understand what is going on! :D

    Basically, the first thing is identifying a task that wouldn't be easily done through traditional algorithms, so that the usefulness of neural nets in comparison to any other approach is made evident. I think I'm going with recognizing handwritten digits! Next step is to identify what are the relevant inputs and how to standardize them (information that needs to be gathered and treated to be fed into the network), then putting together a bunch of training cases (a set of values to the inputs tied to a specific, correct answer), and then training the network - that is, exposing it to these training cases many times and backpropagating the weight adjustments, something the extension is supposed to do in its training function). Finally, setting up an environment for the user to 'play' with the neural net - probably a surface where he can draw a digit and see if the neural net can correctly guess what digit that is.

    I'm not sure how difficult that would be cause I'm not used to the extension and don't know how some of its internal details were set (ex. are the neurons using a sigmoid function to standardize its values?). I'll mess around with it a little bit and see what I can do!

    I just LOVE neural networks!

    I'm considering doing some serious testing with it. Have to think of a game that is simple enough (in terms of states that the inputs would need to capture, and of actions that a player would be able to execute), and also something that happens in steps within a logical data structure (for example, it happens in turns instead of realtime). This way we would be able to train the NN with a batch, using a fast loop to instantly teach by alternating between hundreds of varied cases instead of training 100 times with the same data (which can lead to pseudo-expert behavior that only for the last presented case, making the NN 'unlearn' what it already knew).

    Damn, I'm almost out to start this right freaking now! I just hope it's not too late for this extension to shine! :D

    Hey Nifflas, good luck in your future projects, I'll keep following your work! :)

    I'm with you on all you said. I've been a persistent evangelist of MMF and TGF here in the Brazil gamedev community, as I think for beginners it really gives an unvaluable opportunity to deal with game design stuff before getting too deep into the technical side - and for me as well it was probably what made me stay long enough to actually make games (not only technical tests)!

    I really see a difficulty in migrating to more advanced coding in MMF. Before anything else, many complain you can't do advanced stuff in MMF at all, but what they mean is that MMF doesn't have the same 1-click native support for all possible advanced stuff one could think of (of course) - still, with some creativity and general programming logic, MMF is incredibly powerful! The difficulty to migrate to more advanced implementations really is in the lack of native script support that easily 'talks' with MMF functions - I don't mean doing that through an extension, but at the core. The way to go is creating custom extensions, but that process is bureaucratic (compiling, replacing the extension files in MMF folders, rebooting MMF so that it recognizes the updated extension, not to mention the dev kits are not that friendly). Outside of extensions, the bottleneck is performance. To illustrate the point, when we migrated the conditions that handle positioning of collision detectors to be done through an 'attach object' extension instead of MMF regular actions, we got like 30% more fps in The Journey of Eko! I'm such an enthusiast of MMF, I'd be more than willing to volunteer time to boost its support to advanced usage! All that to say that I really understand your reasoning.

    Nifflas, you will be missed. Thank you so much for your huge contribution to this platform, and best of luck out there! When you have some time, I'd love to hear your insight on how doing things directly through C# compares to MMF in terms of production pipeline, pros and cons, etc.

    Anyway, see ya, and once again best of luck!

    Gabriel

    I have to admit, even without tweening, Spriter has still definitely made regular animating incredibly easy. Taking up this challenge is far beyond my technical knowledge, but would be amazing to implement into games in the future.

    Definitely! I love Spriter's concept and hope we can work seamlessly with it and MMF one day. When Mike from BrashMonkey (the guys who created Spriter) joined this thread, I got in touch with him through PMs and we even exchanged some emails and documents while we at Pixel Cows considered the possibility of creating an extension to support Spriter. As we started evaluating it, we struggled too much with MMF's SDK and officially gave up, as we couldn't commit to finish it in a reasonable timeframe, considering our focus is on our game... Later someone joined us temporarily and we hoped to resume the work - that's when we created the whole database structure that we have now, which can be used both to Spriter and Anime Studio. We started the Anime Studio file conversion because Spriter wasn't available by then, but even that we dropped when we moved to a lower resolution engine.

    Still, it's a shame, I wish we had some more time in our hands! Who knows, maybe we eventually find time to finish it.

    Cheers!

    No worries!

    I don't know of any current project to port Spriter to work with MMF. We planned to do that about an year ago, but now we're so heads down on our project that it's unlikely that we have any time to do that... Anyway, would be awesome if someone undertook the challenge!

    Just a technical clarification, though: the tweening itself is done by the animation software, not MMF. If MMF was to do it, it would need to have an internal logic (either in it or in an extension) that could deduce the tween frames based on key frames. Anime Studio, Flash or Adobe After Effects can all create frames between one and another keyframe. Not sure if Spriter already has this capability, maybe it does now too (it certainly should in order to be competitive in face of these softwares I mentioned!).

    What our extension did was to read positioning information from Anime Studio's save file, and position active objects on the corresponding places. To use Anime Studio's capability of creating the between frames, we planned to create the animations through our regular production pipeline (using keyframes and all that), and at the last moment, when the animation was ready, transforming all frames into keyframes. Anime Studio's save file only records stuff's position at keyframes, and while you're using that software to animate, it can calculate in realtime all the tweening for intermediary frames. Since MMF doesn't have this capability, we would make all the tween frames into keyframes, so that the info would be in Anime Studio's save file.

    About our extension / methodology, unfortunately I can tell you that we won't be able to finish it until we finish The Journey of Eko. However, if we do find a partner in the community that can do the work on the SDK side, we'd be more than glad to collaborate with what we have developed so far, and give instructions on how to finish it to become a fully functional extension! :)

    Spriter can already export .png files. This shouldn't be too hard to implement is it? Spriter's export to .png is great, but tweening is unfortunately not supported by it. Anyway, is there any status update on this tool?

    The problem with PNG is the huge RAM usage it brings. A fully animated character can easily use 15 Mb or more, and that is a small character! If you wanna make a Muramasa-style boss that is higher than the screen, for example, it will need to have either really low framerate, few animations or it can take 5 times more space than that. Until 5 months ago, our project The Journey of Eko struggled with RAM, and in the end we just moved to a lower resolution and simpler animation style, as we were unable to fully implement procedural animation in a reasonable timeframe.

    The magic with Spriter is using the actual animation file in the game, and having the game moving spare PNGs in realtime to create the images that compose the animation. This way a character's RAM usage and space disk corresponds to the sum of the PNGs that compose his body - no extra cost altogether for new animations. You could even make a 10 minutes animation and, as long as you were using the same body, the extra RAM needed would be close to zero.

    By the way, we tried to implement this, and planned to share with the MMF community. Spriter was still very basic by then (no tweening, no magnetic distortion of images, no bones, etc) and we were in a hurry, so we made it based on Anime Studio instead, which has all these features. But the technology is generic, and can easily be ported to Spriter too. The thing was a bunch of smartly integrated databases to store info from entities and animations (PNG scale, rotation, position for each bodypart of animation and each frame of a character). This database was filled by an importer that got the information from the Anime Studio xml save file - so basically, all you had to do was creating an Anime Studio animation, loading it into your MMF project, and informing MMF in which folder the source PNGs for the bodyparts were. From there on, MMF would do the rest - pick the PNGs and position / rotate / scale them on the screen in realtime, according to the animation that had been made in Anime Studio. One of the coolest features was to be able to even change the source PNGs during the game, so you could use the same animations to give life to 1000 moving NPCs made of random body / face combinations, or use it in the main character to change armor in realtime without any extra cost - except placing the new arms and legs PNGs somewhere that MMF could find... It would really be awesome to have!

    Unfortunately, we abandoned it halfway through completion. The concept is ready, the databases are ready, and 95% of Anime Studio's file conversion is ready. The next step was to use MMF's SDK to read from the databases and position the PNGs - pretty simple compared to what is already done. But we are inexperienced with MMF's SDK and, since we found a way around the problem in The Journey of Eko through style / design adjustments, we abandoned it. We hope to resume work on it, though. By the way, if someone in the community is really experienced with the SDK and wanna help us give birth to this thing, send a word! We would be more than glad to share with the MMF community - that's what we designed it for :)

    Hello, guys! Needing some help with an extension for our game, hope someone will know the answer! :)

    Basically, we're developing an extension that has to update an active object's position and angle based on values stored in a database several times per second. Furthermore, since it will be applyed to potentially dozens of objects simultaneously, it definitely needs to be compatible with HWA (or done 'through hardware acceleration', if that makes any sense).

    A good example is the Box 2D extension, and it's action "Attach Object": it 'glues' an active object on a physics object, so that the visual representation of that physics object is always displayed at the right position and angle.

    We are more familiar with the RSDK, do you guys know if it is possible to do it, and how? If not possible to do in RSDK, which one should we use?

    Thank you very much!