Welcome to the Clickteam Blogs
This new area of our site will host a range of blogs including Clickteam News, information about Fusion 3 development, ClickStore Features, User Devlogs and much more besides.

If you would like to write a guest blog article about your game, app, development or something else then please Contact Us for more information.
#MadeWithFusion Aggelos heading to Switch
Posted on: June 21, 2018

Aggelos is heading to Nintendo Switch!

Clickteam is super proud to be part of the launch of Aggelos on Steam. This Wonder Boy in Monster Land inspired game is quite excellent.

I know this because In addition to helping Pqube, Storybird and Look at my Game studios bring steam achievements and some optimizations to the steam release, Clickteam is handling the code conversion to Nintendo Switch! Which means I have already play tested it about 1 gazillion times. In all that time in never lost its charm! Aggelos is a very good game worth your time, and it’s 20% off during it release week. If you grab it and like please leave a positive review!

We will keep you appraised on how the Switch conversion is progressing here!

A little bit about the game….

“Step through time and discover a mesmerizing new action-RPG that looks like it was plucked straight out of the 16-bit era, but plays like a modern-day marvel! Inspired by non-linear Japanese retro adventures such as Wonder Boy In Monster World, Aggelos hurls players into the middle of a colossal struggle for survival as beings from another dimension threaten to invade the peaceful Kingdom of Lumen. Bursting with secrets and side-quests, and boasting slick melee combat that any 2D action game would envy, Aggelos is the perfect combination of retro style and modern-day game design.”

Visit Clickteam @ FacebookVisit Clickteam @ TwitterVisit Clickteam @ YoutubeVisit Clickteam @ TwitchVisit Clickteam's The Reactor @ PatreonVisit Clickteam @
Game controllers in Fusion 3
Posted on: May 15, 2018

In Fusion 2.5 the default Joystick object is pretty limited. If you want to support modern controllers then you have to use one of the extensions available from the Extension Manager, each of which has different levels of exporter support. The reason for this is that modern controllers are very different from the joysticks of the Kilk ‘N Play era – they have many more buttons, some of which are analog and they might have other features like accelerometers (e.g. WiiMotes) or touch pads (e.g. PS4 controller). To make matters more complicated, controllers from different consoles have different layouts. XBox and PS4 controllers for example have two joysticks, whereas a Wiimote+Nunchuck only has one joystick, which can be unplugged. Then of course if you’re using the Wii Pro Controller this has two joysticks. As you can see the play field is very complex when it comes to controllers!

For Fusion 3, we’re using a library called GLFW which, amongst other things, happens to have basic controller support in the form of “buttons” and “axis”. Buttons can be the digital buttons on a controller such as the A/B/X/Y buttons, or, the buttons that you can press by pressing down on a joystick. They can also be the digital trigger buttons. The XBox controller also has analog trigger buttons, which along with the two joysticks, make up 6 “axis”: horizontal and vertical for each joystick and then one for each analog trigger button. GLFW doesn’t directly give us support for accelerometers or touch pads but it makes basic controller functionality a breeze, on top of which we can figure out which buttons and axis are which for each possible type of controller.

So far we have XBox controller support and as we test more controllers, it should be simple to add support for them. Things get interesting with e.g. the Nintendo Switch, where the two Joycons could be either for one player or two players depending on context – but we’ll get to that when we get to that. In general we’ll do our best to make it easy for you as the game developer to support a variety of controllers and controller configurations on all platforms, so that players can play in whatever manner they are most comfortable.

Visit Clickteam @ FacebookVisit Clickteam @ TwitterVisit Clickteam @ YoutubeVisit Clickteam @ TwitchVisit Clickteam's The Reactor @ PatreonVisit Clickteam @
Fusion 3 news in brief!
Posted on: May 11, 2018

Hi I’m Nicholas, otherwise known as LB. You may know me as the author of Internal List Object, JSON Object and a few other extensions for MMF2 and Clickteam Fusion 2.5 that I made while I was in high school and before I vanished to focus on college.

I’m proud to announce that I’m now part of the Fusion 3 development team! When I first joined the project my initial task was to get Fusion 3 to build and run on Windows. Because Anders and James primarily used Mac and Linux to develop Fusion 3 up to this point, they hadn’t really tested it on Windows. It’s actually quite normal for developers to spend time getting things working on their own personal OS of choice before worrying about other systems – we all have our preferences after all. Luckily, I’m quite experienced at getting projects to build on Windows as it’s my primary development OS, so I can now say with certainty that Fusion 3 will run on at least Windows, Mac, and Linux, in addition to other platforms.



Once I had overcome that and was able to start developing, I started going through the issues list and fixing the simpler issues to get myself familiar with the codebase. This mostly involved fixing things that nobody was able to test on Windows because, well, Fusion 3 didn’t previously work at all on Windows until I made it! Now that we have a developer on each major OS these sorts of problems will stop happening. Besides, since we’re writing modern C++, it’s very easy to port the code to almost any platform, including WebAssembly and UWP.

As previous blog posts have mentioned, very little code will need to be written in other languages like Java, Objective-C, or JavaScript. What this means is that we can focus all of our time on one codebase, one runtime, one fastlane to making Fusion 3 great and as performant as possible. By natural extension this will of course benefit your Fusion 3 generated applications and games, as they use the same C++ codebase as Fusion 3 itself.

I look forward to communicating with you more as my work on Fusion 3 progresses, thanks for reading!

Visit Clickteam @ FacebookVisit Clickteam @ TwitterVisit Clickteam @ YoutubeVisit Clickteam @ TwitchVisit Clickteam's The Reactor @ PatreonVisit Clickteam @
Clickteam is Hiring
Posted on: March 20, 2018

Clickteam is excited to announce that we are growing!

As such we need to find a few good programmers. Are you a talented programmer who can think out of the box and has love for all things #MadeWithFusion, Then we might be looking for you. We are seeking programming muscle to help with the current Fusion 2.5 line of tools and exporters as well as additional help with the forthcoming Fusion 3 project. Please shoot a email to and include your résumé and any example work or references you think are relevant. Look below for requirements! We look forward you to your response!


Main Product Programmer – Minimum Requirements

  • Excellent knowledge of…
    • C++
    • Windows and OSX development
    • OpenGL (Optional)
    • Javascript
  • Capable of working in a online office environment
  • Part time 10-20 hour work week
  • Excellent communication skills
  • Loves to document work

Shader Programmer – Minimum Requirements

  • HLSL and GLSL experience
  • Capable of converting HLSL to GLSL
  • Contract work for Bid
  • Temporary position

Visit Clickteam @ FacebookVisit Clickteam @ TwitterVisit Clickteam @ YoutubeVisit Clickteam @ TwitchVisit Clickteam's The Reactor @ PatreonVisit Clickteam @
Console Conversions
Posted on: February 19, 2018

With 2018 we have reached an exciting new milestone in the development of Fusion 3. Built around a core library named “Nucleus” which powers Fusion 3 games and apps, the guys have reached a new stage with the core engine. Thanks to the efforts of the Fusion 3 team’s work on the Fusion 3 engine and the frankly awesome importing tool we are now at a stage where we’re able to start converting Fusion 2.5 titles as a paid-for service, to consoles like Nintendo Switch, Playstation 4 and Xbox One.

The process behind this wizardry starts with a Fusion 2.5 MFA. Our optimization team runs through this with a fine tooth comb, looking for ways to improve the eventing and eliminate anything not needed. This ensures that the MFA going into the porting tool is as clean as possible. Once we have converted the MFA to a Fusion 3 source file it is then handed over to our new Console Development Team who take the Fusion 3 file and run it through the F3 build system. This generates the appropriate code for the target platform which can then be compiled and run on the target console test device. Any issues or opportunities for improvement are then passed on to the Fusion 3 development team who then tweak the relevant area/functionality of “Nucleus”.

This is a very exciting step for Fusion 3. The ability to port to consoles easily has been a bucket list item for us and many of our users for a long time. This step will ensure that when Fusion 3 is released the ability to port will be as solid as it possibly can be, having been manually tested and tuned on real-world projects. When Fusion 3 releases we will work to provide an out-of-the-box exporter solution in addition to the paid conversion service, to fit the needs as of many users as possible.

If you have a #MadeWithFusion commercial project written in Fusion 2.5 that you need to get on to consoles now, please contact us at and we’ll be happy to discuss your needs and work up a solution.

Visit our Forum thread and join the discussion!

Visit Clickteam @ FacebookVisit Clickteam @ TwitterVisit Clickteam @ YoutubeVisit Clickteam @ TwitchVisit Clickteam's The Reactor @ PatreonVisit Clickteam @
Global Game Jam 2018
Posted on: January 25, 2018

Global Game Jam 2018 is launching across the world tomorrow the 26th. Around the world in various locations people with the shared love for game design will get together and spend the next three days attempting to build something awesome. You can find more information about the Jam and various locations here:

Clickteam loves a good game jam and we are excited to participate by providing a time limited full version of Fusion Standard during the Jam. All you need to do is download the below installer for your PC or MAC and follow the instructions provided for installation.  The installer will only work for 7 days starting on the 26th. In case during the jam you come up with something super awesome, your time limit full version will work till April 1st, 2018. 

Of course if you fall in love with Fusion, then for the next 7 days starting on Jan 26th we are running a sale for you on Fusion and it’s DLC! Check out the sales in following locations. Also if you a gambling person, enter into the drawing at the bottom to win a full set of Developer and all the exporters!

Buy a Standalone copy!

Get Fusion from Steam!

Get a Steam Version of Fusion from Fanatical!



Install key Required for below Installers


Download Windows Installer  Download Mac Installer


Instagram contests by Rewards Fuel
Visit Clickteam @ FacebookVisit Clickteam @ TwitterVisit Clickteam @ YoutubeVisit Clickteam @ TwitchVisit Clickteam's The Reactor @ PatreonVisit Clickteam @
State of The Fusion Address - 2017
Posted on: January 1, 2018

2017 has been a whirlwind year for Clickteam, full of changes and new developments. As we move into 2018 we plan on continuing the momentum built in 2017 and improve based on the lessons taught to us during the year.

Clickteam Fusion 2.5 continues to show its longevity with 3 separate release updates in 2017 adding incredible value from Named Flags to embedding INI files in binary data. Our exporters have also enjoyed constant updates providing continued compatibility with the latest changes to platforms like iOS and Android.

Firefly continues to evolve with fixes and new features over the year. The journey to provide easy to use 3d functions in the event editor has been a challenge one we are glad to take on. Early adopters comment about how much fun they are having leveraging eventing to a 3d environment. We have added recently pixel shading/normal mapping as well as vertex manipulation. We have started a redesign of a new world editor to make setting up levels in Firefly easier. Moving in 2018 we plan to continue to build features and functions to bring Firefly up to the highest standards we possibly can. Shadows, increasing usable model types such as .Blend and full .FBX importing support and explore new exporter options are some of the things we are working towards in 2018.

One of the more visible outcomes of building more documentation and support has been the launch of our new book “Computing & Game Design With Clickteam Fusion”.  The book is aimed at teachers and takes even complete beginners through the fundamentals of programming, from logic theory right the way up to basic game theory, equipping them along the way to program and teach in Fusion.  The book is being snapped up by schools across the UK where we’ve seen a record number of new schools buying Fusion to use as a teaching tool.  We hope to promote it further afield in other territories in early 2018 – you can sign up to our service to be notified or read about it now at

