Well, I finally did it. After many months of talking about it, I finally went into a game jam and came out the other side. The November 2015 Epic Game Jam, to be specific! It’s really the first time I’ve been serious about a game jam. Last summer, I gave a half-hearted attempt on the first day of one, but wasn’t really into it. I didn’t have the confidence. This time, I did, and it was sooooo worth it!
The theme for the game jam was ‘Desperate Diseases Require Dangerous Remedies,’ which I found out later in the Epic forums is a Hippocrates quote used by Guy Fawkes. Of course, the game that immediately sprung to mind before I knew that was one of a white blood cell destroying diseased cells. It seemed like an obvious one that others would be doing as well, but I had a vision of it from the start, and decided that finishing the game jam was more important than trying to be the most unique entry. So I sat down and, armed with a sheet of paper, drew what I was envisioning: a motorized white blood cell shooting diseased cells in a red space. So basically, a space shooter with a red tint. With that, I sat down and created a flying mechanic with a basic sphere that had an arrow sticking out the front. All I wanted to do was nail my flying mechanic.
Then I created an enemy using a colored sphere that I scaled to be more oblong. I didn’t think about AI or movement for it, I just wanted it to be there, and I was going to award points based upon the types of cells destroyed in a certain time. I was immediately bored. I liked the idea, but having it in wide-open space wasn’t interesting, and it really lowered the challenge level. So then came the idea of setting it within a textured cardiovascular system. I knew I couldn’t model out the system myself in the time I had, but I wanted to get something in place quickly. My previously-purchased ‘Underworld’ environment from the Unreal Marketplace sprung to mind, so I pulled it into the game and set about creating a circulation structure. The idea was now that the player would enter at one spot, and have to get through the system to the far side in a certain amount of time, with added points based upon the cells they destroyed. Except that I had no idea what the time limit should be, so for the time being, I just decided to track how long it took them and ignore the scoring system. That could be created later.
I had already decided to use my favorite weapons pack to get my weapon effects, and so then created my white blood cell model using Aartform Curvy 3D, along with a basic diseased cell. I decided to create three powerups as well, one for health, one for ammo, and one for shield energy. My idea was that these diseased cells, one they detected the player, would rush the player to try and destroy them. The player would have the option of using shields to stave off damage, but the shield energy would drop by the second, so it wasn’t a long-lasting solution. I then grabbed a previously-purchased Forcefield package and pulled it in. By the end of the first night, I had a playable level that used a different material set and colors for the Underworld modules so that it looked more organic, with my white blood cell flying around, and a shield system that looked good, but didn’t do anything yet.
The next day I jumped back in, and hit my first major roadblock: I hadn’t realized there was no way to use the AI for movement in 3D! So I researched and researched, and was burning through a lot of time, worried I’d have to drop my idea when the mental light came on. I realized I didn’t have to make the AI too complex. All I had to do was determine the vector to get to my player, check to see if the length was within a given range, then add an impulse to the diseased cell in that direction. After that, things became a lot clearer to me, though I didn’t end up with the diseased cells working as well as I’d wanted.
From that point, I added a second diseased cell, that I made more powerful, as well as a standard blood cell that wouldn’t act as an enemy, but just a psuedo-roadblock from a physics impact perspective. Things were moving well, and it was then that I decided to texture the walls differently to make them seem more ‘bloody’ and liquid-covered. For this I used the C-Media Advanced Materials 1 package. I made an instance of the Flat Opaque Water texture, modified the colors and properties, then used that on the Underworld modules. I love the effect I ended up with. At that point, I was getting tired and decided to spend the night relaxing with my daughters watching anime.
I didn’t get much done on Saturday. I spent most of the day doing stuff with my daughters, and tweaking the ‘AI’ for the diseased cells. It was then that I came up with the mechanic for spawning the cells, based upon the difficulty level, and also integrated the Quality Menu package from the marketplace, to ensure I had video and audio controls in place, in case I ran out of time. When Saturday ended, I was further along, but realized I might not have enough time to do everything I wanted to.
On Sunday, the final day, I had a more significant issue crop up. I was getting an ‘UNKNOWN_ERROR’ failure whenever I would try to cook or package the game. I could play it without issue in a standalone game launched from the Play button, but it just wouldn’t package. I spent a large part of my day trying to troubleshoot it, and was ready to give up on the jam, when a memory error caused Windows 10 to crash and reboot. When it came back up, I checked to ensure my project was correct, then attempted to build it again. It finally built, but only in a Development build. I couldn’t get it to generate a shipping build at all. Still – a development build would work if nothing else. I’d lost a LOT of time though. I decided I needed to focus a bit on polish and lighting.
I was really running low on time by then – only about two hours left. So I focused on my title screen and a main menu, as well as lighting. I SUCK at lighting. I really do. I just don’t get how it all fits together, and nothing was looking good. My white blood cell was grey, my enemies looked greyish and dull despite having colorful textures, and my powerups didn’t show up well. So I quickly updated all of the materials to have emissive colors and did some tweaking, which helped, but not as much as I’d hoped. At that point, I was out of time. So I packaged and posted it, and called it ‘done’ for the night. I was really nervous about the post-submission playthroughs, but there wasn’t much more to do at that time.
I was very happily surprised when the playthroughs provided positive feedback. The slowness stood out, but I expected that, since I hadn’t truly implemented the scoring system and constraints I had planned. The feedback did spark a determination to finish my original vision for the game, so that’s what I’m going to do, and then try putting it up on Steam Greenlight!
So what did I learn from the experience? First off, that if I failed to submit a game, it would have been disappointing, but not nearly as much as not trying would have been. Secondly, there are some external tools such as Substance Painter that I REALLy need to spend more time with before the next jam. Mostly, I learned that it’s okay to learn on the fly – I like doing that, but don’t get hung up for very long chasing down one way of doing something. Start brainstorming multiple approaches as soon as you discover an issue.
I’m really looking forward to the next game jam. I hope I see you participate as well!