Tuesday, August 21, 2018

UE4 Summer Jam 2018: Albina (VR Category Winner!)

A while back we did an informal, air-quotes "game jam" in my basement. It went well, and we had a ton of fun, so we decided to enter a "real" jam over the summer. We picked the UE4 Summer Jam, since we happen to be using UE4 anyway. The theme was `Well that escalated quickly`, and what's amazing to me is that we (and by we I mean Barak) had the core game idea an hour before the theme announcement. We were sitting around, setting up PCs and brainstorming random directions to go, and Barak pitched this great idea for a high pressure room-escape game. You play as one of the dogs sent in to space by the Soviet Union, trying to keep your spaceship from falling apart while you simultaneously try to open the hatch and escape.

We all loved the idea, but we sort of dismissed it. It was super specific, so we thought it was unlikely to fit the theme; A real shame, since it was a cool concept.

The announcement came though, and we all burst out laughing. We tried to sit and workshop some other ideas, but we knew pretty quickly which one was the winner, and we got to work. The game is called Albina, and other than some major packaging bugs in the last 8 hours of the jam, I'm pretty proud of it:

first-person view of the space capsule
view of one puzzle with the power shut off
alternate angle of the space capsule
some in-game hints for a puzzle

The setup is this: You play as Albina, the soon-to-be second dog in space. When the first (Laika) doesn't return, you realize it's a one way trip. Now you have to get the parachute and escape the capsule before it leaves the atmosphere.

In essence, it's an escape room, with a bunch of connected puzzles that you can complete in any order. You could work backwards from the goal, and try to figure out what you would need to open the hatch (You see it's connected to a keypad, but the keypad doesn't have power). Alternatively, you could just start using things that you find (you've got a hammer, now what objects are hammer-able?).

The twist on the escape room genre is that as you solve puzzles, things start going wrong. The radiator springs a leak, or the power cuts off, and you must solve those problems before they kill you. As you continue, the number of problems... well it escalates. There's a lot of escalation in fact; The rocket escalates, your heart rate escalates, the number of concurrent alarm sounds escalates, and the list goes on.

Here's the video we submitted as part of the jam. It's not the most polished, for obvious reasons, but it shows a bit of the gameplay:

Like most of them, this was a super fun project! As our first "real" game jam, we made a lot of mistakes, most of which didn't reveal themselves until the final day. We entered the final stretch only to find that 8+ hours of debugging the "Simon Says" logic still hadn't fixed it, packaging the game broke all UI functionality, and sometimes the game would just kill you for no reason. We almost couldn't even submit the game, because of two very strange problems in the packaged build:

  1. We somehow corrupted a couple of pretty important blueprint assets (primarily the GameState blueprint). This was totally our fault, because in our *incredible* wisdom, we didn't set up proper source control. Instead, we shuffled project files around a Google Drive folder, and manually ran the asset migration tool to move blueprints around. I don't recommend this strategy, just FYI. Whatever the problem was, it caused some packaging errors related to paths that didn't get normalized, and I had to spend a couple of hours just trying to get UE4 to output an executable. Oops.
  2.  There are some quirks with UE4's Widget Interaction Component, which is generally the way to handle menus in VR - you use a laser pointer. I personally prefer to use physical buttons and levers instead, when possible, but in a game jam setting there isn't always time for that. For some reason in the packaged build, the enable/disable rules for widget components weren't being respected, so you couldn't actually press any of the menu buttons. After 4 or 5 hours of trying to fix this, we settled on the clean and extremely non-hacky solution of teleporting all the menus that weren't interactable a mile underground until the player needed to see them. Hey, if it works it works.

Because of these slowdowns, we just had to strip some things out. I expected to be leaving features unimplemented, but in this case it hurt even more because we had to cut features that were already implemented. We had to scrap the seated mode, pause menu, and victory/loss UI elements, which is just a shame. Technically to beat the game you don't even need the parachute, because the "you jumped out without a chute" UI had to be cut. Oh and there's only 4 rounds of Simon Says instead of 5 (it's complicated).

Regardless, we're pretty proud of the game. The core logic, and all of the little polish elements really came together in the end, and it all makes for a ton of chaotic fun. If you'd like to play it, you'll need a VR capable Windows machine, and you can check it out on my Itch.io page.

Oh, and I almost forgot to mention - the game won the VR/AR category, which totally blew us away! The hurricane here in NC delayed the results a bit, so we almost forgot to even check! I guess it's not exactly an Oscar, especially since there were only around 15 VR submissions, but for a first entry I'm really pleased. We cheered for a bit after getting the results, and then sort of said "Huh, yeah, so I guess we just uh, go back to doing homework now". And then that's what we did.