Another big project which has been in the works during the year is our online services redevelopment.  Clickteam has invested heavily in new infrastructure, from upgraded servers to a host of changes to our online systems.  In early 2018 we will be switching to our new systems which will feature Single-Sign-On meaning you only require a single user account to access all of our systems.  We will also be moving to a brand new forums/discussion platform, introducing a new and improved Passport system to manage your serials and software downloads and also a brand new platform for getting help/reporting bugs.  Our online shops will also see a complete makeover, moving to a new platform and updated visual design.  ClickStore too will see massive improvements and we aim as the year goes on to achieve greater integration of online services within the Fusion software itself.  As you might imagine this project has taken an enormous amount of work and we’re really excited for you to see the results.  We’ve held back a few surprises until launch time so watch this space!

Fusion 3 continues to develop in to something we at Clickteam are extremely proud of. Clearly Fusion 3 is not being released in 2017 as our programmers had planned. Developing the  product to the state we want for release is taking longer than we hoped. As such we are refraining from announcing a new date moving forward. One lesson we have learned in 2017 is we really need a better and more organized communication plan. And as such in 2018 we are working on constant blog entries that will include updates on Fusion 3. Live streams and social media posts. The next milestone for Fusion 3 in 2018 is to get it to a Beta test state. We will start by inviting private testers initially. Based on the results will determine our path moving forward in expanding the testing pool. Keep a eye on the blog as the best source of information on Fusion 3 news.  Also don’t forget to sign up to our newsletters for announcements and calls for testers.

In closing we also want to announce we are now working towards attempting to build a native switch exporter for Fusion 2.5.

Visit Clickteam @ FacebookVisit Clickteam @ TwitterVisit Clickteam @ YoutubeVisit Clickteam @ TwitchVisit Clickteam's The Reactor @ PatreonVisit Clickteam @
Anahita Released
Posted on: December 26, 2017

Clickteam is proud to bring to iOS, Android and Steam “Anahita” from #MadeWithFusion developer Mehrdad Rezaei! This light hearted hand drawn adventure game comes from the highly creative Iranian game development community. Mehrdad has worked hard to craft a excellent adventure game and would love to hear any feedback you may have!

Anahita loves her doll. Its been her best friend as long as she can remember. One morning Anahita awoke to find that someone stranger had stolen her precious doll! She has to find this thief and retrieve her cute and beloved doll. Help Anahita as she traverses multiple traps and puzzles in this fully hand drawn and animated adventure game. Beautiful cut scenes narrate the story as it unfolds.

– 4 worlds to explore
– Hand crafted smooth animations
– Cartoon cutscenes
– Adventure style gameplay

Visit Clickteam @ FacebookVisit Clickteam @ TwitterVisit Clickteam @ YoutubeVisit Clickteam @ TwitchVisit Clickteam's The Reactor @ PatreonVisit Clickteam @
Firefly Update Released
Posted on: December 22, 2017

Today we are proud to launch another update to Firefly, Clickteam’s 3d DLC for Clickteam Fusion! Some interesting new features have been added that you can read about below. We are excited to see what you do with these additions and look forward to providing more functionality in Firefly in 2018. Also if you haven’t jumped on the Firefly train yet, it is currently 66% off, see below for details!

Per Pixel Lighting / Normal Mapping

This update brings a much needed Per Pixel Lighting update, which means you can add a second texture to your materials with instructions on how to display light bouncing off it which gives the impression of a model with much greater detail than it really has.

Here is an example of the difference between the old vertex lighting and the new per pixel lighting modes

As you can see the difference visually between the 4 million tri model and the 500 tri model is very hard to tell – meaning your models can be a lot less CPU intensive allows you to squeeze even more FPS out of your scenes. For more info goto


The World Editor

In the past a lot of you have stated that one of the main issues you face with firefly is the lack of a decent editor to place your models where you want them, although we shipped firefly with a world editor on day one – it lacked any real user friendliness and even after you created a world there was no way to import it into your games, we took this information and decent you the users deserve better and as such have created a new World Editor from the ground up, with the hopes of being both user friendly and being useful in your games.


Vertex Manipulator Mode

Vertex Manipulator Mode is where you can actually grab the verts of a model and move them around. Soon in a future build of the world editor you will be able to do this and save the model back to disk in either OBJ or .DAE formats. However if your brave enough you can try to do it all manually there is a demo of how to move verts in the examples/firefly/ directory.



Other items in the update include

  • Billboards now have the ability for transposing
  • Vert Manipulation example added to Demos

Holiday sale!

Along with most of the Clickteam Fusion line, Firefly is on sale. Discounted at the following locations 66% off. That’s only 27.19 USD. If you haven’t had a chance to try Firefly, Now is probably a great time to make the leap! (For Steam)

Visit Clickteam @ FacebookVisit Clickteam @ TwitterVisit Clickteam @ YoutubeVisit Clickteam @ TwitchVisit Clickteam's The Reactor @ PatreonVisit Clickteam @
Steam Winter Sale & More
Posted on: December 21, 2017


The Steam winter sale is now live! Get up to 66% off of various Clickteam products. Have you been waiting for the right moment to grab a exporter? Do you want to give the gift of game development to a friend. Now is the time! Visit to see all the items currently on discount. 



Check out savings on some awesome Clickstore content for the holidays!

All The items listed below

Visit Clickteam @ FacebookVisit Clickteam @ TwitterVisit Clickteam @ YoutubeVisit Clickteam @ TwitchVisit Clickteam's The Reactor @ PatreonVisit Clickteam @
A New Clickjam Is Underway
Posted on: December 19, 2017

New Clickjam

Today we launched a new Clickjam. Fusion Wars – The Programming Menace on Not it’s not a parody of anything, we swear.  This Jam starts today Dec 19th, 2017 and submissions will be due by Jan 4th, 2018. The grand prize is 250.00 in Clickstore credit, Developer and choice of one exporter and the option to you have your title published by Clickteam to Steam, iOS and Android (Where applicable). Check the details of the event below and Join the Fusion side. 

Link to Jam:

About the Clickjam

A long time ago, sorry, I meant this December at your nearest PC…. 

     As traditional programming threatens to quash creativity in the Galaxy, Fusion must come to the aid of developers and give the power of programming back to everyone. Join us in a game jam far far away (Really just at your desk) and help save the galaxy by building a awesome game in 2 weeks using Clickteam Fusion and win some awesome prizes along the way.  Don’t fall victim to the Script Side!


Grand Prize

  • -Option to publish title to Steam, iOS and Android (Where applicable)
  • -250.00 Clickstore Credit
  • -Developer and 1 optional Exporter


  • -Theme: Science Fiction Fantasy
  • -Gamejam Period: Dec 20th, 2017 thru Jan 4th, 2018
  • -Don’t have a team? Form, find and join teams on our CrowdForge page: 


  • -Tag your game with #IWantToCreate
  • -Must include #IWantToCreate credit graphic at bootup
  • -Game developed with Multimedia Fusion 2 or Clickteam Fusion 2.5
  • -All entries are prohibited from the use of established and pre-existing IP. Entries including such will be voided from consideration


Submitters & Contributors assigned by CT can vote for their favorite submissions, the following criteria will will be used.

  • Gameplay:
    • -Is it a unique and engaging fun experience.
    • -Does it feel “right”?
    • -Give a score here to reflect how well the game has used the theme as a starting point for an original idea executed well.

  • Originality:
    • -Are you blown away by the immersion and story telling experience?
    • -How well developed are the menus/option screens in the game?
    • -Does the entry use clever/novel techniques in the interface/menus?
    • -Do the different aspects of the entry mesh well together (eg. menus, game screens etc.)?
    • -Has the entry communicated the aim of the game well to new players?

  • Presentation:
    • -Does the look and sound of it give you the feels?
    • -Does the game feel fun?
    • -Does it have a decent replay value?
    • -Was it easy to pick up?

  • Overall:
    • -A final score to collect your final thoughts and reflect them in a 1 to 5 star rating.
    • -Is this a game you would want to buy or download or play?
    • -Did they make it so it can be ported to other platforms?
    • -Is it something you would recommend to friends?
    • -Does the game make you want to play for a long time?


Fusion 2.5 Star Deal

For only 24 hours you can grab the amazing, the stupendious Fusion 2.5 standard for a buck at Fanatical. Get one for your self, get one as a present for friends and family. All Exporters up to 66% off on sale at Fanatical as well. Check it out here:


Visit Clickteam @ FacebookVisit Clickteam @ TwitterVisit Clickteam @ YoutubeVisit Clickteam @ TwitchVisit Clickteam's The Reactor @ PatreonVisit Clickteam @
Everything Fusion Giveaway
Posted on: December 11, 2017

Help us build our social media presence while entering to win some cool prizes! 5 people will be chosen at random to receive a copy of Fusion 2.5 Developer and all the Exporter trimmings for either Standalone or Steam! Simply like, follow or visit the following items below to add more chances to your entry! Enter by the 14th of December!

Instagram contests by Rewards Fuel
Visit Clickteam @ FacebookVisit Clickteam @ TwitterVisit Clickteam @ YoutubeVisit Clickteam @ TwitchVisit Clickteam's The Reactor @ PatreonVisit Clickteam @
Clickstore Update - Dec 11th 2017
Posted on: December 11, 2017

Monday is here and with it a fresh Clickstore update. This week longtime user “Phi” comes out of left field with what promises to be a expansive extension to help you access the Google Cloud platform. In addition to the new object we have a two excellent eventing examples. One allows users to begin building their own Mode 7 racing game, like the ones found on the old SNES. And another examples helps you add robust and customizable screen shake effects to your project. 

We are considering running a holiday sale on Clickstore make sure to let us know here!

Clickstore Sale Thread:

in the mean time check out the cool new Clickstore listings!

Google Cloud Storage

This extension allows you to access Google Cloud Storage, cloud hosting similar to Google Drive, but for storing data as objects instead of files. Google Cloud Storage can be configured to work like a static-page website. This is outside the scope of this extension and you should refer to Google’s documentation.






Mode7 Kart

This is a kart racing engine using mode 7. It includes positioning the camera and positioning of sprites, movement with Fast Loops (for better accuracy), inertia of the kart in the curves and much more.







Dynaquake Screen Shake Example

DynaQuake is a small widget which allows you to dynamically shake the screen over time and helps you to code your own shaking behaviours.







Visit Clickteam @ FacebookVisit Clickteam @ TwitterVisit Clickteam @ YoutubeVisit Clickteam @ TwitchVisit Clickteam's The Reactor @ PatreonVisit Clickteam @
Clickstore Update - Dec 4th 2017
Posted on: December 4, 2017

Hello, Kisguri here and I wanted to talk to you about Clickstore briefly!

Every Monday we go through all the recent submissions on Clickstore and prep them for release. The work includes reviewing the description and screenshots to make sure they all match sizes. Checking to see if a product download has been attached and if the download is appropriate as well as what is described in the listing. Then we get to publish it. So far I have done that now 675 times now! Some of the entries submitted are absolutely amazing, from really well done engine bases written in the event editor to new objects or particle effect examples Fusion users continue to amaze us with their skills with Fusion!

Since Clickstore started with its first order of Panzer Flakes art assets July, 2014 it has grown to over 8,000 customers and over 21k orders. As we move into preparing for Fusion 3 release we plan on bring many more awesome functions and features to Clickstore and more inter-connectivity between Clickstore and Fusion. So in addition every Monday getting your awesome Clickstore submissions posted I plan on dropping a blog post here to let you know what new cool items are added and to share some news about what we plan on doing to improve Clickstore.  If you have a awesome suggestion or comment please let us know with one of the social media channel links below!

Here are some interesting Clickstore items to check out this week!

Inventory Quest – Inventory Example

Check out the latest example from “The Reactor”. Build your own Diablo like inventory system with this easy to understand example. Generate random items and collect them in the simple isometric world. Then press I to manage your inventory and drop to the board items you don’t want.







With this start kit development you can start any app you want, just make some modifications to meet your need.








Energize your applications/games with notifications, on the menu screen or in the middle of the game, inform your players, future updates, new content to come, promotions around your application/game. (non-native notification outside the game application).







