Continuing in the vein of my last post on turn-based combat, I wanted to go a bit deeper into the feature that generated more questions and concerns than any of the others. I made the statement that nothing in the combat scene would be determined by a random number generator. I made this decision after playing an older RPG and losing a fight by just a few hit points. I went back and the played the fight in the exact same way and ended up winning. This got me thinking about why we use random numbers in these types of games. I want to detail some of the variables that will go into the combat system to give it more depth, but first some history. For those who only want the details, you can skip right to them.
Nothing is more frustrating than being punished for something out of your control. Over a large enough sample pool, the average may be a good experience, but too often have I been on the bad end of a particularly terrible streak of luck. When I play an action game and I miss an attack, it doesn’t quite sting as bad. Sure I missed, and it was chance that the enemy moved out of my attack area at the last second and there was nothing I could do about it, but it didn’t feel that way. I feel like I can learn from that type of failure; next time I’ll attack earlier, or get closer, or something. When I lose to a dice roll it just seems wasted, there is nothing to learn from it. It’s the same reason that slot machine mini games only hold my attention for a few seconds.
Why then do we continue to use random numbers to augment combat? The added excitement is definitely a good thing, and when every processor cycle had five things competing for it it was the best way we could add this element. Times have changed quite a bit since then, and while a lot of the focus in the gaming world was on graphics, there has been little work toward improving the underlying systems that this random number is filling in for.
There are a lot of factors that go into why somebody might miss an attack, or be able to dodge it. Most of the time, someone with proper training doesn’t miss an attack against a stationary target, unless they are tired or distracted. We can model those things though, tracking fatigue and storing what the character is focused on. Sounds or other factors might distract him, or his fatigue might limit his effective range. Why then are there no (or at most very few) games that take these things into account?
I think the answer to that question has a two-part answer. The first part is that players are accustomed to the random chance system. We’ve all seen it before, and for all of its flaws we as players have accepted it. If it isn’t broke, why bother fixing it? The second part is that adding a multitude of other variables for players to manage can quickly turn the game into an exercise in managing spreadsheets instead of just playing the game. Some games have done this successfully, but that tends to be the focus of the game, and the gameplay quickly becomes secondary.
After pulling apart this aspect of the standard turn-based system, I decided that it was worth trying to improve, but it had to be done right. Ideally, the player wouldn’t even notice this was all going on under the hood unless they dove into it; it would seem random to them. If the end result of the innovation is the same as the status quo, why bother then? A system like this confers a few significant benefits that are too appealing to pass up.
- Combat is deterministic. Basically what this means is that for the same exact fight (entities, positions, equipment, etc all equal), and the same player inputs, the fight will be the exact same. This makes for easy replay systems, which can give players quick feedback on what they did wrong in a fight, or let them jump into the middle of a recorded fight to try different strategies.
- More options for skills and effects. When your chance to block is determined by your level of focus, what direction you are facing, which hand has your shield and the direction the attack is coming from, altering any one of those things can affect it. If each of those things then affects four other things, effects will feel more natural, and the skills can have huge strategic potential just by modifying one of those behaviors.
- Higher skill ceilings. In the older rpg games there was very little inside of a fight that the player could manipulate. This meant that once you looked up the right setup for a fight, levels, gear and job settings where applicable, everyone was on the same page. Difficulty was added by way of hit points, and it could all be overcome by grinding. With a finer grain of detail, a novice can play the game through on the normal difficulty and be fine, but a better AI can challenge players to gain a deeper understanding of the system for a better on-the-fly strategy.
Equipped with an understanding of the system I want to create, and the goals I want to accomplish by doing so, I have outlined the rules for creating a turn-based (sort of) combat system with no random elements. I have only implemented some of these rules so far, but I already find the combat to be much more engaging.
- All characters are assumed to always hit. At a base level, all attacks will hit their target. There are no critical hits, and misses are assumed to be the result of the target actively dodging, blocking or parrying, or simply moving out of the way of the attack.
- Avoidance is based on time. To avoid an attack, a character must: see it coming (in their field of view), react in time (reaction time is fast enough to do anything before the attack finishes after they notice it), have enough time left over to perform the action (dodge/parry/block time is less than the time left before the attack finishes, but after they react to it), and not be otherwise occupied (in mid swing, resting, or recovering from an action).
- Game actions are higher-level concepts. You issue commands to engage, not attack. Some characters may have skills that let you attack with no regard for personal safety, but for the most part they will keep their target engaged but focus on survival and only attacking when they see an opportunity. This means combat will be as much about creating openings as taking advantage of them. This also means that the characters will need to work together as much as possible to do so.
- Game actions focus on variety over power. As you progress in the game, your skills will give you more ways to manipulate the battlefield, instead of letting you dish out damage in greater numbers. A young wolf doesn’t stop being a challenge because you can kill him in one hit, rather it becomes trivial to knock it off balance and keep it that way. This isn’t directly related to not having random numbers, but since the player won’t gain a greater chance to hit as time goes on, this gives them a way to feel like they are progressing and growing more powerful.
- All characters have a short-term energy gauge. Again, not a direct result of removing random numbers, but a necessary tool to prevent stalemates in the system. Two characters can only keep each other engaged for so long before one of them has to stop and rest to regain energy. This forces the system to create those openings and keep combat from getting stale.
These rules give us a system that hopefully gives the player greater strategic options without requiring in-depth knowledge to get started. If you get caught off-guard by an archer that your characters couldn’t see in the darkness, that’s no different to the novice player than being on the receiving end of a critical hit. As long as the actions are built properly, a novice player can just spam the engage command and the characters will handle their targets as best as they can, and will be no different than holding the ‘A’ button to spam attacks in a Final Fantasy game. Even with that style of play, at least you get the replay system.