Star Cadre: Combat Class: The Process
Tuesday, 6th August 2024
Unlike Barren Planet, I decided not to use a CWG-style reusable library for the core of the game. Barren Planet was an iteration of a game I'd done many times before, so I knew the common elements that would carry over from one game to another. But the tactical combat genre is new to me. I don't know what elements of Star Cadre: Combat Class are specific to this game and what will be reused, so in Star Cadre: Combat Class I have integrated the squad combat elements into the game. If I write another tactical combat game, I'll just have to extract these elements and build them into the new game. That's how the predecessors to Barren Planet were written, and although it's not as neat as having a game engine I can build new projects around, I know the process works.
There were a couple of libraries I knew would be useful, though, the first of which was the level map generator: LevelMap. This builds upon the level generation of Ossuary, and I have written about it before. The so-called dungeon maps generated by this library are useful not only for fantasy dungeon crawlers, but for some procedurally-generated sci-fi environments too. It could be useful for natural settings like forests or caves too; all you need is the right graphics to represent the environment. Unlike the Ossuary generator, LevelMap is able to generate data for quickly connecting textures, allowing for connected walls, and continuous floors and void spaces.
Another useful library is the name generator. Like LevelMap it has an equally imaginative name: NameLib. I've discussed the name generator before: it reads in a document in some language or other to discern patterns of vowels and consonants, and saves that letter data for use during the name generation process. The name generator itself, used in the game, uses this data to generate names that sound reasonably similar to the words in the original language.
One element of the development process that differs from my earlier games is that I now compile the game for Linux. Linux has much better tools for debugging, detecting memory leaks and other memory errors that DOS debuggers might not catch. The Linux version of the game isn't of release quality and therefore hasn't been published, but it does help me more easily identify and iron out bugs in the DOS version. Linux development required an improved version of CGALIB, to target the X screen instead of CGA hardware, and into this improved CGALIB I've integrated the keyboard and PC speaker libraries.
After all these other developments, that game itself was a simple affair. I had created a full design document back in 2020, so I didn't have to wrestle with gameplay concepts at the same time as implementation. In fact Star Cadre: Combat Class is probably one of the most thoroughly-designed games I've released so far. That definitely helped, with most of the implementation work taking place four years after the project's inception!
Testing went well. As I mentioned in the Barren Planet dev diary, I decided to contact testers individually to see how they were getting on, rather than relying on round-robin emails and DMs. This resulted in much better feedback about the game and its problems.
Comments