This week started off slow by moving the unit data code into something a little more generic, allowing me to track the status of all player units across campaign and battles alike. In short, if you or an ally gets damaged in a battle, it'll carry across to future battles through the campaign.
Simple enough data stuff, and really not a lot to write home about.
My major task this week was to figure out how I was going to deliver campaign maps. My initial thinking on this was to hand make them, build them out in the editor and more or less manually assign the data for each connection, node and more. But the more I played that first campaign map (pictured above, left) the more I began to optimise my decisions and the less I felt like I was having to face new decisions, and that really didn't gel with the feeling I wanted for the player whilst going through a campaign.
A little aside on my approach to game design: I always design with an emotion in mind. I want the games look, feel, and structure to evoke a particular kind of feeling. In Unstoppable, that was simple: "HELLYEAH!". In Interloper it was all power fantasy, I didn't really care about difficulty as much as I did about reinforcing that idea of going against the odds and winning. In Exoloper I want you to really, really consider if violence is necessary and when. Your job is to push the colonial forces out of the system, but not at the expense of your own forces. A big component of that is to evoke the idea of cautiousness, and an optimised, pre-travelled route through a map is the bane of caution.
So I looked into procedural generation once more. I tried a handful of techniques I'd used in the past, scattering nodes randomly, grid placement and more, but none were reliably good looking nor could they give me a dataset that was easy to work with. So I decided to take the plunge and look at Voronoi generation. I'd toyed with this in the past but it all seemed a little too complex for me, but for whatever reason it clicked this time. I grabbed a library played with it, tweaked it and finally started building my own data structure that I could save + load easily on top of it.
I'm not the worlds most technical person, so I'm not going to pretend I really know whats going on under the hood here, but the end result is that I've got this cool map of polygons, their centres and corresponding edges. From a game design perspective it was as simple as placing nodes at the centres of these polygons, then using some systems I'd already written to join them together, this time just filtering those connections by adjacent edges to ensure there weren't any crossovers. Throw in some dice rolls for allowing multiple connections on particular nodes and we've got the system.
Immediately I began to see cool things crop up. Highly connected nodes looked like city centres, with branch nodes becoming rural as they got more remote. This is all stuff that I'll work on further later on, but for now there's a lot of possibility.
Anyway for the time being this is where it's at. It loads in a handful of tiles at varying probabilities, with special tiles for specific node types. I've also started work on biome generation, with the idea that I can blend them to allow for things like jungle biomes intersecting with a city, rural intersecting with water and more.
All of this has been fun. Almost makes me feel like a real programmer.
The rest of the week was mostly dedicated to fixing up some issues, adding reload mechanics to the battles, filling out more utility loot options (new reactors and engines) and building out better systems for delivering data to unit-parts.
Next week I plan on looking into map generation for battle maps. Maybe I'll do some more procedural generation there... maybe?