SYSADMIN Post-Mortem

SYSADMIN is a Tower-Defense game controlled entirely through a fake command prompt, by typing arbitrary commands.  The goal of the game was to create a tense, unwinnable scenario inspired by classic Cyberpunk tropes.  I was unable to complete the game in a satisfactory manner within my 24 hour time limit (3 days @ 8 Hours a day).

I went into SYSADMIN hoping to create a couple of systems I had never dealt with before.  Primarily, I had never made a game that only steps forward when triggered (see traditional Roguelikes and Match-3s).  This kind of game can lead to increased tension and awareness of the consequences of your actions - you act, everything else reacts.  Another new system for me was string manipulation regarding the text parser in the game.  I was told to avoid strings once, so I do that.

What Went Right

The entire command prompt system, from input to output, is a nifty little thing.  I wrote some basic functions likeprocessor.writeLine(string txt, Color c) which would destroy text at the beginning of the output text mesh, and add a new line preceded with inline styling for the color.  because unity deals with colors as floats from 0.0f to 1.0f, this required converting it to hex X2 (00-ff), as that is what Toolkit 2D uses for inline styling. 

 I use some arbitrary, basic delimiters to cut apart a long input string (“ui path 44”) into an array of strings using
private char[] delimiterChars = { ' ', ',', '.', ':', '\t' };
string[] split = command.Split(delimiterChars);
And then i referenced a dictionary with string keys and command enum values.  casting the input to lowercase would ensure that input like “SpaWn” would still return commands.CREATE given the following dictionary

private Dictionary<string,commands> parseCommand = new Dictionary<string, commands>()
{
{"info", commands.INFO },
{"spawn", commands.CREATE},
};

What Went Wrong 

By the end of the first day, I had completed the text parser and a basic grid system.  I knew I wouldn’t have time to implement everything I wanted.  I rushed through the pathfinding system, Hacker and ICE behaviours.  these are all handled separately and clumsily, making a function like “check each square around this turret for a hacker, deal 1 damage” an honest nightmare to write.  Obviously I should have planned and executed the ‘node’ system better, probably using an array of nodes that kept references to adjacent nodes.  a node would be a custom class that kept track of what was occupying the node, its pathfinding weight, etc.

What Happens Now

Well, SYSADMIN is a pretty fun technical thing, but the game is abysmal.  I probably won’t release a build of it until i rewrite the entire node system, which ties into nearly every aspect of the codebase.  Given that as of this writing (19/12/2013) my free time is occupied by Star Duck and Huskerball, I can’t see it happening.  It is probably the most interesting (to me) jam game I’ve made since European Rainbow Training, and pursuing my original vision holds a definite allure.





This article was updated on

Related post