This is the first of a new type of post dedicated to the general game design lessons I’ve learned while working on my various projects. I’ll still bring in examples from my own projects or other people’s games to keep things interesting, but the focus will be on game development and design topics instead of the games themselves.

Perfecting Your Core Systems

In the last few weeks I’ve been working on a 3rd person shooter minigame for Starcraft Arcade called Station Six. I have a lot of lofty goals for the game. It’s a survival horror game, so I want scary enemies and events that help build and release tension. It’s also a game with a hidden traitor, so I want to create ways for the traitor to sabotage things without being discovered.

These goals are great to have, but it’s really tempting to let them become the focus of development too early on. Take my advice: start by working on the game’s core system, that is, whatever game element players will spend the most time interacting with. Don’t work on anything else until it’s just about perfect.

For Station Six the most fundamental actions are adjusting the camera, moving, and firing your gun. If those actions aren’t fun, it doesn’t matter how many scary enemies or fun weapons I put into the game… it won’t be a fun game.

I mostly stuck to this advice, but the one time I didn’t it came back to bite me pretty much immediately.

My first attempt at the game’s controls just didn’t work. I tried to use familiar Starcraft controls (right-click to move, A + left-click to fire), which makes sense for a Starcraft Arcade game, combined with 3rd person shooter controls (over the shoulder camera). It felt unnatural even to me and it was the first thing every play-tester complained about.

I decided at one point to take a break from these controls and start developing some of the survival horror features. The game takes place on a space station, so I built a UI for the control room which let you turn the station’s lights on and off among other things. Fun stuff.

Unfortunately, when I decided to toss out my bad controls in favor of normal 3rd person shooter controls (mouse to look around, left click to shoot, WASD keys to move) it made my control room UI completely obsolete. The new controls hid the mouse pointer because the mouse was used to turn the camera, but the control room UI needed the mouse pointer to click buttons.

They were fundamentally incompatible, so I had to scrap the control room UI and rebuild it from scratch.

So how can you tell when your core system is done? I read somewhere once (I wish I could remember where so I could put a link) that you’ll hit a point where you think “wow, this is actually pretty fun!” I reached this point once I had a simple system for spawning zombie-like enemies and a comfortable control scheme. It wasn’t much of a game yet, but I was running around gunning down zombies and it was a blast.