A flight in VIPER 11 starts with somebody talking to you. Before the engine is above idle, Ground has told you which runway to taxi to and which taxiway to use. The Tower clears you onto the runway and then off it, Departure watches you climb, and on the way home Approach gives you headings, one at a time, until you are lined up with the runway lights. None of it is required to fly the jet. But it is most of what makes a flight feel like a real sortie and not a level in a game.
Four controllers, one way of speaking
A real airfield splits its airspace between controllers, each on their own frequency. Ground has the taxiways. Tower has the runways and the air just around them. Departure picks you up on radar as you climb away, and Approach brings you back in. As you move from one to the next, each hands you on: contact Nellis Departure, good day.
The game follows the same handoffs at all three of its airfields, with three voices: one in the tower, another for Ground, Departure and Approach, and a third for you.
The words follow standard phraseology, which is closer to a protocol than to conversation. Every call starts with who it is for, then who is calling. Numbers are said one digit at a time: 21 is two-one, and nine is niner, so it can’t be mistaken for five or for German. Headings take three digits (two-four-zero), altitudes go by thousands (one-six thousand), and a clearance is read back word for word, so the controller hears that you got it right. The point of all this is that a call heard once, through static, with an engine behind it, still can’t be misunderstood.
Figure 1 · A sortie on the radio
nice landing. These are the game’s own recordings, played through its radio chain: band-limited to roughly 260–2,300 Hz, lightly driven and compressed, then muffled by a helmet earcup, with a key click at the start and a burst of squelch at the end. Pick any call to hear it. The line under it is the game’s
explainRadio, running on this page. The ATIS is one of the recorded variants the game doesn’t play yet (more below).Your own calls are made for you. There is no microphone and no menu of replies: when the tower clears you, the pilot reads the clearance back in your voice, and all you have to do is fly what was said. That is the biggest simplification in the radio, and a deliberate one. The other is that you are alone on the frequency. A real Nellis tower talks to a dozen aircraft at once.

Why the numbers sounded wrong
Most calls in the game are fixed. The takeoff clearance at Nellis is always the same sentence, so it was recorded once, as a sentence. Approach is different. On the way home it tells you where you are, which way to turn and what altitude to fly, and those depend on where the jet happens to be: twenty-five miles north-east, or seven miles from the final approach fix, heading two-four-zero or three-one-zero, five thousand or nine. There are thousands of possible calls.
So Approach’s calls were first built from pieces. Every distance, heading and altitude, plus the phrases around them, was recorded once as its own short clip, 149 of them at Nellis, and a call was stitched together at the moment it was needed: Viper One-One,
+ seven
+ miles from the final approach fix,
+ turn left heading
+ two-four-zero,
and so on. It was cheap and covered every case. It also sounded broken.
People don’t say sentences as a row of separate words. The pitch rises and falls across the whole sentence, and each word is shaped by its neighbours. A recorded two-four-zero keeps the melody of wherever it was recorded: made to sit mid-sentence, it still rises when it ends a call, and the call sounds unfinished. The game ended up recording every heading twice, once for the middle and once for the end. Even then, each piece has its own breath, its own slightly different loudness and pitch, and a fixed pause after it where a person would run the words together. It sounded like a station announcement: understandable, but obviously assembled.
Figure 2 · Nine pieces, or one sentence
There was also a number to measure it by. Both versions of a sample of calls were run back through a speech recogniser. It got 91 of 91 whole sentences right, every number included (a word error rate of 0.2%). For the stitched calls it got 69 of 72 right, at 3.6%. A machine is not a pilot, but a machine that mishears two-four-zero is a fair sign that the pauses were in the wrong places.
Whole sentences, made once
The fix was to say every call whole, in the same voice and with the same settings as the pieces. The work was in choosing which calls. A simulation of 60,000 requests to fly home, from random places around all three airfields, showed which ones players actually hear. Every heading-only and altitude-only call made the list, then the most common radar contacts, clearances and heading-and-altitude calls, ranked by how often they come up per character, since the voice model is paid by the character. That gave 1,291 sentences, covering 85% of the calls players hear, for $12.94.
Each take is checked before it is kept. Its pitch is measured against the median of that voice’s other lines (227 Hz for Approach), and a take more than 1.75 semitones off is made again, so the controller doesn’t suddenly sound like someone else. It is trimmed, levelled to the loudness of everything else on the radio, and stored dry, 16 kHz mono at 32 kbps; the crackle and the earcup are added as it plays. A take is about 33 KB and is only downloaded when its call comes up. The list of what exists is a small index per airfield, 11 to 21 KB.
The other 15% is what the server is for. When the flight decides a call, it asks for a take of exactly those words, and if the index doesn’t have one it asks the server, which keeps a cache shared by everyone. The first signed-in player to need a sentence has it made, for about a cent, and every player after gets the copy. The server only accepts air-traffic words from a fixed list, at most 240 characters, so it can’t be used as a general text-to-speech service, and it has limits: six new sentences a minute per player, sixty a day, a thousand a day for everyone. Signed-out players hear anything already in the cache but can’t add to it.
The flight waits up to 1.5 seconds for a take. If none comes, the call is said from the pieces, as before, and a take that turns up later is used next time. The first call of the approach varies the most, so the game starts looking for it while you are still asking for vectors, which gives the server about five seconds. The subtitle is the same either way. Only the voice changes.

