LudumDare33 – Dead Code Post Mortem

Team Roster:

  • Jonathan Schrack : General code
  • Craig Herndon : Level Design
  • Ernest McCracken : AI
  • George Pence : 3D Modelling
  • Devitt Upkins : Animation Support
  • Jonathan Marlin : Music

I believe this was everyone’s first year participating in a Ludum Dare. The theme this year was “You are the monster.”

Brain Storm results:

  • homage to 80s slasher flicks: player must kill a certain amount of humans
    • film grain and vhs track lines
  • player is slow, but relentless killing machine
    • humans are faster than you and easily out run you
    • you have special abilities in the form of movie tropes
      • teleport if no one can see you
      • insta kill if sneak attach from behind
      • humans split up if there are more than 3
      • immobilize a single target for a short period of time
      • come back to life by killing
      • player could activate a “sonar” feature to temporarily highlight humans through walls
  • sci fi setting (we already had a ton of sci fi assets)
    • classic killer robot on space lab trope
  • procedurally generated levels

The Jam

Our team didn’t get together until about 9am Saturday morning after the competition started at 8pm Friday night. I fell into the role of team lead it seemed like, we divided up test and from there it was GO GO GO. The project progressed fine for the most part. I was working on the controller and animations for the player. I had never used Unity’s animation system before (up until now, everything on Sanity Razor was IK), and as such I ended up crash coursing through the animation system with Devitt.

The first hurdle we ran into was Saturday night. Craig and Devitt had spent all day working on the procedural generation engines. We had a few that Devitt had bought a while back from the Asset Store, and they were trying to use our SciFi assets with them. That and trying to get it to generate levels we liked, as they were always singular rooms connected together. THis would make the game all too linear. We thought this was bad, as the player was slow compared to the humans, as such we need multiple paths in order to enable the player to stalk the humans and sneak up on them. At the end of Saturday, we had nothing to show for it in the procedural generation area. The engines were just too specific for what we wanted. Sunday morning, we ended up ditching the idea completely, and decided to just work on a single level.

Meanwhile, George was working on creating a killer robot. We were unsure of the Blender->Unity process, so he started with RobotKyle as a template to work from. If you look closely around the legs, you can see very similar joints and structure, but otherwise, the rest of the body is unique. He decided to make a “Loader” robot. A robot designed for handling cargo. He then fractured the skull to reveal copper circuitry covered in scorch marks, and that’s how our “story” was made. An accident in the loading bay caused the bot to go haywire and start murdering people. He even had a wicked piece of broken conduit that he would use to kill people with.

Ernest spent his time creating the AI the humans would use. They were pretty decent, in that they would amble around, run if they saw a player, hide at the nearest designated “hiding point”, and group up if they found another human. Unfortunately we ran into problems with pathfinding, as humans would try and run through walls to get to the other side. I had built some simple code to detect if the player was “seen” by a human so it would deactivate the player’s abilities. We then tried to integrate the AI’s ability to see the player to replace my code, as it would simplify things.

We told Jonathan Marlin to listen to Lazerhawk and the Halloween theme. He came up with several themes for the main menu, game over, respawn, and murder. You can check out the theme song on his Soundcloud here. He also has the rest of the themes posted there as well.

The Deadline

Unfortunately, we ran out of time. We started late, and we all had day jobs Monday morning, so this was more of a 54 hour game jam than a 72 hour jam for us. Sadly, lots of features didn’t make it in the game, and tons of glitches abound.

  • Only the main theme that Jonathan Marlin created made it in the game, we ran out of time to implement the others
  • The level was hastily finished, and ended up being fairly linear, which is what we were trying to avoid.
  • The humans have guns and will attack the player, but they have no animations for it.
  • We wanted the AI to be oblivious to the player unless they saw him kill a person or another human warned them. Didn’t even time to start coding that.
  • Humans could somehow see the player across the level or through walls, so we couldn’t use the AI’s line of sight, forcing us to rely on our rudimentary system.
  • We didn’t get the “stun with fear” ability in.
  • The cool weapon George made didn’t make it in. (To be fair, he forgot to send it to us. ;P )
  • All the humans look the same.
  • Humans were supposed to inspect the player’s corpse if he died, allowing the player to respawn by killing them. That chunk of AI code never made it in, so now when a player respawns, a human teleports to his location for sacrifice.
  • The player’s animation needed to be tweaked, otherwise he had a very “dainty” run.
  • The sonar feature never made it in.

We did have a single post release patch, as a lot of the doorways were missing colliders. The player would just fall right out of the level, yet somehow the AI could easily walk/run across them. Not sure about that one.

One thing we found out too late, is that we are actually allow to keep working and pushing out updates to fix bugs and finish features. We’re not allowed to add in or develop new features. We erroneously thought that the only patch updates you were allowed to push out were to fix game breaking bugs. Lesson learned there!

You can find our Ludum Dare entry at http://ludumdare.com/compo/ludum-dare-33/?action=preview&uid=55960

You can find the source code at https://github.com/jmschrack/LudumDare33 with the main branch.

We do intend to make a 1.1 version with the glitches fixed, and missing features added soon!

Categories: Dev Blog,