While this isn’t a bad idea, I’m inclined to change the hit calculation entirely.
Problem
Doesn’t it strike anybody as odd that any weapon could miss a stationary, 200-size ship (cruiser) 11% of the time, even at point blank? That guy is a sitting duck and should be totally annihilated.
Likewise, even a moderatly fast fighter is nearly untouchable against weapons that are nearly comparable to it, getting only a 6.9% hit chance. And, when weapons are ridiculously faster than the enemy, there’s still only a 60% chance of landing a hit.
These aren’t storm troopers we’re talking about; I want my ships to hit what they shoot at. There’s nothing gratuitious about watching rookies fire across a room at each other for 10 minutes, missing every shot.
Suggested Solution #1
Let’s add some realism (I know, realism is boring, but it colors our expectations). A few assumptions:
- Tracking speed determines the weapon’s ability to “keep up”. If it can’t, it’s going to miss consistently (maybe get a lucky shot, but I wouldn’t even go that far). If it can keep up, the tracking speed won’t otherwise affect the weapon’s ability to land a hit (there’s a difference between tracking speed and shot accuracy).
- A weapon doesn’t normally fire perfectly straight. There is some spread to the shot. The further the target is, the more the spread will matter. Maybe the spread is the same for all weapons, but it would make sense that it not be.
- The further away a target is and the smaller it is, the more detrimental spread will be to hitting it. For exmaple, shooting at a 10 ship at 500 range will miss if there’s even a slight variance in the angle of the shot. Conversely, a 200 size ship at 50 range is going to be harder to miss than the broad side of a barn.
Let’s say our new spread spec is in metres/metres, which is spread size at some distance away (in the real world, the spread would be an angular thing and you’d have to look at the arc section, but this is simpler). The hit chance is:
(ship_size/range) / spread, with a max of 100%. If the ship is the same size or larger than the spread, a shot is gauranteed to hit. If it’s smaller, the percentage of hits is the percentage of the spread that covers the ship.
The advantages of this are:
- Ability to make weapons whose accuracy falls off over distance. Think of a shotgun that does huge damage at close range but almost nothing at long range.
- Encourages ships to try and maintain range as a defensive mechanism and get in close as an offensive mechanism.
- Big ships up close are always a sure hit. This only makes sense: you’re shooting a laser at the broad side of a barn. Unless you’re down 10 pints of moonshine, you should be able to hit it every time.
- It removes the low hit percentage when tracking speed is only slightly faster than ship speed. (As long as tracking speed is sufficient, hit chance is determined only by the spread).
- It removes the requirement for a weapon’s speed to be ridiculously larger than ship speed in order to get reasonable hit chances.
Suggested Solution #2
The previous solution handled spread in a realistic manner, but tracking speed is still arbitrary. If we’re going for realism, let’s go all the way and treat tracking speed like it would really work.
Tracking speed is limited by the rotational speed of the weapon. A big gun can’t move fast enough to keep up with a fast moving enemy. The further away an enemy is, the slower the turret needs to rotate to keep up (for the same length of arc section, the angle decreases as radius increases). Also, the enemies absolute speed doesn’t matter, because a fighter flying straight into a laser is going to get hit no matter how fast he flies towards it. What really matters is the his transverse speed – how fast he is going tangential/perpendicular to the weapon.
This gives us the following variables:
- Distance between ships (meters)
- Transverse speed of target w.r.t weapon (meters/second)
- Rotational speed of weapon (radians/second)
The transverse speed of the enemy divided by the distance between ships gives you the enemy’s angular velocity (the speed, in radians/second, at which it is rotating around the weapon). If the angular velocity exceeds the weapon’s rotational speed, it can’t keep up and so can never hit. If it’s less, the weapon is sufficiently fast to aim and can now shoot, with an accuracy dependent on the spread from suggestion 2.
This is how it works in the real world and it isn’t terribly complicated to predict (for people designing ships) or calculate (for the game). It also has the following advantages:
- It allows for sniping weapons: slow turning but high accuracy. At a distance, they can pick off even small ships, but as the ships get closer the weapon will be unable to keep up the necessary tracking speed.
- It encourages orbiting a ship and makes flying head first towards the enemy a suicide mission.
- It means fast tracking weapons, like fighter lasers and cruiser defense lasers, will actually hit their targets.
- It increases the advantage of fast tracking. With the current formula, tracking speed has little effect on the hit chance against a ship (even fast weapons can miss often). Now, fast tracking means the difference between hitting and missing completely.
- It balances with suggestion 1. There, it’s always an advantage to be closer when shooting, because it means you miss less due to spread. With the ability to track decreasing as you get closer, it means there is a maximum to how close you can get. A fast fighter orbiting closely will be hard to hit, even with good accuracy, instead of being a gauranteed hit. Conversely, even slow tracking carrier weapons can pick off ships at long distance, which is the range they are meant for.