The ATIS, and the wind
Before calling anybody, a real pilot listens to the ATIS, the Automatic Terminal Information Service. It is a recorded broadcast, looping on its own frequency, of what every pilot at the field needs to know: the wind, the altimeter setting, and the runway in use. Each new recording gets a letter of the phonetic alphabet, and on first contact you tell the controller which one you have (with information Oscar
) so they know you’re up to date.
The game shows it as a card when a flight starts. The letter changes every hour. The altimeter setting is a fair-weather value between 29.84 and 30.12 inches that stays the same all day. The wind is the same wind the tower gives with your takeoff clearance, or the day’s seeded wind in the daily challenge, so the ATIS and the tower never disagree. Four ATIS variants per airfield have also been recorded in the tower’s voice. The card doesn’t play them yet, so for now you read it.

The runway in use is the line that matters most, and the wind chooses it. Aircraft take off and land facing into the wind. A headwind takes its speed off your speed over the ground, so the jet lifts off and touches down slower, on a shorter roll, and is easier to stop. A tailwind does the opposite, and a crosswind pushes you sideways off the centreline. So the tower uses whichever end of the runway points most nearly into the wind. The game’s Nellis wind blows from 200°, the south-west, so that is runway 21: a magnetic heading of 210°. When the wind swings round to the north-east, the same strip of concrete becomes runway 03, used in the other direction.
Figure 3 · Which runway is in use
The game is simpler than a real tower here. Each airfield has its usual runway, 21L at Nellis, and a flight starts there. The wind is then chosen to suit that runway, not the other way round. The tower’s wind is ten degrees off the nose. The daily challenge’s wind comes from anywhere between dead ahead and just past square across, so the ATIS always names the runway a real controller would pick for it. On the way home, Approach brings you to whichever end lines up with the direction you are arriving from, which is a convenience, not real practice.
What the radio means
Phraseology is efficient once you know it. Until then it is a wall of words. Maintain five thousand until established, cleared straight-in runway two-one left
means: stay at 5,000 ft until you are lined up on the final approach course, then follow the glide path down, and you don’t need to fly a circuit first. The game says this in plain words in two places. One is the Pilot’s Handbook, in the menus, which lists every call the tower, Ground, Departure and Approach make at that airfield, each with what it means and what to do. The other is the Cadet captions, where the same explanation appears under each subtitle as the call is made.

Both use the same function, explainRadio, and it reads the words, not a list of known lines. It looks for standard phrases in the text as heard (cleared for takeoff, hold short, climb and maintain, squawk, radar contact) and turns the spoken numbers back into figures: two-one left into 21L, one-six thousand into 16,000 ft, flight level two-one-zero into 21,000 ft. That is why it can explain Approach’s calls, which are put together on the fly, and lines regenerated later, without a table to keep up to date. A call it doesn’t recognise gets no explanation rather than a wrong one.
Figure 4 · Ask the explainer
src/ui/radioExplain.ts exactly as the game ships it, bundled for this page. Calls it can’t read come back empty. That is the same rule the game follows, where a caption with nothing useful to add shows no second line.It is a pattern matcher, not a language model, and it only knows the calls this game makes. Within those, it makes the radio readable from the first flight. You learn what two-one left
means once, and then you stop needing the gold line. It is only on with Cadet. Pilot, the default, and Ace leave the radio as it is.