The Global Game Jam took place last weekend, an annual event where thousands of crazy people get together and attempt to create games within the space of 48 hours. This year I was one of those crazy people, and I dragged along three game dev friends to share in the madness.
To tell this story right I first need to introduce the rest of my team: Russell Dilley, another design-minded programmer, Alex Andreadis, our primary 3D artist, and Ban Ngo, another artist (and impromptu sound designer).
After being innervated by the keynotes and hearing the Jam’s theme (Ouroboros, the symbol depicting a serpent eating its own tail), my team sped back to our computers and discussed what to do. We decided as per Harry Lee’s suggestion to separate for a few minutes and brainstorm, then to come together to discuss our ideas and see where we went from there.
My personal brainstorming process was going through the wiki article on Ouroboros and writing down the main themes as I saw them:
- The cycle of life and death
- The phoenix
- A “made by god” perfection
I also had a few rough gameplay thoughts, but nothing cohesive. We reformed soon after, and went around the group, each person quickly describing an idea and then the team tossing the idea around, combining it with other ideas or throwing it on the scrapheap.
While several interesting ideas were mentioned (a population management sim, a four player side-scroller with dynamic terrain, an action game on top of a 3d orb where the world moves instead of you), we gravitated towards this idea of a survival game where you’re a phoenix flying around an infinitely repeating world, burning it to cause regrowth to occur.
We worked on this concept for about an hour over dinner, adding to it, cutting unnecessary fluff and trying to break down the development tasks as clearly as possible. There was a final moment of hesitation as we hovered on the brink of development – the fear that the idea wasn’t going to work and we would have to go back to the drawing board weighed heavily on each of our minds. However, we finally decided to just go ahead and build a prototype, fooling ourselves into believing that if it didn’t work out we’d have plenty of time to try something else.
We divided the tasks generally as such:
- Russell would focus on the core gameplay, the player character and its movement. This would come to include the camera and game states.
- Alex would create the models, animate them, and create the effects.
- Ban would assist Alex where needed, while focusing on texturing and 2D work such as the HUD. Ban also took on audio during development, collecting and re-sampling a few key sound effects.
- I would set up the tiling system, the regrowing world and implement the majority of the assets that were being created by the artists.
The actual development of the game is kind of a blur already, so I’ll pick out a few moments that stand out in my memory:
While it initially seemed like a clever idea, using an engine for the first time during a Jam (in this case Unity) caused us a lot of unnecessary headaches. Unity seems like a great tool, but figuring out how to perform simple tasks and understanding its idiosyncrasies took up a lot of the time that we could have spent building the game. One key example of this was getting stuck for about an hour on loading an object dynamically through a script, until I found out that what I needed to do beforehand was create a “Resources” folder and put the file within that, after which the object would load fine.
The Tiling System
Getting the tile system working and tiling infinitely was exciting, particularly in that we could see up in the Scene view exactly how everything was working – as the player moves around, the tiles from one side of the square are instantly move over to the opposite side. We almost wanted to show the game off with the Scene and Game view side by side.
One particular point of contention on the Saturday was whether to leave the tiles as simple squares, or build in to the tiling system a connection manager that made sure all of the tiles connected in a more pleasing manner. I was initially against putting this in, due to worries about how much time it would take, but was gradually convinced by Alex and Ban that it would be worth it. It took up several nail-biting hours, but the feature made it in, and in the end I had to agree that the game looked way better for it.
Seeing the tile texture go in for the first time was pretty amazing. I think the game ended up looking fantastic, and a lot of that is to do with the style of the tile textures, which Ban told me is partly inspired by Pokemon and partly by Animal Crossing.
Animations & Effects
Many of the animations were put in as a last minute feature, so they had to be made very simply. During this process however, we figured out (or luckily discovered) ways to make them incredible effective at the same time. See below; when the grass is burnt it simply moves below the tile that it’s on, but from the surface, due to the layering of the fiery particle effects it actually looks like they’re being singed to nothingness from the bottom up.
My favourite part of the game is when the camera zooms in to/out from the tiny phoenix egg. It gives the game such a sense of scale, and the cyclic nature of returning to that state after every death really makes the theme resonate for me. I didn’t even realise that Russell was putting this feature in at the time, and it’s probably the part of our game that I’m the most proud of.
Never, ever make a game in 48 hours with a Phoenix in it. About halfway through the jam we discovered that we were spelling it wrong half the time, and even though I frantically rushed through our source files renaming everything, we still got caught up multiple times by trying to load a “PheonixScript” or trying to play a “PheonixSquawk”. Guh!
While the last couple of hours were stressful, we’d pushed the game to a point where it was playable, pretty, and potentially even fun. Notwithstanding a couple of minor bugs (such as the idle music being quieter each time the phoenix returns to the egg) or the fact that the average game takes about 3 minutes to play instead of the ideal 30 seconds, we were all pretty happy with the game, and even more so when people came around and seemed to be having a blast playing it.
We’re a mostly professional team, with three of the four of us having quite a bit of industry experience, and we were floored by the quality of the games produced during the jam by teams that as far as I know have little to none. I feel that the Melbourne independent scene is filled to the brim with creative, talented developers, and I can’t wait to see what they’re able to make in longer periods of time.
Even though this is a massive post, I feel like there’s heaps more stuff I’m missing out on. It was an awesome weekend filled with awesome people making awesome things, and I can’t wait for next year!