Visit Clickteam @ FacebookVisit Clickteam @ TwitterVisit Clickteam @ YoutubeVisit Clickteam @ TwitchVisit Clickteam's The Reactor @ PatreonVisit Clickteam @
The Reactor Stream - Dec 1st, 2017
Posted on: December 1, 2017

Come check out tonight’s Reactor Stream at 4 pm PST (Friday December 1st, 2017). We will continue working on a inventory system adding a bunch of Reactor Subscriber feed suggestions.  Here are some of the suggestions so far…

  • – Smooth moving of picked up item, but snaps to grid when dropped.
  • – Make picked up object semi transparent when unable to drop into specific slot due to collisions.
  • – Tabs for multiple inventory pages and be able to drag an item between the pages
  • – pop-up on the items with stats when you hover over them.
  • – Open/close the inventory with the “i” key.

Then we will do a bit of playtesting of #MadeWithFusion game Nightkeep by Milan Svaty. Nightkeep recently launched a Indiegogo campaign with the aim of seeking support and backing to help turn his brainchild into an excellent experience. You can check out the campaign here





Nightkeep Indiegogo page:

Visit Clickteam @ FacebookVisit Clickteam @ TwitterVisit Clickteam @ YoutubeVisit Clickteam @ TwitchVisit Clickteam's The Reactor @ PatreonVisit Clickteam @
#MadeWithFusion - Nightkeep
Posted on: November 30, 2017

#MadeWithFusion game Nightkeep has launched a Indiegogo campaign! Nightkeep is an action RPG platformer inspired by such classics as Castlevania Bloodlines, Demon’s crest and a variety of JRPGs. Milan Svaty, the game’s developer, is seeking support and backing to help turn his brainchild into an excellent experience. A Commitment of just 10 bucks (USD) get’s you a digital copy of the game upon release. 

Read more about the game in his development thread on our own community forums and consider throwing him some support!



Visit Clickteam @ FacebookVisit Clickteam @ TwitterVisit Clickteam @ YoutubeVisit Clickteam @ TwitchVisit Clickteam's The Reactor @ PatreonVisit Clickteam @
Writing a Teaching Book for Fusion
Posted on: November 30, 2017

Hi, I’m Daniel. My role within Clickteam is to represent the company to UK schools and colleges and encourage them to use Fusion in their classes. This blog post is about how I ended up writing a Fusion book for teaching game design.

As UK education sales manager, it quickly became apparent to me that a key element to making Fusion 2.5 stand out from other games design software tools would be to present an appealing ‘complete package’ to teachers. Anyone with children or teacher friends knows how busy teachers are; with such fast-evolving technology and new requirements in Computing and ICT lessons at school, teachers can often find themselves having to learn how to use software they are simultaneously teaching to students!

So, I started developing some teaching resources which would guide beginners (teachers and students) through the basics of using Fusion for game design. Talking to teachers who already use Fusion, it was clear that lesson plans and mini-tutorials would come in most useful. Often, students would be getting to grips with Fusion and would need to know how to do something specific, like how to assign player controls, or how to launch an object. My list of mini-tutorials began to grow and it seemed more and more logical to turn these into a complete book.

The benefit of collating these things into a book was that it could act as a textbook for the theory side of a game design course too – most course outlines encourage students to consider the whole process of designing a video game. So, the book contains chapters which look at the process of planning your game, including elements like the genre of game, the balance of skill and challenge, rewards and perils and the use of sound and music, to name just a few. It also goes right back to basics and explains the basics of how computers work, covering concepts like algorithms and logic gates. This gives a complete picture to beginners who want to learn how a computer works so they can better understand how a video game is built and how it functions.

We have also included some complete tutorials so that students can really delve into Fusion and build a few basic complete games. When you are learning something new, it can feel like such a positive accomplishment to create something from beginning to end and have a playable game as a result!

The book has been a great success, with schools ordering it with a Fusion education licence as a complete package for teaching their students. We are about to build on this success by launching a more compact student version. This is going to be aimed at students learning game design in school, but it will also act as a perfect beginners’ guide for anyone new to Fusion!

Also, we are already thinking about ideas for more books in the future. Fusion is such a powerful game design tool, and so flexible, that there is almost no limit to the scope for tutorials, hints, tips and complete projects which could be created to help make it easier for anyone to design really cool games!

If you would like to order the book, you can currently order it if you are based in the UK or in the USA. The book will be available to order in other regions very soon.



Visit Clickteam @ FacebookVisit Clickteam @ TwitterVisit Clickteam @ YoutubeVisit Clickteam @ TwitchVisit Clickteam's The Reactor @ PatreonVisit Clickteam @
ClickFusionOS - Application Development
Posted on: November 30, 2017

The ClickFusion Academy kicks off with a brand new weekly series this week. This series is called ClickFusionOS and the aim is for users to watch and learn how to develop a Windows Shell using Clickteam Fusion 2.5, but it’s got much more scope than just that.

The series will initially concentrate on designing and developing a fully functional and operating Windows Shell. If you’re not sure what a Windows Shell is, imagine having the ability to design your OWN operating system on top of Windows… The first episode posted this week is an hour long and it’s an introduction to the series and gets off to a fine start learning how to turn a Clickteam Fusion application into a kiosk application.

