Project A Part 1: Retrospective

I’ve started working on another game project. Before I dive into it I want to take a look back at how I got to this point.

I’ve been working for the past five years—in one way or another—on a post- apocalyptic game of some kind. Work on it started when I was still running Linux as a daily driver on my old HP Pavillion laptop. I wanted a Dwarf Fortress-like simulator in the style of text-based Roguelikes. The year before I started working on it, I had actually managed to “complete” my first game: a seven day challenge with items, randomly generated floors, enemies with localized body part damage, and a not that bad interface. It was called Towerkrieg.

Towerkrieg, my first real attempt at a game.

I was happy that I was able to pull enough SDL and C++ knowledge together to make it happen. It allowed me to check my perfectionism at the door and make something that a player could actually interact with. Five years later, and I only conceivably made one other thing that a player could conceivably enjoy. It was a Flash game with isometric tiles which I worked on with a member of the forums. I don’t remember why I chose this theme, but the player was a hackey sack making its way through an office building, shooting security guards who—being pinballs for some reason—would then bounce all over the walls at high speed while constantly firing at you. I called it Bearings and Loan.

Bearings and Loan, a Flash game I made for a game competition.

I drew all those sprites, and all the isometric tile pieces. I was incredibly proud of myself.

After all that, I decided I needed to take it a step further. I wanted to make a deeper roguelike, something with real skills, real loot, real monsters and something worthwhile and interesting.

Vagrant NG, written in Lisp using the libtcod library.

This is Vagrant NG, the first iteration of the game I tried to put together. It was in Lisp, and it used the libtcod library.

Vagrant was the project I worked on for five years. It took all kinds of forms, from a console game written in Lisp, to a 3D game written in Python, to a 2D top-down action RPG. At the end of five years, I didn’t have much to show for it. The game was never fully written, never released, never shared. The only thing I have is a bunch of half-finished codebases and a handful of lessons I’m applying to my next project.

My next hobby game, Project A, is hopefully going to show the effect of all of these learned lessons.

My goal is to get as quickly as possible to a point where the player can interact with the game in a way that is fun. Everything else is secondary.

Many times over the past five years I’ve gotten bogged down in the details of writing my own game engine, or trying to balance a half-finished procedural generation engine, instead of being happy with the results at a high level. The project was always incredibly ambitious, and the fact I never made consistent progress shouldn’t at all be surprising.

So here’s Project A. This is what it looked like a few weeks ago.

Starting over from scratch.

The simplest possible thing that could be possibly work, I started off with Slick2D and a fairly mundane Code Page 437 tileset off of the Dwarf Fortress wiki. I wanted to get something on the screen as quickly as possible, so I built a text panel which would display characters with a given foreground and background color, and which could be told to take up a rectangle on the screen.

With that, I’ve come all the way back around to a simple ASCII-style game UI.

I’ve made more progress than that in the past few weeks, but that’s a good place to stop for the time being. Hopefully this will put me in the right mindset to continue describing some of the work I’ve been doing.