So, I’m writing a game. I may never finish it but I’ve started. One component of the game requires combat resolution so I’ve been thinking about how it should be done.
I played RPGs for, well, decades. The real pencil and paper ones. With dice. I’ve played a lot of them. D&D, Paranoia, Cyberpunk, Cthulu, Robotech…so I have some experience with multiple combat systems that rely on character attributes, skills and an element of luck.
The game I am creating contains an element of combat, but that is not the main focus for user interaction. Instead, as I currently envision the game, combat is an entirely automated affair that is performed by the system and the results presented to the user.
To make it easy on myself I am trying to start with as few variables as possible and a very simple world. Here are the constraints I’m currently working under when trying to design the combat system.
Whilst I am limiting things here to make it easier to reason about we have a computer to do the hard work so we don’t have to worry about the actual calculations being too complex for a user to understand or too onerous to perform over and over again.
The combat will be performed in an arena of sorts so we do not have to deal with complex environments, nor will we think about distance or facing. We will assume a very simple cage fight where you can be on someone at will, and there is nowhere to run and hide.
For now we will also only consider a fight with two combatants.
Starting simply we will ignore skills for now and just have our combatants brawl with each other. The only things that can influence fighting will be their physical attributes and a random factor.
The attributes we will work with for now are as follows. All attributes are integer values between 1 and 100 inclusive.
The amount of force that can be brought to bear.
How accurately the fighter can direct their body and react to their environment.
The amount of natural protection their physique provides to ignore damage.
Here are the major things I want in the final system.
All the reasonable consequences of a fighter’s attributes should affect their ability to fight.
The consequences of some attributes are pretty obvious whilst others may not be so. A larger fighter for example may be easier to hit by opponents, but would also imply that the fighter could take more damage.
Whilst I’m starting with a small number of attributes this should be easy but I can see that some calculations could become quite involved if you attempt to cover every eventuality.
The combat system should produce results that are intuitively “correct”. In other words if a match up between two fighters appears, based on their attributes, to be even then the ratio of wins for each should be equal over a long number of repeated matches.
Strong opponents should make light work of weak ones, and weak ones should hardly ever prevail against strong ones.
Where things get trickier is when you have two very different fighters matched against each other. Consider the two fighters below and my rough description of what their stats mean above.
Slugger - the slugger relies on a few, powerful punches to knock out an opponent but isn’t very quick or hugely coordinated.
- SIZ: 60
- STR: 80
- REF: 50
- TGH: 60
Out-Boxer - the out-boxer is fast and relies on keeping their opponent at a distance whilst landing multiple smaller blows
- SIZ 60
- STR 50
- REF 80
- TGH 60
Who should win here? Is it 50:50? As an out-boxer Ali put away Foreman’s slugger quite handily but it doesn’t always go that way.
Since the combat is not being directed by the player I want the combat system to be able to produce a narrative of the fight that provides more than a simple outcome of win or lose for a fighter.
The player should be getting feedback on how well their fighter did throughout, in natural language, not simply some statistics at the end.
There will be fights that are very one-sided and others that go down to the wire and the narrative should reflect this.
Time to come up with a first draft and simulate some fights to see if they make sense or not and then search the interwebs for more inspiration.
Hopefully it won’t look like a pile of nonsense.
18 June 2014 - game fight combat system combat simulator