Guide to Proper Project Management

  • 1 favourites


761 visits, 924 views



This tutorial hasn't been translated.


This tutorial is licensed under CC BY 4.0. Please refer to the license text if you wish to reuse, share or remix the content contained within this tutorial.

How to Not Get Screwed By Your Past Mistakes V0.23.8b

This assumes you know enough to make a game, but not enough to make it easy to work with. I will guide you through what I have found to be the best ways to avoid being overwhelmed by thousands of complex events, how to make debugging easy instead of frustrating, and remove barriers to your creativity in general.

This is an ongoing list! Now and then, new tips might be added.


Yes, use functions. My general rule is the following:

If you use it more than once, or you think it might be possible that you'd want to use it more than once, put it in a function. Why, you ask? Well because when you go to change one little thing, you don't need to go and change every other time you used it.


Variables are like functions. You might think it's easier to just throw set player.x = self.x + 8 in there, but when you also have set player.x = self.x - 8, you have to not only change two numbers every time to fix a problem, but you have two ways the game can ruin your day. Don't give it the chance!

set player.x = self.x + player.offsetX and set player.x = self.x - offsetX work a lot better and only have a 80% chance of eating your soul. (That's better than 97% by the way!)


Fortunately, C2 allows you to call functions using strings. This might seem underwhelming at first... Until you realize you can literally just put a text box on screen and call functions (with variables to boot!) from it. This is extremely useful. Of course, you need functions to be able to use it, but that's fine, because everything in your project is a damn function.

You should be able to change the background through the console. In fact, I can usually teleport, delete or change the animation of any object on screen if I get their UID. I mean, that's a nice little benefit to have from having a project that's set up properly.


Simply put, gameRules are things that are triggered by certain events in the game, and gameFunctions are what they call to actually have an effect.

An example of a gameRule might be that if you touch a checkpoint, it calls a function to change the current checkpoint to the one you touched. An example of a gameFunction is the function that gameRule calls. Of course, these terms are just made up, but the concept is what counts right..?

The difference between what makes a gameRule and what makes a gameFunction is that a game rule is something that is always active, always waiting for something to happen so it has a reason for existing. A gameFunction just sits there and does bugger all until something comes up and gives it a good kick in the behind. A gameRule is something that calls gameFunctions but that's where its role ends. It is the condition the game picks up on that gets the ball rolling, but the gameFunctions do all the work.

Now, the point of this lecture is that you should have all your gameFunctions in their groups, separate from the gameRules that call them. The gameRules can all be grouped together too. Having all the ACTIVE parts of the game and all the REACTIVE parts in separate places means you know exactly what goes on in your game at all times even if you have thousands of events.


Don't paste sprites into the editor unless you don't care about the project. Just don't. If you ever want to change that 10 frame animation, guess what you have to do? Yep, change each frame individually. Meanwhile, I right click, go through one menu and click on "Reload files from > Original sources (For all animations)" and all of my animations update from my export folder. Alternatively, if you're into that, you can save as a project (which puts all your sprites and such into folders) and edit them from there, but then you can't use external exporters so easily.

So! Get your exported animations and put them in a folder, then load them in using the "Import frames > From files..." option. Trust me, once you've done this once, you will never go back. Like, literally because you don't need to load them in any more ;)


  • Order by
Want to leave a comment? Login or Register an account!