ATC changes in 12.06 and beyond
Jim Keir here – today I’m going to talk about what’s been going on with ATC for the last six months or so, and what’s planned for the near future.
You’d be forgiven for thinking that the answer to the first is “not much”, simply because there’s been very little visible in the release notes for ATC, but that’s definitely not the case. Normal work on bugs and small improvements has been going on as usual, and 12.06 contained quite a backlog of these which I’ll go into more detail about below. Normal progress has been slowed, however, by time spent on adding one huge new feature. More on that later.
First though, a quick peek behind the curtain. This is a very high-level list of the changes that went into 12.06, now with added explanations! I’ve removed about half of it because they were maintenance, corrections to previous changes and other non-visible things, and edited some of the rest to protect the idiot innocent. Many of these changes, especially the ones starting with “Merge branch”, would be made up of many changes themselves and could cover days to weeks of work; others might be a change to a single letter.
New in 12.06
- Fix incorrect voice phrase for requested altitude change
- AI had a stupid max speed under “AI flies” at key points on the ground which was never reset
- Fix unwanted transmission possible during spawn of AI on arrival.
This simply clogged up the airwaves for the first minute or two of your session. - Fix for descent time calculations
- Merge branch ‘fix_XPD-13780_Pushback_Messages’
- Merge branch ‘fix_XPD-13783_Pushback_Dialog’
These two should make the text messages and buttons in the pushback dialog clearer and more consistent with the current state. Note that you can also request pushback by radio, from ground or tower. - Modify altitude monitoring to try and remove inappropriate warnings
This is a long-standing bug with repeated altitude correction calls from the controller, when you were already at the right altitude. Since this change I finally got a log from a bug report that let me nail the main cause, and a final (?) fix should hopefully be included in 12.07. - Allow editing of ATC flight info if required information is missing, even if a flight is under way.
- Take two for the “AI not calling downwind” bug.
AI may not always have called downwind. They still called final and landed correctly, this was just a missing radio message. - Merge branch ‘fix_tropo_jumps’
People flying airliners found that their altitude was suddenly changing during cruise, sometimes by hundreds of feet, making their autopilot want to take a bit of a lie down in a dark room. This turned out to be two subtle bugs in creating the atmosphere’s vertical temperature profile, where it was possible to get a sudden change instead of a smooth gradient. It depended on your precise location and altitude, and having real weather which had specific temperatures at very specific altitudes. - Latest airport names and combined voice changes from several branches.
- Merge branch ‘fix_XPD-13873_Wake_Sep_On_Runways’
ATC will now delay your departure clearance until the wake from the previous aircraft, whether arriving or departing, has reduced to a safe level for your aircraft. - Merge branch ‘fix_XPD-13842_Departing_AI’
The calculation for the time you would take to line up was just plain broken; sometimes it was too long, sometimes too short. This affects AI as well, of course, so this one fix should prevent you being told to line up with an A330 on short final, and also reduce AI go-arounds. It also now takes account of how far the hold-short line is from the start of the usable runway, and whether there are any sharp corners.
Why wasn’t this seen before? Because the estimate wasn’t always way too long or way too short. Sometimes it could be just right, and the airports that habitually get used for both manual and automated testing by total coincidence were just right. This one also only was able to be found and fixed after someone sent a logfile with full details. - Merge branch ‘feat_XPD-12784_multi_channel_atc’
This one’s a biggie. I’ll talk about it separately. - Merge branch ‘feat_ATC_AI_TCAS_Awareness’
ATC is now aware of TCAS aircraft – read “plugin-controlled AI” – when checking your line-up time against other aircraft using the runway to work out whether to give you departure clearance or not. This means that third-party AI aircraft systems should play a little more nicely with ATC, with no changes required to the plugins. - Contact nag was broken entirely.
Fixes the “Are you with me” if you are handed off to a new controller, change frequency but forget to check in with them. - More AI-flies changes for specific situations. Alter the test to account for fake-flow changes.
A lot of testing is done using AI aircraft, and the “AI flies” mode for the main aircraft. Getting that transition from human to AI done and having the AI pick up an aircraft mid-flight in any state whatsoever, is not simple! This also shows one of the automated tests being changed because it correctly failed as a result of another change. - Fake calm flow was only using one runway even if multiple valid runways existed.
- Allow “Missed Approach” earlier during the approach.
- Speech for airport names not being generated if the apt.dat has no country code set for that airport
Airport designers, please use correct ISO country codes! “USA”, “U.S.”, “America”, “Amercia”, “U S A”, “US of A” and so on. - Fix several problems with missed approaches
- Add option to file and send plan to FMS, and to transfer plan from FMS
Simple quality-of-life change for the “File a flightplan” tab in the ATC dialog. If you’ve set your FMS, maybe from a file downloaded from an online planner, you can now transfer your route to ATC in a single click. Likewise, if you’ve asked the ATC dialog to plan a route, you can send that to your FMS. Of course, you’re free to program your route into the FMS manually as before. - AI did not avoid user if parked on the end of the runway with no ATC interaction
If you start a flight on the runway ATC is aware of you, you will be ‘owned’ by tower and cleared for departure. The AI, however, didn’t get the memo until you made your first radio call. Oops. - Further fix for OnRunwayStartMegaHack – was dependent on immediate radio access
On-runway starts are an absolute bloody nightmare to handle! In this situation, a bug with the 737 where the radios would be unavailable for a frame or two after the sim started totally broke the AI. - XPD-13764: Approach clearance cancellation was not being spoken
You’d be given go-around vectors, but not told that your approach had been cancelled, or why. - Synthetic flows now align to the longest runway instead of using NSEW
When an airport definition has no runway flows defined, the sim has to invent them. Previously five flows would be created, one each for the cardinal directions and one for calm conditions. This change has the fake flows offset by the direction of the longest runway, which would usually be aligned to the prevailing wind. Hopefully this will reduce some of the valid “You’re using what runway, now?” questions – but not as effectively as airport designers actually adding flows to their airports! - XPD-13788: Approach cancelled if perfectly on straight-in approach a long distance away
- Another runway-start fix for switching to AI
I hate runway starts. - Route planner will consider great-circle sections
If you ask the ATC dialog to auto-route between two airports, it was previously only considering airways or nav-to-nav. Turns out there are no defined airways across the north Atlantic, and flights from KBOS to EGLL were flying halfway down Brazil before crossing the ocean… Now it will try to pick this up and use a DCT section if following airways looks silly… - XPD-10555: AI can fly great-circle routes without continual corrections
… which means the AI need to be able to actually fly them. Normally AI pop in and out of existence quite quickly and this wasn’t that noticeable – right up to the point where you ask the AI to fly a long route. Now they fly the great-circle route correctly instead of picking a straight-line heading to the destination and jink back onto the correct course every five minutes or so. This had fun consequences for trans-polar routes too; send an AI near the poles and they would just fly around it forever. - XPD-13768: Route generation can create routes which go past the destination, and can choose the wrong fix where multiple with the same name exist.
Two fixes here. First, if you asked ATC to auto-route to a destination, it could be that the best fix to head for was actually beyond the destination, which makes no sense as an actual route. That was discovered at the same time as finding that in some places, two different fixes with the same name exist within a few tens of miles of each other. That feels like a bug in reality to me, but there you go. - XPD-13767: Crash when filing from an airport with no radio facilities
Good ol’ fashioned crash bug. For 12.06, requesting IFR clearance on the ground from an untowered airport is disabled because the system was never intended to handle it. - XPD-13762: Global region now uses mbar instead of inhg for pressure.
- XPD-13759: Adjust descent rates used to predict descent timing
Please, folks, don’t use the “Request altitude change” over and over to manage your descent! Either wait for ATC to call it, or specifically request descent. Either way, this change pushed the decision for ATC to initiate descent out a bit.
Now for the big change – ‘feat_XPD-12784_multi_channel_atc’. This one’s been queued for quite a long time. Until now, radio frequency use was handled very simply. All controllers would both transmit and receive on all of their allocated frequencies at the same time, and you’d always be told to use the lowest frequency in their list. For small airport towers they probably only have one frequency, but for approach and regional controllers they may have more than one. In fact, some especially large controllers have dozens.
Also previously (i.e. X-Plane 11), everyone being on the same frequency really didn’t matter. AI was used less, ATC was definitely used less, and also had a lot less to say. In X-Plane 12, though, that’s changed. If you’re using both AI and ATC you’ve almost certainly found that near larger airports or even just flying cross-country legs with a controller covering a large area, you just can’t get a word in edgeways. This leads to missed turns, inability to make time-sensitive requests, avoidable go-arounds and other assorted havoc – and that was with human radio time prioritised over the AI.
It was even worse for the AI because they are totally dependent on ATC instructions, so even short delays can put them into a situation where they suddenly need a burst of revector instructions – which increase radio load further. You can see where this is going.
With this change, a controller will actively manage frequency allocation. Instead of everyone always transmitting on a single frequency and the control facility simul-casting on all frequencies, aircraft will be allocated to other frequencies based on both anticipated and actual load. This means that, while you might still end up waiting for a burst of radio traffic to go away, you should be able to speak without too much of a delay. You might also, of course, be asked to change to a different frequency yourself (or, in betas 1 and 2, continually given this call… my bad, fixed for b3).
To be clear, this isn’t a full model of controller sectors, we just don’t have that data available. If you think of it as ‘sectors-lite’, where there are aircraft around you which are being directed by the same control facility but different staff within that facility on different frequencies, you won’t be far wrong. The short version, I hope, is that one of the key frustrations with the ATC system, a valid frustration which I saw people saying simply stopped them using ATC at all, should be gone.
And for the future? Normally of course we don’t go into too much detail about what’s planned unless it’s a hot topic, simply because shit happens and things that are planned, even if the code’s done, don’t always make it in to the next release. Or the one after that. Just this once though, I think it’s worth a little glimpse of what’s going on, just to show that outward signs of (in)activity can be misleading!
First there’s another list of fixes and improvements to come. As with the 12.06 list, here’s some of what I’m hoping will be in a very near-future release. Also as with 12.06, this is cut down and edited a little.
Coming in 12.07 (ish)
- Ensure we issue altimeter setting for aircraft that start in the VFR/IFR approach position (i.e. 3NM/10NM from the runway, airborne).
- XPD-14246: Fix discrepancy between flight model and ATC ISA altitude
This is part two of the “stop whining about my altitude” bug. - Prevent flow changes while any aircraft is on zone 2 or higher, instead of just on final.
You should be less likely to be revectored for a different approach if you’re already approaching. - Merge branch ‘feat_Untowered_Flightplan’
This adds the ability to file an IFR flightplan with a regional controller, while on the ground at an untowered airport, including timed departure. - XPD-14239: Radio calls used correct indicated altitude even if altimeter setting was wrong
When you called to check in with a controller, the altitude spoken by the pilot if you were below the transition layer was the correct one even if you’d not set your altimeter correctly. - Any airport with procedures can’t be a FISO.
Airports with some kind of radio support can be full ATC or FISO. This was new for X-Plane 12 so, while this can be set per-airport in WED, most don’t have the information set about which control type they are so the sim has to guess. This simply says that if an airport has SIDs or STARs, it’s going to fully controlled. - Fix Austin’s AI switching control modes at intermediate hold-short points
AI might behave differently after crossing hold points while enroute to or from the active runway. - Fix rotating the aircraft using the compass in the map in pause mode
OK, I admit it, this one’s for me. I use this constantly, when testing. Previously if you used the map to change your aircraft’s heading in pause mode, the heading reset if you then changed anything else. Now the heading sticks. - XPD-14193: Request diversion mentions the previous destination instead of the new one.
Duh-level typo ☹ - Uncertain of Position wasn’t always available when it should have been.
- XPD-14192: Ensure the AI closes *all* aircraft doors, not just the ones it would have opened itself, when service completed.
Yet another switch-to-AI oddity, when an AI would taxi and depart with doors open if a human opened them and the AI wouldn’t have. - XPD-14190: Don’t continually regenerate fake flows except at load time – if the flows are unusable, this never stops.
- XPD-14189: LSO left/right commands were reversed
- Disable most ATC functions in external-visuals machines.
Only the main computer handles ATC, so why waste cycles? - Additional condition for allowing on-runway flightplan editing.
- Add “Departure clearance cancelled”
If you’re on the runway with takeoff clearance and then request taxi to parking – forgot your lunch maybe – you’ll have that clearance explicitly revoked. - Make com[12]_[rt]x datarefs work on aircraft with no Garmin unit
- Fix altitudes in ATC check-in calls
- Potential fix for being unable to contact ATC at all after cancelling services
If you cancelled IFR in-flight then, depending on the exact state when you did it and what you do next, it was possible to end up in a situation where you couldn’t call any controller at all. - Change some ATC calls to allow use as VFR when filed but not cleared.
Related to the previous bug. If you filed a flightplan, the only valid action would then be to activate it by requesting clearance. If you didn’t make this request, and took off VFR/uncontrolled, some calls were blocked. - Fix double call for “Cleared to Land” for VFR flights to controlled airport
- Allow request for a different parking spot when one is already allocated. Add new “TaxiIn” state.
You can now request a specific parking spot even after ATC has allocated a different one. - Expand log for inappropriate radio frequency.
Finally, this is an example of one of the “no visible change” bugs that I’ve removed from the lists. There is a very rare problem detected in internal testing, where the system flags that an AI is on the wrong frequency. Right now there’s no clear cause, so this just adds more logging around the warning – which doesn’t appear in public builds – to help find and fix this.
Hopefully this has given an idea of some of the impact of the changes that are already in place, and what those terse bullet-points in the official release notes mean. It might also give an indication of the graceful, swan-like visible progress (hah!) compared to the furious paddling that’s normally hidden below the waterline, and I think it’s fair to say the same for all of the developers and designers, not just me working on ATC.
Looking a little further ahead
Oh yeah, nearly forgot. SIDs and STARs. If the lists of fixes and new features above look a bit sparser than you’d hope, now that Ben’s officially let the cat out of the bag I can say that this is why. SID/STAR support is written – past tense – and about to hit a lengthy period of polishing and internal testing. The key word here being “lengthy” – don’t expect to see these in 12.07, 12.08 or twelve point whatever I listed last plus one – but SID/STAR support is on the way.