Raven was arguably the single most influential unit in Zero-K, and is definitely the most reworked. As the main bomber for 15 years, its burst damage defined the health thresholds that determined vulnerability to air. I say was because the bomber lineup has since been fleshed out, with the addition of Magpie and Odin, as well as the de-Owling of Phoenix. But that is only the end of the story, after many tweaks and redesigns. The full story is of a conflict between physics and reliability, and involves Raven trying almost as many weapons and abilities as the rest of the bombers combined.
Early Raven
The proto-Raven was inherited from
Total Annihilation (via BA), and was originally the generic light bomber. It was generic in the sense of being a weaker and cheaper version of the heavy bomber. This was not good enough, we wanted units with roles rather than
generic monospam, so the first order of business was to make these two bombers distinct. We also wanted the light/heavy bomber divide to fit into our
fuzzy approach to tech levels, so if the heavy bomber was to take over later in the game, it should be because the situation has changed, not because it just has better stats.
Our solution was to give the heavy bomber more bombs, to create a real carpet bomber, while the light bomber was pared down to drop a single, precise, bomb. Raven was born, and in a sense, so was Phoenix, although Phoenix ended up much closer to the old heavy bomber. Here is the theory behind the role split.
- Carpet bombing is great against clumped armies, which are more prevalent later in the game.
- Precision bombing is great at taking out key units, such as turrets, riot units, and commanders, and individual kills have more impact early in the game.
The most important job for the precision bomber is commander sniping, which is a timeless tactic where the attacker tries to blow up the enemy commander in one shot. The possibility of a snipe warps the game around it, with commander health largely balanced around how hard it makes them to snipe. The original light bomber was already the unit of choice for such snipes, since it was a more efficient source of damage for its cost, which made it a natural choice to rework into a precision bomber.
A commander sniper needs to know how many bombers are required to kill a commander. Too few, and the commander survives and is repaired, wasting all the bombers that died in the attempt. Too many, and the attempt is delayed, giving anti-air more time to build up. Shooting a spray of bombs, like the original light bomber, makes the outcome somewhat random. Perhaps four bombers only have an 80% chance of firing a tight enough spread of bombs, so you need to bring a 5th one to bump the chance of a kill up to 99%. This level of randomness felt bad.

To be more precise, randomness can be split into two types: output randomness and input randomness. This concept has been
blogged to death elsewhere, so in short:
- Input randomness is where something random sets up a situation, then you make decisions about how to deal with it. Think random map generation.
- Output randomness is where you make a decision, then a random process determines the outcome. Think rolling to hit in X-Com, D&D, or Starcraft.
The general consensus is that players dislike output randomness, because it removes control. My view is that output randomness is necessary for a game like Zero-K because the outcome of one decision sets up the situation for the next one. That said, the range of outcomes for a single action, the swing, should not be too large. A commander snipe is a single decision with a large impact on the game, so the final outcome should not depend on where the bombs happen to fly. Hence, the precision bomber.
Weapons Development
The theory behind precise Raven was sound, but we failed to account for one thing: commanders can move. Commanders do not enjoy being sniped, so move out of the way when bombs are lobbed at them. In fact, Raven could not even hit commanders walking in a straight line, since the default bomber weapon type does not lead targets. This is an engine limitation that stems from the fact that bombs inherit the velocity of their bomber. Bombs are not fired, they are dropped. This ties aiming to movement, and no one was game enough to figure out target leading with this complication. So Raven needed a new weapon.

The first rework came about due to
Complete Annihilation being a
collection of contributors doing cool things, rather than by design. Someone woke up one day and thought "All the Arm bombers should shoot laser", so all the Arm bombers shot lasers. Phoenix was light show, Likho abducted units with a thick purple beam, and Thunderbird shot a spray of lightning rather than cluster of Imp-like bombs. Only one of these changes stood the test of time. As for the Raven-equivalent bomber, it shot a short burst straight down, like an awkwardly airborne Grizzly.
Lasers highlighted, rather than fixed, the problem with pure movement-based aiming. Laser Raven had perfect accuracy against anything directly beneath it, but again, commander can move. Even a slow commander could walk sideways fast enough to overwhelm the Raven's ability to turn and correct. The angular velocity of a dodging commander increases dramatically as Raven gets closer, necessitating a ridiculous turn rate that would make Raven behave more like a figure skater than an aircraft. We were too committed to planes that behave somewhat like real planes, so went back to the drawing board.

