A couple of months ago I began working on a tactical RPG in my spare time. While I'm not ready to reveal details about the story or setting at the moment, I've finished a prototype of the tactical combat mode, and I'd like to talk about how that's come together. The prototype is fully playable, except that there's no artifical intelligence at the moment, so the player has to control both sides until I write some AI, which I'm not going to do until more of the design is locked down. I think I've come up with some cool twists on the tactical layer that will create compelling, varied gameplay challenges, especially once the story hooks start to get added in.
Let's start with some of the key pillars I'm aiming for:
- combat areas will be procedurally generated
- characters won't buy and equip weapons; instead, weapons will be scattered around the combat areas
- weapons/item locations will also be randomly generated, so you can play the same "level" many times but face a different tactical scenario every time
- decisions should always pose trade-offs; there should be no optimal strategy that will always win
- levels will be procedural, but all player actions will be deterministic - no dice rolls
- combat will be melee; there are no guns, crossbows, etc.
What does that all mean in practice? Let's take a look at a screenshot of what the prototype looks like at the moment and I'll explain the details. Keep in mind that all the art and user interface at the moment are just quickly thrown together placeholders. The goal for the prototype is to make the game fun and answer basic questions like "How many tiles should the grid have?" and "How much damage should attacks do?" So here's a sample layout.
So what's going on here? The green circles are "AI" characters and blue circles are the player's party. The current character is highlighted in orange, and they've pulled up an attack that's showing its range: red are tiles that are within range but have no valid target, green are enemies that could be attacked. The white boxes represent items/weapons that can be picked up (there were more when I generated the level but characters have equipped most of them in this screenshot).
The rest of the tiles represent a level layout, with the lightest tiles being the floor, the darkest tiles representing "tall" impassible terrain, and the mid-coloured tiles representing objects that are not floor tiles but are shorter than characters (ie. objects characters can see over). If you're familiar with games like XCom you can think of it as floor, medium cover, and tall cover, although since this is intended to be a melee game there's no cover system.
It might not look like much, but this area is intended to represent a pub. The bottom left and right areas are booths, in the middle of the room are tables, in the top left is a bar and bar counter, and the top right is a pool table and juke box.
Here's an example of how the procedural generation will work in practice: each combat area will be drawn from a template, which in this example is "a pub". There will be a whole bunch of possible pieces that make up a pub, like tables, chairs, entertainment, and so forth. When the level is created, it will choose from a selection of these pieces that go together, creating a layout that's unique to that particular combat encounter. It can be encoded so certain pieces only show up in certain places; for example, maybe a bar counter can only ever appear in the top left corner in order to ensure you don't wind up with a nonsensical layout that's just bar counters all over the place.
The goal of the system is to create constantly varying environments and challenges so that players go into each combat scenario facing something new. Once I start to bring the narrative components online those will be tied in too, so info can be fed into the level generator to line up with story beats. This should also enable me to create a game that still feels fresh to play after several hours without needing a whole team of people creating a large array of unique art assets.
So that's more or less the state of the prototype at the moment. All of the core systems are in place, like movement, attacking, items, level layouts, turn order management, and so forth. My main task right now is to add in all the abilities and items so I can start doing more thorough testing to see what works and what doesn't. Once the combat is closer to being done I'll start moving on to other parts of the game, like the hub area that the player will return to between quests, and building systems for narrative and dialogue.