Struggle is a game project we’re currently moonlighting the development of. It’s a turn-based strategy game that pairs a procedurally generated campaign with similarly generated encounters. It’s being built in Unity, with myself filling the roles of game design, programming and feature-creeper, while Hong will be busying herself with all art, animation and effects.
At present, here’s what’s been built so far:
The campaign layer currently takes place in a virtual environment, specifically what looks like an old computer with a CRT monitor (remember those?) and a simple menu interface masquerading as an operating system. Players begin with an email from one of their starting operatives, and a bit of cash.
Current campaign features:
- Messages screen listing messages/notifications sent to the player by their troops
- Roster screen listing the player’s troops, with a detail screen showing an individual troop’s statistics
- Recruitment screen that presents a pool of procedurally-generated Englishmen the player can hire, provided they have the cash
- Operations screen that lists encounters the player can embark upon, after selecting the troops they’d like to send
The encounters (combat missions) are where most of the (non-accounting related) excitement occurs, with levels generated at runtime by code (although not procedural yet, but completely tile-based and constructed through a multidimensional array).
As for actual gameplay:
- Unit selection, movement and a TimeUnits system
- A simple ranged combat system that calculates chance-to-hit based on distance and cover modifiers
- A cover system that increases shot difficulty by 30% when firing at units in cover. To flank a combatant and negate their cover, the shooter must be firing from an angle shallower than 45’
- Enemy AI that chases enemies it saw running in-and-out of visibility, investigates the source of gunshots it hears, seeks cover to fire at targets from and prioritises targets to prefer targets that are close, not protected behind cover or are flanking them
- Simple annihilation win condition that rewards the victorious player with a few hundred pounds depending on the difficulty rating of the encounter (which determines the number of enemies spawned) and returns them, victorious, to the campaign
Perhaps the biggest factor in the way I’ve developed Struggle as opposed to my previous prototypes is the fact that, this time around, saving and restoring encounters and campaigns is critical. This means maintaining serializable models that can recreate an encounter or campaign.
Presently there’s a ‘continue’ option on the game’s main menu, that restores your last save point – be it a campaign or an encounter, and a separate ‘load’ screen to load or delete previous saves. At the moment saved games are stored in XML.
The system I’m working on right now is level generation. Specifically, the procedural generation of levels that factor environment themes, required ‘target rooms’ catering for different types of missions, such as burglaries, rescue operations, assassinations and our old friend sabotage.
This will be a huge system to refine, it’ll probably be BSP-tree based, but it’ll factor in a few new exciting features like locked/unlocked doors, carryable ‘loot bags’ and enemy reinforcement points.