In this entry, I’ll be going over what my new project is, how it started, and how development has progressed in recent memory (screwups included).
The Elevator Pitch
The game is called DEBASER. It is my attempt at creating a first-person version of Hotline Miami, one of my favorite games of all time. I want to make a brutal FPS with a unique focus on precision and speed. The goal of the game is less to beat the level, but to get the fastest and most stylish play-through.
DEBASER’s development started with a 2019 game jam submission called Camera Comrade. In it, you play as a soviet operative in the cold war, tasked with infiltrating the CIA and destroying their coffee machine. It featured a primitive stealth / hiding system, combat, parkour mechanics, throwable cameras, and a cute aesthetic. It was a lot of fun to work on, and a great way to learn my way around Unity. DEBASER is the result of many iterations on Camera Comrade over the past year.
Camera Comrade’s enemy AI was based on a three-state Finite State Machine: Patrol, Search, Attack. It was simple enough for a throwaway game jam submission, but for DEBASER I needed a system that scaled better. I’ve moved to Goal Oriented Action Planning (GOAP). With GOAP, instead of spending exponential time on writing the transition function, I can simply specify the prioritized goals and possible actions of the agent and have it automatically generate a plan. There’s a great paper on this system by the developers of F.E.A.R. that is definitely worth checking out. Suffice it to say that if you need an agile way to create game AI, GOAP is the way to go.
Often during game development I find myself sidetracked by cool technologies. Last month, that sidetrack was Inverse Kinematics. It all started with this GDC talk by Ubisoft showing their full body procedural animation using “IK rigs.” The system was so mindblowing to me that I spent weeks of precious development time diving into talks, papers, videos, and interviewing experts. It took me weeks of prototyping to finally realize that the system I was building was just thinly veiled procrastination, a fool’s errand. In my haze, I had forgotten the real goal: making the damn game. So, with sadness, I scrapped my IK prototype and just downloaded FinalIK by Root Motion. For $90 I now never have to worry about IK again. Thank god.
Honestly, at this point I have no idea where the graphics are going. I wanted a simple aesthetic like Super Hot, but instead I got sucked into substance abuse. Or rather, Substance Designer, a great piece of software for node-based 3D material creation. Even as a relative noob, I’d say I’ve managed to create some damn-good visuals so far. However, this comes with a problem: the current subway level featured in the video took me FOREVER to create. I feel that while I like the look of it, I won’t be able to make materials fast enough if the fidelity is this high. In the future I must move towards minimalism, so I don’t find myself stuck doing digital art all day instead of making the game.
The biggest change I’ve made to Camera Comrade is that the enemies are no longer capsules, but real men! It took many painful iterations to get to my current system of animation. First I manually rigged / animated the enemies with Unity’s builtin animator, which fell apart quickly as I realized I’m not an animator. Then I used slightly-incompatible unity assets that did not play nice with my modifications. I then heard about Mixamo, a tool that takes in arbitrary humanoid meshes, and returns a consistent set of royalty free animations! I was blown away by the quality and quantity of animations on the site. It took a little bit of finagling to get Mixamo to work with Unity, but once it did the efforts were well worth it.
Another notable change is that I’m using blender to create levels. It was tricky at first, but now that I’ve gotten the hang of it I see the advantages. It’s definitely easier to design levels with an established modelling tool, rather than with ProBuilder. Blender allows me to create pipes, fix UV maps, and add procedural modifiers like Bevels, which make the scene more finessed while keeping editing simple. On top of that, the materials work the same as in Unity, so importing is a breeze. Switching to blender has been the best change I’ve made so far.
My goal for the next devlog is to have refined combat mechanics, and a working level. Given the COVID-19 situation, college will be online for me for the remainder of the semester. The silver lining is that, pandemic willing, I should be able to make serious progress on DEBASER. Stay tuned.