Thanks everyone for their kind comments. Making this entry was lots of fun. The static objects are vertical extrusions in up to 4 colours and use 40 data bytes each. The people are a cylindrical mesh extruded as spokes from the vertical axis, again in 4 colours and also use 40 bytes each (per animation frame). These data structures are prerendered as bill-boards which are then used in a painters algorithm drawing routine. This data and the map data is string encoded (5 chars to one Integer). Enemy AI is based on the A* algorithm using each ground square as a room with up to 4 portals.
I would like to make all citizen’s killed immediately respawn (offscreen) as a hostile. This would discourage indiscriminate firing in the early levels. After level 25 everyone’s hostile, so the only effect is to prevent the player clearing the level prior to looking for the end-of-level bloodstain square. The only problem is finding some more bytes (currently 4096), as I’ve pulled most of the available rabbits out of the hat!
I might experiment with rotating the controls 45 degrees, but this would require two keys to be pressed simultaneously to move in the game major axes, so might not be an improvement. Also, it would mess with the sliding logic, which needs controls in game axes, so this would need a mapping layer, which given the lack of space, isn’t likely.