Combat is probably the most important part of the game. I’ve kind of been avoiding it up until now, because I was afraid of the complexity (and also because there was probably a whole lot of surrounding things that needed to be in place first, for sure) but now it’s pretty much unavoidable. A reasonable combat system is probably the final piece I need in place before the game is ready for Alpha release.
Goals
I have a couple of goals that I want the combat system to reach:
- It needs to be largely automatic. I don’t want to require that people are actively playing the game for combat to be resolved – you should be able to send your fleet to an enemy star and then come back later when the combat is resolved.
- It should be reasonably easy to understand. I don’t want to give you too much information on who will win a particular fight, but it should be easy enough – with a bit of experience – to be able to predict the outcome of a fight.
- You should get enough warning that you’re about to be attacked that you’re able to do something about it.
- While you don’t have to be present to win a fight, actually being present when the fight is happening should give you at least some advantage (for example, you should be able to run away if it’s too much to win, for example)
I’ve started implementing the combat system already. Here’s what I’ve got so far:
- Combat runs in rounds.
- Each round runs for a minute.
- At each round, every participant in the battle fires their weapon at the same time.
- After everybody’s fired their weapon, then we calculate the damage done. That means, if you have two equally matched fleets fighting, they’ll fire their weapons at the same time, and mutually destroy each other.
That’s actually about it so far. There’s a number of problems that I need to solve, though, before this is playable. The most glaring issue is that it’s really hard to know what happened after the fact. That is, you send a fleet to a star, something happens and when you go to look, it’s been destroyed, or other fleets have been destroyed, etc.
Combat Reports
To beat that problem, I want to add this idea of a combat report to the game. That is, at the end of each round, a report of exactly what happened in that round is generated. So when you come back to the star later on, you can call up the report and see exactly who killed whom. An example of what that might look like is below:
Round 1 |
Hunters fleet of Fighter (× 50) entered Collectors fleet of Fighter (× 175) entered Hunters fleet of Fighter (× 40) entered |
Hunters Fighter (× 50) targets Collectors Fighter (× 175) Hunters Fighter (× 40) targets Collectors Fighter (× 175) Collectors Fighter (× 175) targets Hunters Fighter (× 50) |
Hunters Fighter (× 50) attacks Collectors Fighter (× 175) for 50 damage Hunters Fighter (× 40) attacks Collectors Fighter (× 175) for 40 damage Collectors Fighter (× 175) attacks Hunters Fighter (× 50) for 175 damage |
Hunters Fighter (× 50) is hit for 175 damage Collectors Fighter (× 175) is hit for 90 damage |
Hunters Fighter (× 50) is destroyed Collectors Fighter (× 175) is reduced to 85 |
Round 2 |
Collectors Fighter (× 85) targets Hunters Fighter (× 40) |
Hunters Fighter (× 40) attacks Collectors Fighter (× 85) for 40 damage Collectors Fighter (× 85) attacks Hunters Fighter (× 40) for 85 damage |
Hunters Fighter (× 40) is hit for 85 damage Collectors Fighter (× 85) is hit for 40 damage |
Hunters Fighter (× 40) is destroyed Collectors Fighter (× 85) is reduced to 45 |
So there’s a lot happening there, but basically each round is broken up into 5 “sub” rounds. In the first sub-round, any new fleets are added to the pool. In the second sub-round, any fleet that doesn’t have a target (either because they’re new, or their previous target was just destroyed) selects a target. In the third sub-round, everybody fires on their respective targets. In the fourth round, the actual damage on the fleets is added up. And in the fifth round, fleet size is reduced by the damage amount and the fleet is destroyed if it hit zero ships.
The plan is that when you open up the star, you’ll be able to get that report with all of that detail as required. In this way, you should be able to (over time anyway) get a feel for how the combat will go in advance.
A possible loophole
One possible loophole with the way the combat works as described above is that it’s advantageous to have – say – 100 fleets of one ship each than to have one fleet of 100 ships. The reason is, each round a fleet can only target one other fleet. So if you’ve got 100 fleets against one fleet, then the 100 fleets will all be able to target the one, but the one will one be able to target one at a time.
I’m hoping that the pain of managing 100 separate fleets will somewhat reduce this loophole, but I’m also thinking of maybe introducing some kind of penalty for smaller fleets. For example that maybe the damage a fleet does increases as the size of the fleet increases, or perhaps that the shields are more effective in a larger fleet. I guess play-testing will let us know whether that’s required or not.
Next Time
So that’s where things are today. I’ll be working on all of this in the coming weeks, and hopefully there’ll be some screenshots and maybe even a gameplay video coming up once I’ve got more of this in place.
I’m really excited by the progress we’ve made so far, and I hope to have an alpha version ready for people to try out very soon now.