This is followed up with the ability to create a ‘User Account’, alongside checking whether it is the first time the OS has been run, if it has, you will learn how to detect this and change your OS` content into a ‘Welcome Wizard’ for the first run.

The next episode is due to be posted next week and users will take off learning from the last episode, so the next episode will contain routines on how to read the existing user list and use fastloops to create a user login selection screen. Then it’s onto creating a fully functional desktop (with moveable icons), create Web Browsers, Control Panel applets and so much more.

If you aren’t a Pro member of the Academy yet, you should check it out ( Sporting a whole new look and feel, if you’re into Fusion 2.5, you will feel right at home.

Visit Clickteam @ FacebookVisit Clickteam @ TwitterVisit Clickteam @ YoutubeVisit Clickteam @ TwitchVisit Clickteam's The Reactor @ PatreonVisit Clickteam @
The Reactor - December 2017
Posted on: November 30, 2017

Join the Reactor!

The Reactor is Clickteam’s new membership program that gives users free Clickstore Content, live streams, exclusive open source examples, priority one on one help (Developer tier). Access to the Fusion Academy, early access to Clickteam products being developed and much more!

Control the content The Reactor creates. The content will be mainly driven by the requests of the subscribed community of Patreons. So we hope you sign up and let your voice be heard on what you need!

More Info on December’s Free Items

Fusion Character Animator:

Android Controller Object:

Bluetooth Object:


Visit Clickteam @ FacebookVisit Clickteam @ TwitterVisit Clickteam @ YoutubeVisit Clickteam @ TwitchVisit Clickteam's The Reactor @ PatreonVisit Clickteam @
Fusion Wars - The Programming Menace
Posted on: November 30, 2017

Clickteam has announced the next Clickjam for December 19th, 2017 thru January 4th, 2018.

“Fusion Wars – The Programming Menace” will be held online at here Prizes will be announced soon. Keep a eye on the page for more information. The events theme will be released on the first day of the jam (Dec 19th). Hope to see you there!

We’d love to hear your comments on our blog posts and on our development. Throw us a mention on Twitter or Facebook and tell us what you think!

Visit Clickteam @ FacebookVisit Clickteam @ TwitterVisit Clickteam @ YoutubeVisit Clickteam @ TwitchVisit Clickteam's The Reactor @ PatreonVisit Clickteam @
Sprite Sheets
Posted on: April 10, 2017

Sprite sheets

A lot of our users enjoy working with sprite sheets when they make graphics for their games as it keeps all of the similar images in the same file.

“Sprite sheets” is a technique to store several images into one image while still being able to draw them as if they were individual images.

It is convenient for graphics artists and it makes it easier for one to find the file one wants to edit. A typical approach would for example be to have one file per object in the game that includes all the animations.

* Hero.png
* Enemy1.png
* Enemy2.png

Sprite sheets also have a performance benefits at runtime in some situations.

The graphics cards in your computer/phone/console is a very specialized piece of hardware and is very fast at drawing lots of geometry really fast – but only as long as things don’t change too much between each thing that the graphics card is asked to draw. Changing the texture between every object that we draw can become a performance problem quite quickly.

By bundling together lots of sprites into one texture then even though we want to draw a different sub-image from the same texture we avoid the time-consuming texture switch. This will be especially noticeable if you want to draw hundreds of the same type of sprite (for example in particle-systems) at the same time.

Graphics API’s such as OpenGL or DirectX have over the years invented new ways to make using many different textures “cheaper” time-wise. One example is ‘texture-arrays’ that allows you to make an array of textures and then simply ask the graphics API to draw using the texture at some index.

Right now we target the lowest common denominator of OpenGL ES 2 such that the same code will work on phones and in WebGL. This means that for now we stick to the good old sprite sheets. We might have optional support of newer OpenGL features in the future when available.

There are cases though where sprite sheets give no real benefit and that is unfortunately when you have a very diverse set of different objects you want to draw and you use the typical sprite sheet approach mentioned first in this blog post.

From the graphics API’s perspective it will typically only have to draw a very few number of sprites from each sprite-sheet for every texture switch it does. This is because the “logical” organization of your sprites doesn’t correspond very well to the order of how your sprites are drawn.

If your game for example draws these sprites in order:

* Hero
* Sword
* Enemy
* Grass tile
* Earth tile

Then it would switch to a new texture almost every draw call:

* hero.png
* weapons.png
* enemy.png
* ground.png
* ground.png

This would for a lot of sprites be slow. For small games it is hardly noticeable but it still matters. You could of course try to put all of your sprites into the same sprite sheet to minimize the texture-switches but that would remove all the benefits of the having the sprites in sprite sheets in the first place. For Fusion 3 we have a simple solution.

Sprite sheets in Fusion 3

Fusion 3 has native support for sprite sheets in the sense that it only cares about drawing a subset of a texture. Where the texture comes from is not important from the runtime’s perspective.

Fusion 3’s approach to the sprite sheet problem is can be either one of these or both. 1.Generate optimized sprite sheets at build-time. 2.Continuously update sprite sheets dynamically at runtime

Our runtime can during testing collect texture-switching statistics from “representative playthroughs” and figure out which images gets drawn most often in succession. Using this data we can generate optimal sprite sheets (for those representative playthroughs). In any case our build-time sprite sheets will be better than hand-made sprite sheets because of the statistics we can collect.

The static sprite-sheets will of course not be optimal in all cases. This is where a dynamic approach to sprite sheets really can shine. Those sheets can be continuously be updated over time to adapt to any situation. We already have most of this dynamic system in place.

We also have a working system that uses the exact same algorithms to cache the image of certain complex GUI objects that takes a relatively long while to draw but are rarely updated. We then store the rendered images of those objects into dynamic sprite-sheets and draw the cached images back to the screen. This has already proven to be very robust and works completely without any other user intervention.

Sprite sheet editing in Fusion 3

As you saw in our last blog post we are still working on the image editor. For now the inbuilt image editor only opens up the part of the image that is used for the image. When the image is saved we update the section in the sprite sheet.

If you want to edit the image where you can see all the other sprites at the same time you can of course simply chose a different image editor. That will open the chosen editor with the raw sprite-sheet image. There is of course the problem that arises if you want to resize an image that came from a sprite sheet. Making the image smaller is no problem. Making the image larger is a problem as there might not be space for it. For when there isn’t space we will have to save the image into a separate image.

We’d love to hear your comments on our blog posts and on our development.Throw us a mention on Twitter or Facebook and tell us what you think!

Visit Clickteam @ FacebookVisit Clickteam @ TwitterVisit Clickteam @ YoutubeVisit Clickteam @ TwitchVisit Clickteam's The Reactor @ PatreonVisit Clickteam @
Image Editor
Posted on: April 5, 2017
Hi everybody. As promised here we will take a look at Fusion 3’s image editor.

But first a look back at what we had in Fusion 2.5 and previous products.

The image editor over the years

The image editor hasn’t changed much over the years mainly because it couldn’t get much simpler. It was a simple pixel-precise image editor that did what you expected it to do, it got the job done and you were able to import your graphics made in other tools. I’ve personally even heard of a few pixel artists not interested in game development that used the Fusion 2.5 image editor as their main graphics editor because it was down to the point, pixel precise, and did what it did well – plus you could preview your animations directly from the animation editor interface.

A look at the task at hand

Secondly, instead of writing about what the the image editor will be like, I’m going to take an alternative approach this time.

Graphic artists come from vastly different backgrounds drawing many (often multiple) different styles. Graphic styles vary from pixel art, vector inspired graphics, painted backgrounds, hand-drawn, 3D pre-rendered and so on. A good graphics editor for any of the mentioned art styles is incredibly difficult to make right – and there are as many different art styles as there are people out there.

Editing graphics is paramount when you want to make a game. As a game development tool this puts us in a difficult situation when designing an image editor as we cannot possibly fill all roles of being the perfect image editor for everybody. All graphic artists already have their own favorite drawing programs they are used to. Making an image editor that is customizable enough to fill so many needs is near impossible.

As a consequence of this we have decided to do something different in Fusion 3 than what we did in Fusion 2.5. We will still have an image editor but it will be like a “lowest common denominator” of image editors – something along the lines of which we’d had for years already: A good basic MS Paint like image editor but with extra features for the most common use cases and for drawing simple graphics.

But what about all the advanced features?

Third party graphics editors

For the cases where our own image editor is not going to cut it for your graphics editing needs, we will add third party image editor support.

This means that you in Fusion 3 will be able to define a set of your own favorite tools (such as Paint.NET, Photoshop, Paint Shop Pro or whatever you can think of) and assign those tools to specific images. This means that once you intend to edit an image within Fusion 3 we will check which tool you prefer for that image and load up the image in that. This saves you from having to import the graphics from your favorite program whenever you need to change them.

Our own image editor

Here is a work in progress image of the new editor…

Visit Clickteam @ FacebookVisit Clickteam @ TwitterVisit Clickteam @ YoutubeVisit Clickteam @ TwitchVisit Clickteam's The Reactor @ PatreonVisit Clickteam @
Big things to come!
Posted on: March 15, 2017
Hi everybody. We apologize for the lack of blog post last week. We are SUPER busy hammerin’ our codebase into shape. We will get back to working on Fusion 3 in a little while, but first a short update for this week:

Currently we are working on optimizing certain parts of the codebase, make serialization between JSON and our internal data structures as fast and robust as possible (there’s a LOT of data to parse) and making testing different export modes as easy as possible.

For example we are experimenting with a build-mode selector right next to the build button.

This is a screenshot of our early prototype of a slightly different build-button. The build-and-run button is the button you most likely will be pressing the most to test out your project. Don’t worry, we haven’t forgotten about the “build-and-run frame” button!

With a game targeted for multiple platforms you will probably like the ability to switch between the different targets very easily and maybe even run them simultaneously to compare how they run.

For next week I’m hoping I can show off the Image editor for Fusion 3!

Visit Clickteam @ FacebookVisit Clickteam @ TwitterVisit Clickteam @ YoutubeVisit Clickteam @ TwitchVisit Clickteam's The Reactor @ PatreonVisit Clickteam @
Building Extensions
Posted on: February 27, 2017
Clickteam Fusion has for a long time been all about extensibility. If you look at the available plugins and extensions for Clickteam Fusion 2.5 you get a huge list of readily available objects. All of those have been up until now been written in C++ code (for the Windows runtime) and in the respective languages for the other platforms.

We have in these blog posts already covered a bit about how you in Fusion 3 can create your own extensions/objects using only events directly from Fusion 3 without any C++ code at all.

Will you still be able to write C++ extensions for Fusion 3? The answer is yes.

The Extension SDK

Fusion 3 and it’s “runtimes” are all based on our own C++ written “nucleus” game-library. If you can interface with this library you can write your own extensions quite easily. The extension SDK will basically be a bunch of headers and a library file.

Here is a quick overview over how extension developers can expect the extension development workflow to look like.

All objects in the nucleus library are deriving from a simple “Object” class which is the basis of any kind of Object. Any object that will be drawn on the screen as a member of one of your frames is a subclass of the “FrameObject” class which is also an “Object”. FrameObjects will typically be the object your extension will derive from. Math or functionality-only objects can simply derive from “Object” as they don’t need to be drawn on the screen.

After that you can begin implementing various methods for your extension that you can call directly from Fusion 3 as an action/condition or expression.

Interfacing with Fusion 3

Your source code for your extension might be the cleanest and most beautiful code ever created but Fusion 3 can’t magically use it without some sort of extra information.

You create your own extension definition by defining all your actions/conditions/expressions and properties in a JSON file.

The general layout of such a JSON file would look like this:

In the various JSON arrays you can specify which methods are actions, which are conditions and which are expressions. You can even name your parameters with translations to various languages.

This is an example of how the “Position” property from FrameObject looks like in JSON:

The definition contains the type of the property, the name, description (as seen in the Property pane of the editor), if the particular property is shared between multiple instances of the same type or not, the default value and then the setter and getters. Properties are often found in other programming languages as being like variables on steroids. Not only do they work as a variable but you can also assign logic to them – in this case define a c++ setter and getter method. If only “getting” should be allowed then you can set the “setter” to “disallow” and vice versa.

With these definitions Fusion 3 has an idea how it can interface with your extension. It can pass all sorts of nucleus types as parameters and all the usual C++ types such as bool, int, short, long, size_t, string and so on.

Many popular third party game libraries are written in C++ and are very portable. Writing a thin wrapper class to allow it to talk with Fusion 3 will now be a very simple task.

Distributing your extension

For Fusion 2.5 and previous titles you distributed your extension as a compiled binary (basically a renamed .dll file). While it will be possible to do this for Fusion 3 as well we are hoping we can encourage extension developers to chose the Open Source approach.

Writing a closed source extension has several drawbacks:

  • – Is only available to the platforms the extension developer has access to
  • – If “nucleus” changes too much and the binaries aren’t compatible any longer the extension has to be recompiled or possibly altered a little bit.
  • – The extension developer has to create one binary for each and every platform they wish to support.
  • – Any new supported platforms in Fusion 3 will not have the extension immediately available (until the extension gets compiled for it).

With an open source approach the source code can be bundled with the extension and be compiled directly into the game. If you write good cross-platform C++ code then it should in theory “magically” work on all supported platforms that Fusion 3 will export to.

Third party libraries can still be included, both closed and open source.

We’d love to hear your comments on our blog posts and on our development.Throw us a mention on Twitter or Facebook and tell us what you think!

Visit Clickteam @ FacebookVisit Clickteam @ TwitterVisit Clickteam @ YoutubeVisit Clickteam @ TwitchVisit Clickteam's The Reactor @ PatreonVisit Clickteam @
Fusion 3's Backbone
Posted on: February 14, 2017
As we’ve mentioned in our previous blog posts our engine is a written in modern C++. Despite it’s age it is still one of the most popular languages to write software in today as it has excellent platform support and loads of tools that can help debug and improve the software your are writing. The C++ language has over the recent years evolved quite a bit and has added a lot of nice new features. Useful language features can help us help you in turn.

Fusion 2.5’s windows runtime was written in C++ but we have “native” ports of all our runtimes to various languages including Java, Objective-C, Actionscript, C# and so on. This unfortunately gave us the multiple-maintenance problem of having to fix the same bug in all the different runtimes. When various platforms started out we had to port the runtime to the supported language to even run on the platform. Android for example initially required programming the apps/games in Java.

Managed programming languages has some drawbacks including cost of garbage collection, limited amount of RAM and other issues. Garbage collection and managed memory often feels like they godsend to programmers as it creates more reliable programs and needs less time to get memory management right (memory leaks and crashes relating to already released memory).

All major platforms have moved to allow for the use of native programs – for example written in C or C++. C++ still seems to be the industry de facto standard and there is excellent support all over. Many game related libraries typically come with C++ bindings so you can hook it into almost any game no matter what they are written in. This is among many other reasons part of our decision to program Fusion 3 in C++.

Fusion 3 on the web

HTML5 is latest new holy grail of the web. It allows you to make interactive websites like never before – that includes entertainment like games and other interactive media.

Native apps and games on the web doesn’t seem like two things that go hand in hand. This however changed a few years ago with the creation of “Emscripten”. Emscripten is a source-to-source compiler that takes something called LLVM bitcode and spits out javascript. Basically it allows us to compile Fusion 3 made games into javascript based games/apps with relatively little effort and with very high performance.

Won’t C++ compiled to Javascript be slow?

Not really. Emscripten compiles to a subset of Javascript called “asm.js”. It is basically fully valid javascript but since only a specific subset of it is ever used it allows the browser to do some very aggressive optimizations on the code and even on-the-fly compile the code to native code for the platform you are running it on. This means that even though your game/app will go through a Javascript step it will “just be a phase” so to speak.

We’d love to hear your comments on our blog posts and on our development.Throw us a mention on Twitter or Facebook and tell us what you think!

Visit Clickteam @ FacebookVisit Clickteam @ TwitterVisit Clickteam @ YoutubeVisit Clickteam @ TwitchVisit Clickteam's The Reactor @ PatreonVisit Clickteam @
Evolution of the Event List Editor
Posted on: February 7, 2017
Over the weeks people have been asking more and more often about how the event list editor would look in Fusion 3.

Short answer: There will be no (separate) event list editor. It will be merged with the event editor itself into one single editor that can do everything in a simple and easy way.

As you most likely know, Fusion 2.5 and previous have always had two different types of event editors: The event editor and the event list editor. The event editor was the “main” editor where you see all the rules of your game at a glance in a spreadsheet kind of way. This view is very compact and can pack a lot of events into a little amount of screen space.

The event list editor is almost identical in the sense that it shows almost the same information to you as a user with the exception that it has focus on showing the order of things in a list like fashion. The event editor never shows you the absolute order of actions for objects (only within the context of the one object you are inspecting by hovering your mouse over the checkmark). To get the full order of all actions in the event you had to use the event list editor.

The event list editor in Fusion 2.5 and previous has two modes – one where you edit all the events – and one where you only edit the action order of a single event. Having two editors made it feel slightly awkward when you had to leave the editor just to change a specific detail. The editors were themselves so similar in nature that they kind of begged to be merged together. Thus was the idea for merging them was born.

At the time of writing a single click on the event number toggles it’s display mode into the “event list editor” kind of way. While a simple feature, it already feels like a major improvement to the overall workflow when you write your events. All the information is there at your fingertips with as few clicks as possible.

Doing this for one event at a time is simple enough. What if you actually preferred to only code in the old event list editor? No worries, we got you covered. With a click of a button you can toggle the entire editor into “event-list-mode” which forces all events to show their actions.

When you leave the event list mode it will restore the display modes of your individual events.

You might notice that the object icons in the horizontal row at the top disappears. This is because they have no function while in event-list mode. We are testing out what the easiest way is to add new actions to an event in alternative mode.

Merging the two editors have several benefits

-You don’t feel like you are leaving the editor

-The scroll position will be kept as you toggle so you don’t have to search for the event you were just looking at after you change to another editor.

-It is a lot more space efficient on the screen when you only want to edit a single event.

-Is much more intuitive. It is simply just an alternative way of displaying information with an easy way to toggle it.

We’d love to hear your comments on our blog posts and on our development.Throw us a mention on Twitter or Facebook and tell us what you think!

Visit Clickteam @ FacebookVisit Clickteam @ TwitterVisit Clickteam @ YoutubeVisit Clickteam @ TwitchVisit Clickteam's The Reactor @ PatreonVisit Clickteam @
Transitions in Fusion 3
Posted on: January 30, 2017
In this blog post I’m going to cover a bit about transitions.

Transitions between screens/images/levels are very useful in any kind of game but there haven’t been a wide variety of them for Fusion 2.5 and previous titles. To make them for Fusion 2.5 you needed to program in C++ and it was only using functionality originally designed for software rendering (no hardware acceleration). To make matters worse the transitions also suffered from not being very portable to the other runtimes. We felt that transitions had been overlooked for too long. But how can you make something like transitions easy to modify for clickers?

To look forward you sometimes have to look back first.

Some of you might remember the rarely used functionality in The Games Factory where you could make a frame designed to be used as a transition. It sounds pretty useful but it had a few limiting quirks: You didn’t have much control over what was drawn and what wasn’t. It worked by using the objects in the “transition frame” as invisible “coins” on a big “scratch & win” card – revealing the next frame wherever the objects moved for as long as the transition duration. It was actually kind of cool but it was very limited in scope.

The idea that you could make your own transitions kind of stuck since then. As you might have read in all our previous blog posts we have a completely new type system which is our sort of version of an entity/component system but it ties nicely together with object oriented programming. A “Frame” is in Fusion 3 just another object of sorts – an object that we can subclass quite easily. All frames in Fusion 3 are in effect sub classes of “Frame” in one way or another but they can also be sub-classes of other frames inheriting their special features and functionality.

This means that we could simply make a subclass of “Frame” called “Transition” that gives one access to two images – one image representing the previous frame and one of the next frame. With those two images you can then event your very own transitions using whatever objects or pixel shaders you can think of. Here is how I implemented a few simple transitions…


Just position two image objects on top of each other. At the start of the frame the two image objects have their images set to the previous and next frame images respectively. Then, in an always event, I set the opacity of the top image to the transition progress (retrieved from an expression). Done!

3D Card Flip transition

For this transition I simply only show the first image when the transition progress is less than 0.5 and only show the second image when the progress is greater than or equal to 0.5. This switches the images midway. Secondly I set the user matrix of the two images to be the rotation matrix around the Y axis for 180 degrees times the transition progress. This slowly animates the rotation around the vertical axis. I made sure that the hotspot and center of rotation were are the center of the images. Finally I set the blending color of the images to slightly darken them as the angle isn’t 0 or 180. Basically:

[Image A] and [Image B]:
—Set “darkeningFactor” to (1 – abs( sin(progress*180) ) * 0.3) * 255
—Set blending color to: Color(darkeningFactor, darkeningFactor, darkeningFactor, 1)

Other types of transitions

As I mentioned you can use pixel shaders and even several objects to represent the transition between two images. We haven’t worked on object transitions yet but they will simply use the exact same system. You will have the full power of all your coding creativity at your disposal when it comes to this. As people get creative with this system I’m predicting it will be used a lot more than it currently is. I’m imagining the flip transition being used for card games when a card is drawn from a deck.

I can even imagine this being used a lot for making reusable special effects on objects. For example different “kill” effects on objects as they are destroyed using different weapons. One transition could make objects appear to disintegrate in various ways, others could show the object having an electrocution effect and have it burn away – even more complex transitions that can make the objects appear to “melt”.

I’m very excited about Fusion 3’s transition system so far. Mostly because it hardly required any extra work on our part to bring so much more power and creativity in the hands of our users.

We’d love to hear your comments on our blog posts and on our development.Throw us a mention on Twitter or Facebook and tell us what you think!

Visit Clickteam @ FacebookVisit Clickteam @ TwitterVisit Clickteam @ YoutubeVisit Clickteam @ TwitchVisit Clickteam's The Reactor @ PatreonVisit Clickteam @
Collisions in Fusion 3
Posted on: January 23, 2017
Today I want to talk a bit about the collision system in Fusion 3.

Collision detection is very important in many games and we want to keep it as simple and intuitive as it has been in previous titles.On of the major differences between Clickteam Fusion and other game engines is how short there is from intent to implementation. In other engines you typically have to manually set up event handlers, callbacks or other methods or possibly even loop through all instances yourself to check for collisions. In Fusion and earlier products you only had to define the event…

If [SomeObject] collides with [AnotherObject]
—> [SomeObject]: Bounce

The KnP/TGF/CnC/Fusion engine then automatically knows your intention and handles everything for you. The game engine knows the context of all that is needed in this example. For example from “SomeObject”’s point of view the “Bounce” action means bounce off of whatever it just collided with. In this case it is “AnotherObject” and the engine can from the collision detection system figure out the resulting new angle for “SomeObject” to travel in after the bounce. High level programming, like what you do in Clickteam products, is all about getting your intention down into code that works like you expect it to do – but not limit your options when you want something different to happen.

The collision system in Fusion 3 will not be much different to what you are already used to. We will however do a lot of interesting things behind the scenes to make the system even better.

Limitations in Fusion 2.5

To use the Fusion 2.5 collision system properly you had to use some sort of movement. Without them you sometimes had to manually implement your own collision detection systems.

Always setting X,Y positions on your objects to move them would not generate the “On collision” events properly. Even when they fired the collision system would have no idea how to handle any “bounce” actions or similar. Always setting an object position is to the collision system the same as the object being completely still but always teleporting a tiny amount. It would not see this as a physical “momentum”.

To overcome this, many users used the Ball movement and controlled it’s speed and direction carefully. Some also completely ditched the Fusion collision system and only relying on the “Object is overlapping” conditions and extensions like “Move Safely” to manually move objects.

To those who don’t know the “Move Safely” extension it is an object that you can ask to move an object towards a given position. It would then in small incremental steps move the object a little bit of the way and ask the runtime for collisions. If the object was in a “forbidden” zone (like overlapping some terrain, or object it should collide with) it would carefully move a bit backwards until no longer overlapping. All this would happen nearly instantly and the end result would be the object appearing to use a very fine collision detection system. It was a clever use of callbacks and and some aspects of the Fusion collision system.

It was however slightly confusing to new users, required you to set up callback events to tell the extension when a collision was happening or not. Furthermore you would not be able to use actions like “Bounce” since the collision system never saw an actual collision itself and it would have no idea which direction to move the object in afterwards.

We want to do better.

The Fusion 3 collision system

We wanted the ability to make use of the easy to use collision system even when not using a movement. So how can you move an object some distance and have collisions be tested for along the way to the new destination? In Fusion 3 we are introducing a new action called “Move to” that at first hand looks like and works a lot like the “Set position” action. It will however work a bit like the “Move safely” object in the sense that the object might be stopped “underway” to the destination if your “On collision”-events have stopped the object.

With the “Move to” action you can make your own Ball Movement replacement in a few lines of events while still taking full advantage of the fast collision system in Fusion 3. In fact the default movements in Fusion 3 are all using this “Move to” internally. Eventually you can code your own movements and share them with your friends and they can use the movement like if it was an inbuilt movement.

From the technical side – behind the scenes

In Fusion 3 we use an acceleration data structure called an Axis Aligned Bounding Box tree (AABB-tree for short) to make your games all nice and fast. The AABB tree allows us to “split up” the world into logical pieces when we perform the collision detection so that we don’t have to test for collisions on all pairs of objects. If we didn’t do that your games would run incredibly slow. If you had 1.000 objects in your game (not entirely unrealistic) and all objects could potentially collide, then a “naive” collision system would have to test 499.500 pairs of objects for collision. Why so many pairs? It can best be described as the “Handshake” problem. If there are two people in a room then in order for all of them to greet each other then only one handshake would be required. If there are 3 people then you need 3 handshakes, 4 people = 6 handshakes, 5 people = 10 handshakes. I got the exact number from the equation: n(n-1)/2

Obviously we do not want that amount of testing to happen all the time in your games. Instead we have to be smart about which objects could potentially collide. If two objects are far apart and don’t move much then we don’t even need to test them at all. The good old rule of thumb for performance sound a bit like:

“It’s not how fast you can do some work, it’s how fast you can avoid doing unnecessary work”.

One obvious observation is that if no objects moved then no collision detection is even needed. As a consequence of this we can also only iterate objects that actually moved when we need to test for collisions. This means we can in our “outer loop” ignore iterating the static objects like walls. For all the iterated objects we can then ask the AABB tree which objects are nearby and then iterate those in the inner loop to test for collisions.

The AABB tree works by asking it for the closest node that fully contains a given rectangle or circle.

In the example image we use the bounding circle of the bounding box of the object. In practice one can take a much more snug fitting bounding circle but that requires doing a little bit of image analysis to find the best fitting bounding circle for that particular image/object.

The part where we ask the AABB-tree for the nearby objects is the key to the performance of the collision system. It allows us to ignore all the objects that aren’t relevant.

Fast moving objects

Even now we have a lot of potential objects to test for collisions with. To make matters worse we have to take care of a typical problem in collision systems: fast moving objects.

As you might know most game engines are only updated around 60 times per second. Moving objects might not move far between each frame when the speed is low, but if you are factoring in incredibly fast moving bullets then they might “skip” over entire walls or objects between frames. This is not acceptable and we have to find a solution.

Many game engines use sub-stepping which breaks the collision routines into even finer steps so you might end up doing up to around 500 collision detection steps per second to find those collisions that might have been missed for the fast moving objects. When you have many objects this will also become a performance bottleneck. In Fusion 3 we are using a different approach that again draws back to the quote from earlier “it’s how fast you can avoid doing unnecessary work”.

To ensure that no object is skipped we make the AABB-tree look at a larger area that covers the entire area the object moved from and to. We call this area the “broadphase”. This gives us a larger list of potential objects to look at in the collision detection algorithm but it gives us the security of not missing any objects. It is still better than many-doubling our workload and not even getting guarantees for accurate collisions.

In the GIF you can see the broadphase as the trailing blue circle.

From our inner collision detection loop we have now reduced the problem to only looking at a pair of objects. Are those two objects even colliding? We only know that they might since they are near each other and at least one of them moved. Doing fine and accurate collision detection between only two objects is still a big task and can be slow. Looping over all the pixels in two sprites to find one pixel that overlaps is not very fast. Once again we will attempt to avoid doing unnecessary work by not even getting to that point.

Fusion 3 then does a series of simple tests to weed out the cases where objects aren’t colliding and it’s quick to determine so. Since both objects can potentially be moving very very fast we can’t simply test if their bounding boxes overlap each other. We need a way to test if they might overlap that takes time into account. In Fusion 3 we implemented a fast quadratic solver that very quickly can determine if the two moving objects will collide along the way and return the first possible time of impact. If the solver sees that they will not collide then the pair can be discarded and we move on in the collision system. If it however sees that there is a potential collision we can perform more precise substepping as needed.

In this GIF the resulting collision surface normal can be seen pointing out from the collided surface.

Collision systems are hard to do properly and I can’t get fully into all the details that we have put into ours. There are many edge-cases and other performance optimizations that are simply too boring to write and read about for these blog posts.

We’d love to hear your comments on our blog posts and on our development.Throw us a mention on Twitter or Facebook and tell us what you think!

Visit Clickteam @ FacebookVisit Clickteam @ TwitterVisit Clickteam @ YoutubeVisit Clickteam @ TwitchVisit Clickteam's The Reactor @ PatreonVisit Clickteam @
More on Data Types
Posted on: January 16, 2017
James here, Anders is taking the week off from blogging, allowing me to slip in and talk a bit more about data types!

In a previous blog Anders talked about our plans for data types. But I thought it might be worth a bit more time to go a little deeper into what we plan for this critical part of our work. In Fusion 3, we really wanted to bring the power of “real” programming into the event editor. We decided early in the project that one of the first things we needed to address to make this possible was to implement a real type system. What do we mean by a type system? Well, Fusion 2.5 only really has three types in expressions:

* Strings
* Integers
* Floats

There are special casing exceptions to this where functions need to accept more complicated types of parameters. In Fusion 2.5, actions and conditions can create custom parameter types, like the direction picker that appears when you call the “Set direction” action. Arguably, objects in the frame themselves in Fusion 2.5 are also types, and can be passed as object parameters.

To simplify all of this in Fusion 3, we have remodelled the type system to work more like object oriented programming languages. In Fusion 3, everything is a class, whether it’s String, Integer, BallMovement, or FlyingSaucer. These classes can derive from each other, so for example:

* FrameObject is a class that has properties for a position and size
* Sprite is a class _derived_ from FrameObject that adds further properties to handle animations
* When you insert a Sprite into your application, yet another subclass “Sprite1” is created, allowing you to add your own properties and events.

Let’s say we had two objects in our game: a FlyingSaucer, and an Alien. The inheritance chain for these objects is:

FrameObject -> Sprite -> FlyingSaucer
FrameObject -> Sprite -> Alien

Both of these objects behave like enemies in our game: that is, when we shoot them, they die and we gain points. In Fusion 2.5 this might have been accomplished by adding an “enemy” qualifier to both objects, and adding events specific to that qualifier. In Fusion 3, it’s possible to implement this in a manner much closer to “real” programming languages, using inheritance:

FrameObject -> Sprite -> Enemy -> FlyingSaucer
FrameObject -> Sprite -> Enemy -> Alien

Now, simply adding events to the “Enemy” class will affect the behaviour of both FlyingSaucer and Alien. Similarly, if Clickteam were to update the Sprite object, your derived Enemy class and any further subclasses would automatically inherit the updates in exactly the same way.

Primitive Types

In Fusion 3, even the primitive types like String and Integer are classes that can have their own actions, conditions and expressions. In Fusion 2.5, strings themselves had no functions: instead, they had to be passed to another function to be processed (much like C):

Mid$(“hello”, 1, 2)

In Fusion 3, because even primitive types are classes, they now contain their own functions (more like JavaScript):

“hello”.substr(0, 2)

Types can be combined in an expression. For example, the string “split” function returns an Array: a type which doesn’t exist in Fusion 2.5. The get function from Array can then be applied to retrieve one of the elements:

“one two three”.split().get(1)

# Type Coersion

In Fusion 2.5, it was necessary to explicitly convert between numeric and string types:


In Fusion 3, this conversion is automatic. However, unlike weakly typed languages such as JavaScript or Python, type conversion cannot fail at runtime: for example, you cannot even attempt to pass a Bitmap to a function that reverses a string. This is because Fusion 3 is a strictly typed language with type coersion, which means that all type conversion is checked before build and then compiled into explicit conversions.

This arguably gives us the best of both worlds: explicit type conversion is not necessary for common tasks such as converting an int to a string, but there is no possibility of a “incorrect type” exception being thrown at runtime. We also gain a performance boost by using strict types, in that the generated code never needs to store or check types at runtime.

We’d love to hear your comments on our blog posts and on our development.Throw us a mention on Twitter or Facebook and tell us what you think!

Visit Clickteam @ FacebookVisit Clickteam @ TwitterVisit Clickteam @ YoutubeVisit Clickteam @ TwitchVisit Clickteam's The Reactor @ PatreonVisit Clickteam @
Welcome to 2017
Posted on: January 9, 2017
Hi everybody and welcome to the Fusion 3 blog posts 2017 version! We hope everyone transitioned from 2016 to 2017 safely. With new year celebrations out of our system Clickteam is getting back to work bring Fusion 3 to life. Most of our previous blog posts have been mostly technical and describe new features in Fusion3. To kick off the new year this week I want to talk a little bit about how Fusion 3 is made differently than it’s predecessors.

As mentioned previously Fusion 3 is a cross-platform project which means that it has to work on many different platforms flawlessly. This means that we both have to develop and use Fusion 3 on those platforms that we target. A computer isn’t just a computer, for instance for macOS we have to test it on a Mac but for Windows of course we have to test it on a PC.

We all have our own favorite operating system. I have been a Windows user for many years now and have been developing for it for almost as long. Over the years I’ve started to like how polished macOS’s development tools are though. I get a simple to-the-point UI in XCode along with some pretty powerful debugging and profiling tools.

While I know and use command line tools I’m more of a GUI / IDE guy, James is the command-line-wiz. His development setup on Linux (and macOS) with vim (a very complex and powerful text/code editor). Watching him code will leave most people flabbergasted.

On a day-to-day basis the team writes and commits code into our source control system. From there all changes we do are quickly propagated out to all our development computers and can be tested seconds after they have been pushed to the repository.

This is my (Anders’) home office setup. Here I can test on both systems side-by-side. You might wonder why I have a freezer next to my desk.

1) Space constraints in the kitchen.
2) I needed an extra table for random stuff.
3) I’m addicted to ice cubes.

Hopefully next blog post we can get James to share what exactly his working environment looks like as well.

We’d love to hear your comments on our blog posts and on our development.Throw us a mention on Twitter or Facebook and tell us what you think!

Visit Clickteam @ FacebookVisit Clickteam @ TwitterVisit Clickteam @ YoutubeVisit Clickteam @ TwitchVisit Clickteam's The Reactor @ PatreonVisit Clickteam @
The Art of Strings
Posted on: December 19, 2016
Text is everywhere. You’ll find text in almost all games and applications in some way or another, some of them using loads of it and others using a lot less. No matter what, text is one of our most powerful ways of communicating information to another person.

Another look back

In Fusion 2.5 you had a very limited set of options for displaying text if you didn’t “bake” text into your images. The good old String object could do the basics such as drawing a using a font, size and color but not much more. Alternative options such as “Text Blitter”, “Character image object” and “Graphic Font object” were created so you could use your own hand-drawn glyphs in your games with various effects.

For the windows runtime you also had the “Rich Text” object that allowed you to mark up your text like you wanted to (like in Word) but it was unfortunately too difficult to port to the other runtimes and wasn’t well suited for games.

Font sizes like “24pt” aren’t very intuitive and didn’t make much sense in a game world (as opposed to printed media). How big would the text be in the game? How big should my font size be for my text to fully cover a certain area? What about on other platforms with different fonts that are sized differently?

A technical challenge

Getting text “right” is a massive task and for Fusion 3 we wanted to get it right (or as close as humanly possible).

We wanted to make a better solution that would fit most needs.

3 added several new challenges for text drawing:

-Resolution independence (no more 1 pixel = 1 unit)
-You can see the text at any zoom level and it must look crisp and clear – even heavily magnified.
-Small fonts must not look blurry
-Embedding custom regions into the text for drawing custom objects such as symbols/emojis.

Drawing text in any kind of size and shape while looking good and being fast is hard. We decided on a hybrid solution between good old crisp text drawing in a bitmap and a more modern OpenGL accelerated approach that looks good at big magnifications.

Text is mostly vectorial in nature and vectors scale very nice to nearly all resolutions. Why not all resolutions? More on that later.

Vectors are however really difficult to render in a game in realtime without serious performance problems. We settled with a really interesting approach to single-color vector drawing in OpenGL called “Multichannel Signed Distance Field” maps. We found and modified an algorithm to suit out needs to perform really well within Fusion 3.

From the glyph we want to draw we extract the vectorial shape, draw it into a good old bitmap using a special algorithm. Exploiting several color channels to store information in we can store the glyph images at low resolution. When rendered to the screen using a special pixel shader we can get crisp and sharp shapes without the drawbacks of bad filtering or unintentionally rounded edges that normal Signed Distance Field algorithms typically suffer from. The result is low memory footprint for our drawn text while looking sharp at most resolutions.


“Excuse the bad GIF compression. Our screen recording software downsamples the images while also losing a lot of color information. It looks much more crisp and nice in real life.”

The limitations of vectors

While vector graphics are often seen as the ultimate resolution-independent image format it does have some drawbacks – mainly at small sizes.At small sizes drawing vector images often tend to become blurry and loose visual fidelity as long as you draw the text unmodified. The reason for this is that the vector edges end up at floating point coordinates and the rasterizer (the drawing system) then have to spread out the line into several pixels on screen. Lucky for us this is a solved problem in one of the most popular font loading libraries out there: FreeType2.

It specializes in drawing vectorial text at small pixel resolutions by “snapping” the vector shapes to the pixel grid – slightly modifying the overall shape of the character but in such a way that it becomes a lot more readable. We exploit this at small font sizes on the screen so you get the best of both worlds. Super crisp font rendering at small sizes while having slick looking huge fonts with no slowdown.

Attributed texts – Rich Text within any string.

So besides the (maybe) boring description of hybrid font rendering I wanted to throw in a bit of fun images for this blog post. It is nearly christmas after all.


This image shows our Attributed String. It allows you to set any font attributes on any range within the string itself. Here I set up a little christmas’y light show by setting the font colors in a sine wave. The text can also mix fonts and sizes within the same string.


Here I made some text do a little christmas boogie. Our text alignment is not limited to “Left”, “Center”, and “Right” or “Top”, “Middle” and “Bottom”. It can be any value in between. The in-between values might not be very often used but it might prove useful in some animations.

Icons and emojis

Our underlying text layouting technique also supports custom elements inserted into the text. We still haven’t decided how to expose this functionality to you as the user yet. In Fusion 3 itself we for example use this feature to draw icons within the event editor.


The two object icons are simply images. The “SPACE” icon is actually a Nine-slice image rendered with dynamic text on top. As you can imagine this could be used for drawing emoji’s and other game-related icons directly in your games’ text. I’m imagining this could get used a lot in RPG-style dialogs.

Other types of text features

In this blog post I haven’t covered other types of text such as bitmap texts. That will be in another blog post.

See you on Jan 9th 2017 for our next Blog post, Happy holidays and have a good new year!

We’d love to hear your comments on our blog posts and on our development.Throw us a mention on Twitter or Facebook and tell us what you think!

Visit Clickteam @ FacebookVisit Clickteam @ TwitterVisit Clickteam @ YoutubeVisit Clickteam @ TwitchVisit Clickteam's The Reactor @ PatreonVisit Clickteam @
Evolution of Backdrop
Posted on: December 13, 2016
Since Fusion 3 is a complete rewrite we have the rare luxury giving our “old” objects a complete overhaul. The core objects of the Fusion line hasn’t changed much over the years because each of them had a pretty well defined purpose and use case. This doesn’t mean that we can’t improve on them however. For instance let’s look at the Backdrop and Quick Backdrop objects…

Backdrop & Quick Backdrop:

In Fusion 2.5 and previous versions the backdrop object(s) have always been quite similar in functionality; they sit behind everything on the layer they are on. They are simple in nature. Act as the background behind other things that are more interesting. However having two separate objects for this seemed to us a bit confusing as their functionality is almost the same.


We will in Fusion 3 be merging the Backdrop and Quick Backdrop object into one “Backdrop” object that covers both their previous use cases and adds more to it.

Along with the usual modes you will find a new “Nine-slice” method which I think will get quite popular. “Nine-slice” is a method where you can use 9 individual “slices” of an image to draw an object of any size where the borders doesn’t scale. Think the borders of buttons.


Since we can already draw buttons in your games why not give you the ability to use our button-drawing functionality for all sorts of other things than just buttons? First game-related thing that pops into my mind is Mario-esque blocky backgrounds.

Objects even of the same type can in Fusion 3 can have their own individual size and scale in the frame editor. This means that you can drastically reduce the amount of cloned objects you will be using.

A lot of our users also expressed interest in being able to change some of the backdrops at runtime – for example changing their colors, gradients or images. This was not possible in Fusion 2.5 because the backdrops were handled differently and weren’t even visible in the event editor.

For Fusion 3 the backdrops will also by default not show up in the event editor but you can change that with a setting for that object.

This means that you can now change all that in the backdrop at runtime:


The inverse problem was also present though. Often you would have tonnes of non-backdrop objects, like strings, that were only for show and didn’t need any logic. With the same setting you can hide them from the event editor so they don’t clutter it up for you.

The backdrop objects aren’t the only objects getting a long look at. All the objects shipping with Fusion will get a good look at and we will see where we can do things better and simpler. For example there is the case of the good old system box objects. How many can explain the precise difference between the “Active System Box” and the “Background System Box” object? – other than the background one being in the.. background?

The background system box object was mainly an optimization when it comes to drawing performance in a software rendered environment. It utilized the “background saving” technique that traded extra memory usage for drawing performance as long as the object didn’t move or change appearance. With the introduction of hardware accelerated graphics the object got largely obsolete as it then just became a lesser-featured version of its “Active” counterpart.

Guess which object gets the cut? Well more next week!

We’d love to hear your comments on our blog posts and on our development.Throw us a mention on Twitter or Facebook and tell us what you think!

Visit Clickteam @ FacebookVisit Clickteam @ TwitterVisit Clickteam @ YoutubeVisit Clickteam @ TwitchVisit Clickteam's The Reactor @ PatreonVisit Clickteam @
Version Control and More
Posted on: December 5, 2016
Today’s blog post is a bit more geeky and behind-the-scenes.

One of the things we wanted to fix with Fusion 3 is how your games and applications are saved on disk while you’re working on them. Fusion 2.5 uses a “MFA” file, which is a binary file format and only readable by Fusion 2.5 itself. This makes it difficult to use things like version control to track changes to your project, or to manage assets and events in the filesystem.

In Fusion 3, we have moved to a completely JSON based approach. This means that you can look at the “source code” of your game or application in any text editor, check it into version control like GitHub, or even write your own tools to work with Fusion 3 projects. Additionally, all of the assets such as images and sounds in your game are saved into a folder along with your project JSON files, which allows you to quickly access your assets and edit them using your own tools.

Here’s a sneak peek of what the JSON file for a simple application looks like in the Fusion 3 alpha. See if you can guess the game…


Using JSON for almost anything

For those who do not know JSON fear not. You don’t have to write it, look at it or even know about it. It is simply a different way of storing data.

We chose JSON because of the simplicity of the format. Another candidate was XML which is another quite popular textual data storage format. We however felt that XML is not consistent enough for our tastes. For example you can in XML store your data either as a tag or as an attribute. In JSON there is only one way to store your data and it is, in our humble opinion, a lot more readable with less visual noise and more to the point than XML.

JSON often explained as a “subset” of the Javascript syntax which isn’t 100% accurate even though it is very close. You have 6 different “basic” ways to represent data in JSON (Strings, integers, floats, boolean, arrays and dictionaries)

With these simple data types we will store everything about your events, frames, objects, movements and more.

It might be surprising to some that almost anything can be serialized down into those few types.

For example the “Vec2f” type, which we use internally for all coordinates in Fusion 3, consist of two floats. One X and one Y coordinate. In memory they are tightly packed floats. In JSON they are simply serialized into something like:

{“x”: 102, “y”: 472}

As you can see we exploit JSON dictionaries to store multiple named variables. We can nest all of this into larger and more complex objects.

One thing that JSON isn’t good at is storing binary data. We instead store all your binary data files separately – such as images and sounds.

From JSON to native code

When you “compile” your game for other people to play you maybe don’t want your source to be publicly available for anyone to see. Fusion 3 will take all the JSON as input and spit out C++ code which will in turn be compiled into native code for your target platform. This means that there will be no JSON left to peek into. After the C++ compilation step you cannot go back to the JSON source in any way.

More on the C++ code generation in a future blog post!

We’d love to hear your comments on our blog posts and on our development.Throw us a mention on Twitter or Facebook and tell us what you think!

Visit Clickteam @ FacebookVisit Clickteam @ TwitterVisit Clickteam @ YoutubeVisit Clickteam @ TwitchVisit Clickteam's The Reactor @ PatreonVisit Clickteam @
Posted on: November 28, 2016
What is a storyboard?

A storyboard is a way to figure out how a story progresses over time.

In Fusion 2.5 and previous the storyboard was a simple list of frames and didn’t give much indication on how frames were interconnected. They simply flowed from beginning to end like a movie. But games and applications aren’t movies. For Fusion 3 we are working on a better Storyboard for you that can give you a much better overview over how the flow is through your game/app’s frames.

The New Storyboard Editor

Apologies for the ugly “shopped” arrows in this picture and the lack of frame previews. They are being worked on!


We also want to show frame inheritance with another type of arrow in the future. It will be possible to hide these arrows though as the storyboard can easily become cluttered.

The Storyboard Editor is now simply an alternative view to the frame inheritance tree you see in the Workspace to the left. Frames can be dragged around by you to align them in a way that makes sense to you.Our aim is to draw automatic arrows between the frames where you have a “Jump to frame” or “Next frame” actions to them. While a seemingly small change it will make organizing your frames much easier for big and complex projects – especially for huge adventure games where you can now lay out your frames the same way they are located in your game itself.

We’d love to hear your comments on our blog posts and on our development.Throw us a mention on Twitter or Facebook and tell us what you think!

Visit Clickteam @ FacebookVisit Clickteam @ TwitterVisit Clickteam @ YoutubeVisit Clickteam @ TwitchVisit Clickteam's The Reactor @ PatreonVisit Clickteam @
Coordinate Systems
Posted on: November 21, 2016
In the 7th edition of the Fusion 3 development blog we will continue to discuss last weeks look at layers.

In the olden days

All the way back to Klik & Play, the “Click” series has only had one type of coordinate system – one that pretty much was 1 unit = 1 screen pixel (with the exception of intentionally retro-looking games with larger pixels). One object only ever had one [x,y] coordinate on the screen. This was simple and easy to understand for everyone. It was very limited though.

With the addition of layers things got a little more complex. There you have multiple “planes” (layers) of objects that could parallax scroll at different amounts depending on the scrolled position. To keep things simple in the case of parallax scrolling objects still only had one coordinate. If you did Always -> Set position of [object] to XMouse, YMouse then no matter which layer the object was on it would end up underneath the mouse. The coordinates were always interpreted as being some sort of “global” coordinate system.

While this was simple to understand it could complicate more complex games unnecessarily. If a layer scrolled with a parallax multiplier of something different than 1 then all objects in that layer would effectively change their coordinates as the screen scrolled. This meant that you could never store coordinates in alterable values and reuse them later for something as at that time the coordinates would have lost their meaning without doing some offset conversions.

Conversion between coordinate systems

As you saw in the previous blog post we will allow layers to exist in a hierarchy – even allowing objects to have sub-layers with no restrictions on the depth of this hierarchy. With this system then each layer manages it’s own private coordinate system. If you inside you’re own custom object position something at 0,0 then you expect it to be located at the top-left corner of the object no matter where you position the parent object in the frame. Each layer can also have it’s own scale, angle and “camera” position so suddenly the old system with only one coordinate system completely break apart.

As a consequence of this there will no longer *gasp* be a global XMouse, YMouse expression anymore! The one global mouse position you can get is in window-local-coordinates (which aren’t affected by the scrolled position). So how would you position an object underneath the mouse? Where do you get the mouse coordinates from then? Answer: From the layer! Every layer in your frame will now show up as any other object that you can get information from:


Or you can get it dynamically from whatever layer the object is currently on (in case your object type is on several different layers or is moved between them).


Or even chose to convert the window coordinates to the layer coordinates.


There are also expressions to easily convert coordinates between different layers. The action for moving an object between layers will have the option to convert all of this automatically so that you don’t have to worry about it.

Layer layout/display modes

The iOS runtime was the first runtime to get the notion of certain different display modes such as “Center”, “Adjust window size”, “Fit inside”, “Fit outside”, “Stretch to fill”. Instead of just being an option for the window those methods are now an integral part of how layers work. This is really useful for those of you who make your own objects with the layer hierarchy.

For example if you take our custom checkbox example again from last week:

If the checkbox object is originally sized to be 48×48 then the object’s content-size will be 48×48. Say you resize the object to 96×72 units, how will the object respond? Will it scale? Or just show more content if available? That is what the layout mode is for and is handled completely automatic for you.


An UI control like this custom checkbox might use the “Fit inside” option as the default. Some UI controls like a scrollable view would just use the “Expand” mode to show more content within the object. (- Yes, you can even make your own scrollable views if you want. It is just a layer that clips it’s content to the object size.)

As you can see, with all these new layer features it is quite useful to be able to convert between coordinates in all sorts of different layers. All of this is behind the scenes simply turned into a single “matrix” which are super fast to use for both drawing and coordinate conversion so it is very performant at runtime.

We’d love to hear your comments on our blog posts and on our development.Throw us a mention on Twitter or Facebook and tell us what you think!

Visit Clickteam @ FacebookVisit Clickteam @ TwitterVisit Clickteam @ YoutubeVisit Clickteam @ TwitchVisit Clickteam's The Reactor @ PatreonVisit Clickteam @
Posted on: November 14, 2016
This time I’m going to talk about layers. Some notion of layers are used in all games. Usually you have a “game” layer and some sort of user interface layer that always exist on top of the rest of the world. Sometimes you have a background layer for distant objects or other effects.

Layers themselves are usually not that interesting. They usually just contain objects and not much more. Layers in Fusion 2.5 is an ordered list sorted from top to bottom. Each layer can contain a large number of objects and can on Windows have it’s own effect that applies to everything. Each layer can also be scrolled to a given position but usually just follows the global scrolled position.

So why a dedicated blog post on layers for Fusion3? Because they will change drastically to make your life so much easier in many ways that might not be immediately obvious.

Fusion3 differs quite a bit from all of this on several key areas:

  • – Hierarchy, in both layers and objects
  • – Private coordinate system
  • – Layout mechanisms (expand to parent, fit inside, fit outside, stretch, ect. ect.)
  • – Certain automated object layout systems
  • I can’t fit all of these topics into one blog post so I’m going to split this one up.

    Layer tree

    You might notice a trend in these blog posts when it comes to revisiting old features; lists of things are typically turned into trees/hierarchies. The layer system is no exception.

    Layers will in Fusion3 be a tree of layers in the sense that each layer can have a list of sub-layers. And those layers can have sub-layers as well. This allows you to do complex combinations of effects if so desired. Having the layers as a tree is actually a relatively simple change. It is not here the true power of the new Layer system lies though.

    Object sub-layers

    We have previously talked about how you can make your own custom objects that are a combination of other objects. So how will you organize all those objects that your object is made out of? In a layer of course! But what layer? Answer: In your object’s sub-layer.

    Any object in Fusion3 can have an optional sub-layer. In that sublayer you can place any objects you might want to. So if you see the complete hierarchy of objects in a Fusion3 app/game you will see layers and objects interwoven in logical ways.

    Say you want to create a custom animated checkbox object with a background image and a checkmark sprite your object hierarchy would look like this:

  • Your “base” object
  • -Checkmark sprite
  • -Background sprite
  • The “base” object can be any type of object of your choosing. Usually you would pick a Sprite/Active object but you can also chose the parent type “FrameObject” which is an empty object that does nothing. In your object’s custom events you can check for when the object gets clicked and then animate the state of the checkbox. You can also extend on other existing types. In Fusion3 the layers will be an integral part of how objects are managed and are not only limited to something you find in a “Frame”.

    We’d love to hear your comments on our blog posts and on our development.
    Throw us a mention on Twitter or Facebook and tell us what you think!

    Visit Clickteam @ FacebookVisit Clickteam @ TwitterVisit Clickteam @ YoutubeVisit Clickteam @ TwitchVisit Clickteam's The Reactor @ PatreonVisit Clickteam @
    Child Events
    Posted on: November 7, 2016
    Hi everybody, welcome to the fifth edition of the Fusion3 development blog. Today we’re going to show you a long overdue feature that will finally be available in Fusion 3. It’s a feature that was originally discussed many years ago back in the private beta days of Multimedia Fusion 2. It was always planned to be added at some point. Changing MMF2 to allow for this turned out to be too big a task for the time constraints at the time. It turned out a major rewrite of the underlying codebase was needed.

    So it was postponed – until now…

    So what is this feature?

    Every so often you come across some logic that begs for finer control over both your events but also object selection. Often you want something to happen only when multiple criteria is met – but at the same time you wanted other things to happen when any of criteria was met.

    In Fusion 2.5 and older you would typically duplicate your events and specialize the events only after several conditions that are already identical across several other events. I remember seeing games made where the first 10-20 event lines started with “Start of frame” conditions and then followed by the specialization.

    Imagine if you could just make that “Start of frame” event once and then specialize under it?

    Child Events

    Fusion 3 is all about better code reuse and organization than ever before. In the image you can see how we nest several events into each other in a tree-like fashion.

    Any events that are nested below their parent event will *only* happen if the parent event passed all of its conditions (evaluated to “true”). For example the “[Truck] is stopped” event will only be evaluated if both “Space” is pressed AND only for trucks that are actually overlapping the “Grass” tile.

    Yes – object selection is inherited down the hierarchy of events. This is incredibly powerful and useful for any game or app. The inherited object selection means that you can make incredibly precise filters on exactly which objects you want to be affected by your actions in any situation.

    We’d love to hear your comments on our blog posts and on our development.
    Throw us a mention on Twitter or Facebook and tell us what you think!

    Visit Clickteam @ FacebookVisit Clickteam @ TwitterVisit Clickteam @ YoutubeVisit Clickteam @ TwitchVisit Clickteam's The Reactor @ PatreonVisit Clickteam @
    Expression Editor Syntax
    Posted on: October 31, 2016
    Hi everybody, welcome to the fourth edition of the Fusion3 development blog. As a continuation of last weeks talk about the new type system I thought it was appropriate to talk a little about our change to the expression editor syntax.

    A look back

    In Fusion2.5 and older we used the C-style function syntax:
    SomeProperty(“MyObject”, someParameter, someOtherParameter)
    Like X(“MyObject”), Left$(“SomeString”,5)

    While you might immediately recognize the above examples and know what they do, there are other examples where that might not be immediately clear.
    For example: something$(“SomethingElse”)

    Is this an expression that returns a string from the object [SomethingElse] or is it a global expression that does some manipulation on the string “SomethingElse”?

    It might be obvious to the user that made the code but other users reading had a hard time figuring out the meaning.

    It got even more convoluted when you wanted to chain the result of expressions together:

    It can be read as something along the way of, the “someExpression” of “anotherExpression” as a result of “moreExpressions” on “lastExpression”. While it is a valid and perfectly fine way of explaining it, it also requires you to remember the entire expression at once to get the meaning.

    New syntax

    As we have talked about before we are changing the expression syntax to be more “functional”. If you want to retrieve data from something you first type the name of that something and then what you want to get.

    Instead of Len(“SomeString”) you now type “SomeString”.length
    Instead of X(“MySprite”) you now type MySprite.x

    This has several benefits to you. You can chain expressions together easier and we can now show you intelligent code completion.


    In the above animation you can see how typing “ColorRGBA.” gives you a popup that show you available options for that type. “Yellow” is a convenient static property of “ColorRGBA” so we can select that one. We now have the yellow color which we can then access. You can see we have the ‘r’, ‘g’, ‘b’ and ‘a’ values available from it which are “float” components of the color.

    Now we can chain the expressions even further by getting another color from our yellow color. The expression “withAlpha” simply returns a version of that color but with the alpha component replaced with the one we give it.

    To demonstrate the point about how easy it is to chain expressions together we go all the way and convert the color to a string and list some of the available string operations you can do.

    We have a lot of powerful functionality ready in our basic types that we haven’t made available to the editor yet. Stay tuned for more cool examples!

    We’d love to hear your comments on our blog posts and on our development. Throw us a mention on Twitter or Facebook and tell us what you think!

    Visit Clickteam @ FacebookVisit Clickteam @ TwitterVisit Clickteam @ YoutubeVisit Clickteam @ TwitchVisit Clickteam's The Reactor @ PatreonVisit Clickteam @
    Data Types
    Posted on: October 24, 2016

    In Fusion 2.5 you only had 2 types you could use – numbers and text. Well that is actually 3 types when the numbers could either be floating point or integer. What value (float or integer) type was stored depended on how you typed out your expressions. It’s amazing how much you can do with only those types really. All other types of data somehow was able to fit into either category. For example colors were stored into a single integer value and you had to extract the red,green and blue components from it using expressions like GetRed(myColor).

    Fusion 2.5 also had the notion of “flags” – a value that could either be on or off, 1 or 0. A boolean if you will. These were never really a “type” as such and was only exposed to you through the actions “Set flag on”/”Set flag off” and the condition “Flag is on”/”Flag is off” and could be given to you as an integer with the expression “Value of one of internal flags”. These flags were accessed through an index – not a name like the alterable values or strings.

    Can we do better?

    A new type of system…

    While the limited types in Fusion 2.5 worked fine in the past and has allowed for the creation of awesome games we still feel like all of this could use a major overhaul. Fusion 3 brings you a completely new type system. We will be adding a whole lot of new types that you can use so it makes your game even easier to make. Fusion 2.5 kept “alterable values” and “alterable strings” completely separate (as well as flags).


    Wouldn’t it be nice if you could store any type in your objects? Strings, values, floats, X,Y coordinates, colors, images, binary data, That is what we aim for now! Gone are the limits of only alterable values, alterable strings and flags. We now give you alterable ”anything”.

    See you next week! We’d love to hear your comments on our blog posts and on our development. Throw us a mention on Twitter or Facebook and tell us what you think!

    Visit Clickteam @ FacebookVisit Clickteam @ TwitterVisit Clickteam @ YoutubeVisit Clickteam @ TwitchVisit Clickteam's The Reactor @ PatreonVisit Clickteam @
    Reuse of Events
    Posted on: October 17, 2016

    Hello again, check out our second post of our Fusion3 development blog. Today we want to talk about the hot button issue of code reuse. We think you will like what you see so far. Also we wanted to send out a thank you for the positive feedback on our first blog post.

    One of the features that you, our users, asked for the most is better reuse of events. We wanted to do better than simply copy-pasting frames full of events or making a mess out of global events. So how can you solve the problem of wanting to reuse as much of your events as you can while maintaining a clear structure?

    Enter the frame hierarchy…

    Typically you either event most of your gameplay in one frame and copy that across your other frames or put them in global events or similar. With the Fusion 3 frame hierarchy you can put all your usual gameplay code into one frame and have a whole set of “sub-frames” inherit all your objects and events from the “parent”-frame. You can then in the child-frames design your levels without having to do anything else.


    You can in your child-frames add even more objects and events if you wish. In the example above for the “Boss battles” frame we could have added a “Boss health bar” object and various events taking care of other boss-battle related things. This could easily be reused for all the other boss battles in the game so we put that into a frame for itself. Then inside the boss battle frames “First boss” and “Über boss” you would have all the events and objects available from both “Gameplay” and “Boss battles”. With this hierarchy your event structure will be so much simpler and easier to manage.

    This concludes our second blog post. We’d love to hear your comments on our blog posts and on our development. Throw us a mention on Twitter or Facebook and tell us what you think!

    Visit Clickteam @ FacebookVisit Clickteam @ TwitterVisit Clickteam @ YoutubeVisit Clickteam @ TwitchVisit Clickteam's The Reactor @ PatreonVisit Clickteam @
    Welcome to the Fusion 3 Development Blog!
    Posted on: October 11, 2016

    We hope that this blog will give you a detailed look at some of the fantastic features of Fusion3 which it is not possible to show in a short video preview.

    Some of our users expressed some disappointment that we couldn’t show off more of Fusion3 during the livestream – particularly how we are trying to make it easier and faster for you guys to make games. Videos are great for showing off fancy flashy features but they do not give you much information about the thoughts behind what you are seeing.

    So in this first episode of our dev-blog, let’s start out small and have a look at a few more simple and less “flashy” improvements of Fusion3, but when combined, will improve your overall workflow.

    Object Snapping


    The “ancestors” of Fusion3 all had “Snap to grid” which mostly got the job done, but was a bit rigid in the sense that you always had to adjust the grid settings to fit your needs.

    Now in Fusion3 we have proper object-snapping. As you can see in the GIF, we draw guide-lines to show you which edges snaps to which. This feature, even though it’s simple, will greatly speed up designing levels for your games where objects need to align with each other.

    You can, of course, still use the good old grid function found in previous versions of Fusion.  So the ability to set a “snap to’s” starting X and Y positions and the amount of pixels you step through horizontally and vertically remains the same- allowing users to continue to place objects in the frame editor as you could with Fusion 2.5. We believe the combination of the two features provides Fusion3 developers maximum power for accurate object placement in the Frame editor.


    Duplicate dialog improvement:

    The duplicate dialog has always been there and has been perhaps the most boring dialog in Fusion.

    Our new editor makes it simple for us to add extra visualisations to aid us where needed – for example, a preview of where the objects will be created:


    Sure, improving on this dialog may be low hanging fruit – but when you think about it you may be left wondering “why didn’t we have this before?”.

    In the works:

    We have lots of ideas for improving small dialogs like this even more. It would be a piece of cake to add in certain degrees of randomization to either position, size, scale, angle, direction and so on.  With that kind of randomization you could almost generate the basis of an entire level for a game; either game tiles, or detail objects like dirt, grime or grass.

    The “Duplicate dialog”… Who would have thought… :-)

    Custom Actions/Conditions/Expressions:

    People using Click software had a tendency to evolve their own coding style – some of them quite creative. People exploited groups of code along with the “On group activation” event to simulate functions.

    Rarely do you find a feature that (even though somewhat simple to understand) can have such a huge impact on how you make your games:

    One of the features we’ve talked about in the past is the ability for you users to define custom Actions, Conditions and Expressions (ACE for short).  With this we are stepping closer to an actual Object Oriented Programming approach.

    In Fusion3 you can simply go to the “Custom ACE” tap of your object and add your new action definitions. (We are still busy hammering on the UI, please excuse it looking incomplete).  Clicking on the ‘Event editor’ icon to the right of the definition you get sent to a “private” event editor only for that ACE. In there you can set up the parameters that the ACE requires.

    After you have created your new ACE you will find it in your event editor ready to use!

      image01   image00  

    But wait, there’s more!

    Why would we limit this to objects only?

    You can add custom ACE’s to your Frames as well – AND your Application.

    This effectively replaces global events from Fusion 2.5.

    We will in the following blog posts show you how this can change how you organize your code in your games – and how to give them better looking names than “newAction1” :)

    This concludes our first blog post.

    We’d love to hear your comments on our blog posts and on our development. Throw us a mention on Twitter or Facebook!

    Visit Clickteam @ FacebookVisit Clickteam @ TwitterVisit Clickteam @ YoutubeVisit Clickteam @ TwitchVisit Clickteam's The Reactor @ PatreonVisit Clickteam @