UAT’s 2018 Summer Greenlight Game Jam

Over the weekend we participated in UAT’s 2018 Green Light Game Jam with our friends Donald Schepis, Brian Johnson, and Joe Keigher. The theme this time was “boundless”. We decided to create an online multiplayer hack n’ slash where there are “boundless” amounts of randomly-generated levels. Easy, right?

Friday

The first and most important step in any Game Jam is the planning! You need to know what you’re making, and you need to know where to can cut back. This was our plan:

The Whiteboard
We’d have a number of hand-built islands, and each island would have a number of “sockets”. “Structures” would be randomly dropped into these sockets. One of the structures was a Portal, which had to be powered using Energy gained by killing monsters. Other structures included enemy spawners, treasure chests, and decorative clutter. Meteors would start falling as time went on, which would push the players forward to power their portal and escape to the next island.

Once the game has been figured out you can start laying the groundwork. We set up a GitLab repo and created our basic project, and then dropped in our core plugins. One of the keys to a successful jam is to get the difficult stuff out of the way as soon as possible. For us, this meant getting all of the multiplayer logic squared away so we could focus on the gameplay. By Friday night we had the basics: you could join a random online game and “walk” around a randomly generated map. We also had the final islands blocked out using ProBuilder.

Saturday

Saturday saw the bulk of the mechanics and content added. It was very important to plan our mechanics and look ahead because certain systems needed to be in place before others. Our capsule man was replaced with a proper humanoid stand-in and locomotion and combat animations were added. During this time, a health system was also created. With animations and a health system in place, weapons could be implemented. We started with just melee weapons, but John asked for ranged weapons as well. This turned out to be a really good way to diversify the enemies later on. With weapons done we had two more things to add: you needed to be able to pick up weapons and health and energy, and you needed something to use those weapons on.

Luckily, Unity can now generate NavMesh at runtime. You can get this functionality by downloading some assets from Unity’s GitHub page. Our AI logic was conceptually really simple, but ended up taking a lot of time to get right. Our AI would have 4 states:

  1. Idle – wait around for someone to come along.
  2. Aggro – get into combat range with the target.
  3. Combat – move to a spot near the target, then face the target and attack.
  4. Flee – back away from the target, but continue to face them and attack.

The state chosen was based on the enemy’s distance to their target. All of the settings for the AI were stored in the weapon. This meant that if we gave a bow to a skeleton, it would act like an archer: staying our of range and running away when chased. If we gave the skeleton a sword, it would try and stay close to the player and dance around them. This worked out really well! Not only was our AI pretty aggressive, it was also fair: it would occasionally break combat to reposition, and you could push it around a little.

During this time we also saw some art assets brought in and the islands refined. One big thing that could have been improved is Jeff’s idea to dig the sockets into the terrain. Joe had to spend a lot of time slicing holes in the terrain for the sockets, which was not easy to do with ProBuilder. Ultimately, the holes are never seen 😢. It’s important to remember that this is just a Game Jam: you can let stuff clip and be ugly.

Joe's Islands
Ideally you finish Saturday night with everything mechanical done and you can dedicate all of Sunday to polish. Unfortunately, at 4AM we had to call it quits. We were almost done with our mechanics, but staying up any later would just come back to bite us.

Sunday

Judging was at 3:30PM, and we started back up at 9:30AM. We didn’t have a whole lot of time, so noon was chosen as our rally point. We’d hammer out the remaining mechanics and content, and then at noon we’d merge down. After that point we’d have the game completed, and could just focus on minor tweaks. We missed that deadline by almost 2 hours… When your brain is mush it gets kind of hard to hit targets like that.

At 1:45PM we were merged. Everything was done, and we just needed to test and polish. We found that our maps were far too large, so the most interesting maps were shrunk down while the other 5 were scrapped. Some bugs were squashed. The UI was refined. The final character and skeletons were added.

Our first build was done at 3:40PM, a few minutes after judging started. We lucked out here: the judges hadn’t come by and were in no hurry. If the judging style were done differently we’d have missed the deadline. With our initial build on the machines we could start getting people in to play and make a few hotfixes.

Judging

Judging went extremely well. There were about 8 teams of all skill levels. Each game had some kind of unique quality that made each and everyone fun to play.

People playing our game.
One thing we noticed was that the meteors didn’t really push the player. They weren’t very noticeable, and players were more than eager to move on to the next islands on their own once they knew they could. Another thing that could have been improved was the feedback. A lot of the audio didn’t get in or wasn’t noticeable, and it would have helped to have more UI to show interaction prompts and waypoints. We also could have had a spectator mode when the player dies, so dead players can still follow what’s happening in the game. In the future we should focus more on that kind of feedback so the player gets enough direction.

Mechanically, however, the game was rock solid! The online multiplayer was smooth and responsive. We never had a crash and only had one disconnect. We didn’t even have any bugs which is incredibly rare, not only for a Game Jam game but for an online one at that!

Accepting the award for Best Presentation
We went home with the “Best Presentation” award, a lot of new knowledge and practice, and another game to build down the line. Keep an eye out, we’re not done with this one yet!