With lasers out, we looked to rockets. Technically,
rockets have cylindrical range so a short-ranged rocket would be able to fire at targets far below.
Verisimilitude has a few things to say about this hack, but it mostly works. Lingering issues were fixed by moving the firing point along the underside of the wing, towards the side that the target is on. The result was a Raven that could be relied upon to shoot and hit a commander walking in a straight line, even a perpendicular one. However, curved lines were another matter.
Target leading works by predicting where a unit will be based on its velocity. It cannot take into account turning, because a unit could choose to turn at any time. The result was the Raven "quick time event", where players would tell their commander to do a little dance, or just walk in circles, whenever a Raven fired at it. We made the rocket-bomb fast enough to make dodging non-trivial, but we were limited by trying to avoid Raven being too good against fast units. The ideal was a Raven that could reliably hit slow units, without massacring medium raiders. A solution to this conundrum came in the form of a new ability: diving.
The Decade of Dive
Dive started off as an unrelated attempt to resolve a
fight with the UI. I had noticed three things:
- Raven has enough damage to 1-shot large shield generators.
- Raven flies slightly higher than the shield, which can absorb many bombs.
- Landing brings bombers closer to the ground.
In theory, you could fly a Raven over a shield, tell it to stop, and fire a fraction of a second later once it is inside the shield. I am not sure whether anyone actually did this, but that was besides the point, there was a clear case of a unit misusing its abilities. This could have been solved by making Raven fly slightly lower (and eventually was), but instead I gave it the ability to dive under shields. It later turned out that Saktoth had intended for Raven to be bad against shields, but the fight with the UI was clear, so shield diving made it in. Of course,
ability use cannot depend on the presence of the enemy, so we also let players tell their Raven to continuously fly at the lower altitude.

The result was immediate, people started telling Raven to fly lower to score more hits on commanders, significantly increasing their reliability. The default behaviour was subsequently updated to make Raven dive when attacking mobile targets, and they even modulated their height by the speed and size of the target. The mechanic had the neat side effect of making Raven more vulnerable to return fire against faster units, and slowing down the bomb accentuated this aspect. Eventually we made Raven slow down as it dove, making it particularly vulnerable to fast raiders. This was Raven for over a decade, from 2011 to 2022, but it was not a solution without problems.
The first problem was that dive is a complicated and powerful ability. Raven had the implied ability to choose its altitude from moment-to-moment, trading off against speed, so that is what the unit AI used. This turned it into effective anti-air as it could fly to the generally-static height of other aircraft and spawn bombs inside them, for massive damage. We eventually added an arbitrary target restriction to prevent this for non-gunships, but needing to do this is a red flag. On the complication side of things, Raven gained many
ways to be stupid, such as diving too low too early against particularly fast raiders, and never catching them.
The second problem was visual. Raven diving down to engage speedy units in melee looks a bit silly. Especially with its relatively wide model. Flying low also looks weird around uneven terrain, since Raven has to climb quite steeply to avoid bumping into it. So, after a decade of dive, we gave the idea of firing from cruising altitude one more try.
The Gliding Bomb
The final rework resulted in one of the more complicated weapons in Zero-K, especially compared to how important it is for players to understand in detail. But each detail solves a specific problem, so here we go.
Modern Raven shoots a homing missile, but unlike other missiles, this one is constrained to only ever point in the approximate direction of the ground. The result is a sort of guided "parachute" bomb that manoeuvre itself to hit anything within a cone below it. The firing logic takes the speed of the bomb and angle of the cone into account when determining the likelihood of a hit. Structures will be shot at maximum range, while slow units can be shot at a slightly reduced range. There is a minimum firing range, to avoid the Laser Raven problem, and quick raiders can even outrun the bomb. Raven still tries to hit raiders, as not doing so could look like a bug, and it can always be used as a zoning tool in an active battle.

We finally have a Raven that can be relied upon to shoot at and hit a commander, with the exception of the jump Recon commander, but it pays for this ability with reduced health. Speaking of which,
jumpets and Raven grapple with similar design issues, as they can create high-swing outcomes. The difference is that jumpjets started off reliable, and we had to resist adding jank, while precision bombing is inherently difficult, so it took many years to find a solution that is both reliable and physically sensible.
Raven is too big for one post, so expect more Raven facts in the future, such as why bombers need to reload, or why terraform necessitates the inclusion of a bomber that can shoot underwater and straight down.
Index of Cold Takes
[ 2025-05-10 23:53:18 CET ] [ Original post ]