Game jams have become a popular way for game developers to try out ideas over a few days or weeks. They are fun, often themed game development events designed to stretch your creativity by imposing an extreme time limit. They call for rapid prototyping, often resulting in a throw-away proof-of-concept for a game mechanic or interesting idea.
Unity is perfectly suited to this kind of rapid game development. It is a game engine that comes with tools, example code, and art assets to jump-start a working prototype, helping beginners and experts alike to skip months of low-level programming.
As you begin, remember that preparation and planning are key. During the iterative phase of game development, when your mock-up is still very malleable and subject to radical change, look for techniques that will help speed up your development time and allow you to try out new ideas with the least amount of effort.
Here are three ways to work faster:
When you first fire up Unity and create a new project, you immediately face that most familiar of scenes—the lovely blue sky gradient. Where do you take it from there? The possibilities are endless, of course, and this can sometimes be a real problem.
For this reason, one of the best first steps when beginning a game jam or rapid prototype is to avoid sitting in front of your computer. Instead, grab a piece of paper and a pencil, and draw a comic book version of your game.
Think of it like a storyboard. You only need stick figures, no artistic ability required.
Scribble small thumbnails for each scene when first running the game. Perhaps it begins with a splash screen, followed by a main menu. Draw them without regard for art quality but instead from a mile-high view, like making thumbnails, until you have arrived at what feels like a fun introduction to a game.
What kind of camera is in use? What kind of movement will the player have? What does the world look like, and what will the moment-to-moment actions of the players be? Once you have these questions answered, you can forge ahead with the creation of your first prototype.
It is often handy to have your own personal base code project to start from, which is more than just the empty default new Unity project template, but also has a few of your favorite goodies (camera scripts, your favorite save game system, or a handy scene all set up to be a main menu).
A template project, which is often referred to in game jam circles as your “basecode,” or personal game template project, is an asset well worth developing in advance before proceeding with any new game project you create. After participating in several game jams, you'll begin to notice that many of the same things need solving no matter what game genre you are developing. If you don't have to start from scratch, don't!
Unity empowers developers to completely redesign the entire program to suit their needs; code can be set to run in-editor, as opposed to code that runs during the game. This is the perfect way to run custom “randomization” scripts, do tests, calculate statistics, or mass-rename groups of objects while editing. Think of all the ways you can save time during the design phase!
If you place a C# source file in any folder named Editor, it will not be part of the game build at all and can be used for developer-only functionality. For code in other folders, you need only wrap it in a define: “#if UNITY_EDITOR … #endif” to ensure it is never run during normal gameplay. This is super handy to add debug information to the game, or for custom editor functionality.
Imagine making your own tools for editing only, such as a Perlin noise terrain generator or something that rotates all selected objects to a particular orientation. To create your own menu items in the Unity editor, put the following meta tag immediately above a function: “[MenuItem (“Tools/My Custom Function”)]”.
Now, your editor enhancement can access, for example, “Selection.gameObjects,” an array of whichever game objects are currently selected, ready to modify as required. From there you could change “Selection.gameObjects[0].transform.position” or any other value.
Coding your own custom edit-mode tools is very fulfilling. You will reap great rewards, not merely in terms of time saved, but as a way to extend Unity to do anything you wish it could do.
To read all my tips on how to work faster, code faster, and make art faster, download this free eBook I wrote - Game Jamming in Unity: Tips and Tricks to Work Faster.
Christer Kaitila has been a freelance game dev since 1993. He has shipped dozens of games, and mentors at a game development club. He created One Game a Month and has published two other gamedev books.