
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 usingprivate 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.