Caffeine helps.
Hello! I've recently cooked up a summer-long game jam I'm calling the Flaming Hot Jam, aiming to be a first game development experience for people. I thought it'd be interesting to be part of something like that with a lot of other people I know. It's planned to take place between June 21 and August 21. The goal is to, as a team of the size of your choice, finish and submit a game during this time period. The theme your game will have to follow is going to be revealed on June 21.
Since this is a first game dev experience for many, I figured I'd write a quick guide about game jams/software development. I'll probably skip over some important concepts, so feel free to ask any questions in the comment section below. This is as much a tutorial as it is an AMA!
When the theme is revealed, teams brainstorm to find interesting game concepts that fit it. Don’t worry about spending too much time throwing different ideas at the wall – it’s good to have a strong idea of where you’re going early on, especially considering how much time we have in this game jam. Strong foundations will make the rest easier.
A brainstormed idea can be as simple as:
Concept: Co-op game where two players control half of a shared character.
Fits the theme because: The players must find unity to progress
Some ideas can be discarded early on.
And then you can go into more details of ideas you find interesting. Be ready to answer questions like these before starting your work:
To make sure everyone agrees with and is comfortable with the direction. Then, the work to do can be divided in tasks. For example:
There is no task that’s too short to describe individually. Assigning tasks to people will make it so two people are never working on the same thing at the same time, which is essential.
At regular intervals, take a step back to assess what is accomplished so far, the difficulties you’re facing, and the work left to do. Do so as a discord call for example, if you’re a team. Make a dev update if you’re alone! Changing your perspective will let you escape the frustration of being stuck more easily.
Game engines are built-in environments to create games in. They handle most of the boring technical stuff for you, such as displaying visuals on the screen and playing music and sound effects! They allow you to focus on the things unique to your game, while abstracting away things that are shared by most.
Here are some popular game engines. The list is in no way exhaustive but sticking to a popular game engine lets you check out tutorials made by other people online. This is crucial to get you up to speed more quickly.
All-purpose engines:
Unreal Engine is the most popular game engine around. Thanks to its exhaustive feature set, you can do anything from a simple 2D title to an augmented reality game. You can also target a variety of devices with your games. You can write custom code in C++.
Unity is a popular engine for smaller-scale projects. While not as efficient as Unreal Engine, it’s known to be better suited for 2D visuals for example, and to be easier to learn overall. You can write custom code in C#.
Game Maker is a game engine almost entirely used by 2D independent games. DeScruff would know more about this one. It has its own script language that is considered easy to learn.
Quirkier engines:
Ren’py is an engine dedicated to visual novels. I’ve used it to create the Bass Awards, which you should totally check out if you haven’t already. The basics of displaying scenes and dialogue are extremely straight-forward, and you can write additional logic for your visual novel in Python. Windows/Linux/Mac OS/Android builds are supported.
RPG Maker is an engine meant to create RPGs, but it is also used for combat-less adventure games. It’s particularly useful for creating level designs quickly, with its simple interface for tiles and collisions.
Pico-8 is a fantasy console meant to emulate old console limitations. Perfect to ensure your game has an authentic old-school feel.
It’s possible, but more difficult. My past game jams have been straight python, plus the map editor Tiled. Make sure there’s an experienced coder in your team before trying this!
Note: only necessary if working as a team
Let’s say that your game is more than a solo project. You’ll want a way to synchronise your files not only between your PCs, but also between collaborators. Sending them via email or usb stick is a surefire way to lose progress. There’s got to be a better way.
Enter, source code management! I won’t go too much into how it works, but the general gist is that it provides a history of files, and a current version that all contributors can modify on their own.
The general flow is like this. First, using a git client like GitKraken, clone your repository (that you create in your source code management website, like GitHub).
You now see a “main” (named develop or default or master) branch that contains a snapshot of all the files. You create a branch offshoot from this main branch on your machine, then commit it after modifying some files. Your branch is kind of like a save slot in a video game. You may choose to commit as many times as you want until you want to make your changes available to everyone, in which case you push your branch and open a pull request to bring your changes back into the main branch.
In short:
It may sound a little complex at first, but this is quite a convenient way to allow people to work in parallel. I suggest using GitHub as your host website, and GitKraken as the software you install on your machine. SourceTree is a decent alternative to GitKraken that’s less stable but is more fully featured without paying.
You may also want some way to track your progress/objectives. Trello is free to use and can do the trick nicely.
Visual Studio Code! It’s a free multi-platform text editor by Microsoft. By itself it’s a fairly simple program, but it has an active extension community that supports a ton of different coding languages.
Gimp for image editing, Davinci Resolve for video editing and Audacity for Audio editing (if necessary).
Before the jam begins, you can prepare yourself by learning the following concepts.
If this is a team project:
If you have someone with coding experience in your team, they could show you the ropes! Or you can contribute art, voice acting, etc. Or make a non-video game! The possibilities are endless.
Any questions?