News Archives - X-Plane Developer https://developer.x-plane.com Developer resources for the X-Plane flight simulator Fri, 03 Apr 2026 13:58:53 +0000 en-US hourly 1 https://wordpress.org/?v=6.9.4 https://developer.x-plane.com/wp-content/uploads/2017/12/cropped-X-32x32.png News Archives - X-Plane Developer https://developer.x-plane.com 32 32 Plugin Developers: We Are Done Stabbing You With a Fork /2026/04/plugin-developers-we-are-done-stabbing-you-with-a-fork/ /2026/04/plugin-developers-we-are-done-stabbing-you-with-a-fork/#comments Fri, 03 Apr 2026 13:58:52 +0000 https://developer.x-plane.com/?p=41286

In this blog post, Ben reflects on the SDK enforcement in 12.4.0 and 12.4.1, and an update going forward…

The X-Plane 12.4.0 and 12.4.1 updates have been disruptive to plugin developers, and the main reason why is that starting with 12.4.0 (and ending in 12.4.1) we have added checks inside X-Plane for erroneous plugin behavior. Read More

The post Plugin Developers: We Are Done Stabbing You With a Fork appeared first on X-Plane Developer.

]]>

In this blog post, Ben reflects on the SDK enforcement in 12.4.0 and 12.4.1, and an update going forward…

The X-Plane 12.4.0 and 12.4.1 updates have been disruptive to plugin developers, and the main reason why is that starting with 12.4.0 (and ending in 12.4.1) we have added checks inside X-Plane for erroneous plugin behavior. To use an analogy, the speed limit has always been 30 mph, but now we have a police officer pulling cars over and sending people to jail.

What Were Y’all Thinking??

There were a few things that went into our decision to increase enforcement:

First, we saw some bugs that were the result of really astonishing plugin behavior. The buggy behavior was bad, and it was really hard to catch because we weren’t checking for the erroneous behavior earlier. This is the equivalent of finding a Porsche lodged in someone’s second-storey bedroom and going “huh…I wonder how fast that guy was driving?”

Second, we did a lot of code restructuring for multi-core in X-Plane 12.4.0, and we needed to be able to tell when a plugin was breaking the rules and when we had broken the rules. A big thank-you to all of the plugin developers who tested their aircraft early before the public beta – that original alpha contained a lot of rule violations by us. But to really get to a final version of the sim, we needed to know who had crashed because they were speeding and who had crashed because we had left a brick wall in the middle of the road.

Third, not having rule enforcement for plugins makes things hard for developers. We see this ourselves all the time. Vulkan comes with an opt-in “validation layer” that (at the cost of FPS) checks our use of the driver and tells us when we screw up. This is great because it helps us fix X-Plane, and when there are things we do wrong that aren’t caught by this layer, it makes our lives a lot harder. Plugin development for X-Plane has been like this: there were lots of things that were inadequately documented and unclear, that would “appear” to work, and then the sim would mysteriously crash 20 minutes later.

And this brings us to our final reason: rule enforcement will take erroneous plugin behavior out of the sim and that will result in a more stable experience for our users. Sure, if a plugin violates an SDK rule that is the author’s responsibility, but if you are flying and the sim crashes on final approach, that’s a bad flight regardless of where the bug is. And I think this effect will compound: the more plugin-related crashes are removed, the easier it will be for us to see our own crashes in the crash reporter and fix them.

Plugin Developer Pain

While I would assert that every plugin that started crashing due to rule enforcement that needs an update represents a plugin bug to be fixed, I want to be clear: I am absolutely not here to blame plugin authors. The truth is, with the SDK before 12.4.1, with almost no rule enforcement (and often unclear, missing or ambiguous documentation), it was very hard to write correct plugin code.

Retroactive rule enforcement is not appealing. And for our third-party developers, I feel your pain. We’re putting them in now because it is the earliest time we can do so without a time machine.

In addition, it is definitely our future intent to provide more road map guidance and forewarning going forward, as well as rule enforcement for new features when they first ship. I appreciate the community’s fast response in jumping on these issues and fixing bugs – having had to fix issues in X-Plane due to OS updates, I know what it’s like to be on the receiving end of this kind of thing. And I think this effort is worth it – the result will be a more stable X-Plane experience for everyone, almost immediately.

The post Plugin Developers: We Are Done Stabbing You With a Fork appeared first on X-Plane Developer.

]]>
/2026/04/plugin-developers-we-are-done-stabbing-you-with-a-fork/feed/ 5
SDK News – 12.4.1 | A Quick Check-In /2026/04/sdk-news-12-4-1-a-quick-check-in/ /2026/04/sdk-news-12-4-1-a-quick-check-in/#comments Fri, 03 Apr 2026 13:57:03 +0000 https://developer.x-plane.com/?p=41283

With X-Plane 12.4.1 now available, let’s take a deeper dive into some of the changes concerning X-Plane developers!

Hey everyone, this update is rather short this time around. Everything is striding along nicely this Spring! Let’s see what’s new here.

NOTAM – SDK Threading

As I’m sure you’ve all noticed by now, a raft of plugins did experience issues during the 12.4.1 beta. Read More

The post SDK News – 12.4.1 | A Quick Check-In appeared first on X-Plane Developer.

]]>

With X-Plane 12.4.1 now available, let’s take a deeper dive into some of the changes concerning X-Plane developers!

Hey everyone, this update is rather short this time around. Everything is striding along nicely this Spring! Let’s see what’s new here.

NOTAM – SDK Threading

As I’m sure you’ve all noticed by now, a raft of plugins did experience issues during the 12.4.1 beta. Thankfully, most have now been resolved, but a quick explainer about what’s happened here.

We’ve been logging erroneous plugin behaviour for a while, including XPLM calls before plugin init and unsafe thread access practices… but now that we are in the Glorious Future™ where X-Plane really is doing multi-threaded rendering (with more planned in the future), we now have to enforce thread safety on XPLMDataAccess and hard assert to ensure sim stability. The tldr here is that many plugins were incorrectly calling X-Plane before it was meant to.

A few notes here:

1. Please keep in contact with us. If you are a developer, please feel free to reach out and join our developer Slack. You can use support@x-plane.com

2. Do not delay in testing your addons. We still see a few developers attempt to defer testing until after an official release. We don’t want the disruption, nor do customers!

Some plugins could also benefit from switching to easier data-access methods, like websockets. Any damage here would solely be on us!

We also know the communication/logging of this could be better; believe us, we’ve already hotly debated this internally, and we’ll work to fill out SDK deficiencies.

NOTAM – AMD Device Loss (We kicked its butt)

After reviewing the crash rate, Sidney is pleased to report that AMD device losses should be solved.

NOTAM – Steam Rollbacks

For the Steam users in the room, it is well known that you guys do not have the same special powers as LR Direct users. So starting with 12.4.1, you now have the option to rollback to the last previously available version.

I will caution that this is not a permanent workaround (Although the rollback method will always be available). Please attempt to resolve the issues with 12.4.1 first (At least 95% of plugins we’ve come across have now been resolved, or have a pending update)

TCAS API

As part of the A330 updates, we’ve now got an enhanced TCAS API for aircraft developers, put together by Philipp. Have a look!

New Assets

We keep ploughing through asset creation. Not only is this helping towards next-gen scenery, but also helping to unlock artists today!

Cab-Over European Style Trucks

My personal favourite, Justin (MisterX) has worked on these European-style trucks (and has brought some American vs Europe balance into this world). We’ve got a number of different liveries and truck variants for you to choose from.

lib/vehicles/static/trucks

Gravel Textures

Meanwhile, Petr has worked to finally give us new gravel textures. The new polygons come in different colors and a mixture of solid to patchy cover. You can use the provided lines and polygon patches to then blend in the gravel color.

This is really going to open up some of the more outback and GA airfields for scenery authors, and I can’t wait to see what you all come up with.

lib/airport/ground/terrain/gravel

lib/airport/ground/terrain_FX/patches/gravel

lib/airport/ground/terrain_FX/paths/gravel

Blue-Roof Hangars

A small update to our hangar library, which is now available with blue roofs.

Gateway Update

Finally, we have our latest round of Gateway airports by our incredible WED artists.

(Note: This list is not a complete representation of all changed/added airports)


Argentina

SAZI — Bolivar

SAZN — Neuquen – Presidente Peron

XSA000B — Chacras del Faro

Australia

XY0055 — Western Sydney Intl

YBMA — Mount Isa

YBMK — Mackay

YCCY — Cloncurry

YFLI — Flinders Island

YHLC — Halls Creek

YLRE — Longreach

YMAV — Avalon

YMEN — Essendon

YPGV — Gove

Austria

LOIH — Hohenems Dornbirn

LOWW — Wien-Schwechat

Bahamas

XMY0006 — Castaway Cay

Belgium

EBCI — Charleroi / Brussels South

EBKH — Balen Keiheuvel

Bolivia

XSL002O — San Fernando

Brazil

SIPK — Hotel SESC Pantanal

SJQN — Quirinopolis

SJYO — Bananal

SSPM — Porto Murtinho

SWYK — Fazenda Ilha Camargo

Bulgaria

LBSF — Sofia

Canada

CNP7 — Iroquois

CNS8 — Morrisburg

CRF5 — Saskatoon/Richter Field

CYCC — Cornwall RGNL

CYCL — Charlo

CYLA — Aupaluk

CYOW — Ottawa MacDonald-Cartier Intl

CYQT — Thunder Bay

CYRI — Riviere du Loup

CYSH — Smiths Falls/Montague

CYXS — Prince George

CYXY — Whitehorse/Erik Nielsen Intl

Central African Republic

FEFF — Bangui M Poko

Chile

SCOT — Santa Rosa de Tabalí

SCOV — El Tuqui

China

XZ001U — Shuang Yu Shu

XZ002W — Yunlong

XZ003K — Zhuzhou Lusong

ZBTS — Sannühe

ZLLL — Lanzhou Zhongchuan Intl

ZSYC — Yichun Mingyueshan

Colombia

SKPP — Guillermo Leon Valencia

Costa Rica

XMR0004 — Sanata Teresa

Croatia

LDLO — Losinj

Czech Republic

LKLT — Letnany

LKVO — Praha – Vodochody

Côte d'Ivoire

XDI0004 — Odienne

DEU Germany

EDX5 — Asslarer Huette

Denmark

EKBI — Billund

EKCH — Kastrup

EKHV — Haderslev

EKLS — Laeso

EKRN — Bornholm Rønne

Eritrea

HHAS — Asmara INTL

France

LFBP — Pau Pyrenees

LFFY — Etrepagny

LFHM — Megeve

LFHZ — [X] Sallanches Mont Blanc

LFLO — Roanne

LFLP — Annecy Meythet

LFMD — Cannes Mandelieu

LFPB — Paris Le Bourget

LFRU — Morlaix Ploujean

Germany

EDAY — Strausberg

EDAZ — Schönhagen

EDBH — Barth

EDDK — Koeln – Bonn

EDDS — Stuttgart

EDFM — Mannheim City

EDFQ — Allendorf/Eder

EDFZ — Mainz-Finthen

EDJA — Memmingen

EDMA — Augsburg

EDME — Eggenfelden

EDMF — Passau-Fuerstenzell

EDMJ — Jesenwang

EDMK — Kempten – Durach

EDMO — Oberpfaffenhofen

EDMS — Straubing

EDMW — Deggendorf

EDPI — Moosburg auf der Kippe

EDQM — Hof-Plauen

EDRJ — Saarlouis – Dueren

EDRY — Speyer

EDTB — Baden-Oos

EDWI — Wilhelmshaven JadeWeser

Germany (civil)

XED006K — [H] Hiddensee

XED08 — Steinheimer Schaefhalde

XED6B — Dettingen/Teck

XEDCV — Hermuthausen

Greece

LGNX — Naxos

LGPA — Paros

IDN Indonesia

WAWJ — Tampa Padang

Iceland

BIAR — Akureyri

BIBD — Bildudalur

India

VASU — Surat

VERK — Rourkela

VODG — Dundigul

XVI000N — Kalaburagi

Indonesia

WABQ — Mulia

WIMS — Dr Ferdinand Lumban Tobing

XWI000R — Marinda

Ireland

EIKN — Ireland West Knock

EISG — Sligo

Italy

LIDT — Trento-Mattarello

LIPE — Bologna Borgo Panigale

LIPN — Verona Boscomantico

LIPV — Venezia Lido G. Nicelli

XLIKI — Caposile

Japan

RJEB — Monbetsu

Kazakhstan

UAAA — Almaty Intl

XUA000F — [H] Anar

Liberia

GLRB — Monrovia Roberts Intl.

XGLFOY — Foya

Luxembourg

ELLX — Luxembourg

Moldova, Republic of

LUKK — Chisinau Intl

Montenegro

XLY000T — Cemovsko Polje/Spiro Mugosa

Nepal

XVN0005 — Thamkharka

Netherlands

EHAM — Schiphol

EHBK — Maastricht Aachen

XEH002N — [H] Buitengaats

XEH002O — [H] L2-FA-1 Heliport

XEH002R — [H] K1-A Heliport

XEH002S — [H] K5-CU Heliport

XEH002T — [H] L4-PN Heliport

XEH002U — [H] L5-FA-1 Heliport

XEH002V — [H] L5-D Heliport

XEH002X — [H] F3-FB-1 Heliport

XEH002Y — [H] D12-B Heliport

XEH002Z — [H] D12-A Heliport

XEH0030 — [H] D15-FA-1 Heliport

XEH0031 — [H] F15-A Heliport

XEH0032 — [H] G14-B Heliport

XEH0033 — [H] G14-A Heliport

XEH0034 — [H] D18-A Heliport

XEH0035 — [H] E17-A Heliport

New Zealand

NZAA — Auckland Intl

NZOM — Omaka

NZTI — Taieri

NZWB — Woodbourne

NZWS — Westport

XNZ000J — Drury

Nigeria

DNAA — Nnamdi Azikiwe Intl

Norway

ENGM — Oslo Gardermoen

Pakistan

OPKC — Karachi Jinnah Intl

OPRK — Sheikh Zayed

OPRS — Risalpur

Palau

PTRO — Roman Tmetuchl Intl

Poland

EPLB — Lublin

EPGL — Gliwice Trynek

EPWR — Wroclaw Strachowice

XEP0008 — Swieta Katarzyna

Romania

LRBS — Bucarest Baneasa

LRSV — Stefan Cel Mare

Russia

UI78 — Mostovoy

XU003P — Esso

XU003Q — May Gatka

Russian Federation

UEEA — Aldan

UELL — Neryungri

Rwanda

HRYR — Kigali Intl

Saudi Arabia

OEJF — King Faisal Naval Base

Singapore

WSSL — Seletar

Sint Maarten (Dutch part)

TNCM — Princess Juliana Intl

Slovakia

LZIB — Bratislava

Slovenia

LJPZ — Portoroz

South Africa

FAUP — Upington

Spain

GEML — Melilla

LEBA — Cordoba

Spain (mainland section and Balearic Islands)

XLE0020 — Oteo de Losa

XLE002B — Chaira

XLE002O — El Carrascal

XLE002P — Tomas Fernandez Espada

XLE002X — Los Oteros

Sri Lanka

VCCG — Amparai

VCCK — Koggala AFB

VCCW — Wirawila

Sweden

ESSA — Stockholm Arlanda

Switzerland

LSGE — Ecuvillens

LSGG — Geneva

LSGP — La Cote

LSGS — Sion

LSPU — Munster

LSTO — Motiers

LSXU — [H] Untervaz

LSZF — Birrfeld

LSZJ — Courtelary

Turkmenistan

UTAA — Oguzhan Ashgabat Intl

USA United States

O24 — Lee Vining

O43 — Yerington Muni

O79 — Sierraville Dearwater

Ukraine

UKDR — Kryvyi Rih Intl

UKOH — Kherson Intl

United Kingdom

EGBG — Leicester

EGHH — Bournemouth

EGHJ — Bembridge

EGMC — Southend

EGSC — Cambridge

United Kingdom (and Crown dependencies)

XEG0056 — Newry private airstrip

XEG0058 — [H] Ailsa Craig Lighthouse

XEG005H — [H] Altnagelvin Hospital

XEG005P — [H] Salisbury Dist Hospital

XEG005W — Fleetlands

XEG005X — [H] St Mary's Hospital

United States

06C — Schaumburg Regl

07V — Cuchara Valley At La Veta

0Y6 — Lake Mills Muni

16Z — [S] Mc Grath

1MD5 — [H] Federal Support Center

1V6 — Fremont County

42VA — Virginia Beach

4G5 — Monroe County

4I0 — [X] Mingo County

4N7 — Greene

65NJ — [H] Helo Kearny Heliport

87VA — Cottonwood Farm

8A7 — Twin Lakes

99MN — [H] St Marys Hospital

FA54 — Coral Creek

KALX — Thomas C Russell Fld

KBBW — Broken Bow Muni

KBCB — Virginia Tech Montgomery Exec

KBIS — Bismarck Muni

KBUF — Buffalo Niagara Intl

KCLE — Cleveland Hopkins Intl

KCMI — Univ of Illinois Willard

KDET — Coleman A. Young Muni

KDKB — De KalbTaylor Muni

KEOK — Keokuk Muni

KFAF — Felker Army Airfield

KFLL — Fort Lauderdale Hollywood Intl

KGAI — Montgomery County Airpark

KGUP — Gallup Muni

KHHF — Hemphill Co

KHNR — Harlan Muni

KHSV — Huntsville Intl

KIMS — Madison Muni

KISM — Kissimmee Gateway

KISP — Long Island Mac Arthur

KJAC — Jackson Hole

KLAF — Purdue University

KLBE — Arnold Palmer Regl

KMKE — General Mitchell Intl

KMKY — Marco Island Exec

KMPI — Mariposa-Yosemite

KMSN — Dane County Regl

KNUW — Whidbey Island NAS

KOLF — L M Clayton

KOXB — Ocean City Muni

KPEA — Pella Muni

KPTN — Harry P Williams Mem

KRDK — Red Oak Muni

KRFD — Chicago Rockford Intl

KRNT — Renton Muni

KRYV — Watertown Muni

KRZN — Burnett County

KSAN — San Diego Intl

KSCH — Schenectady Co

KSDC — Williamson-Sodus

KSEG — Penn Valley

KSFM — Sanford Regl

KSFO — San Francisco Intl

KSLE — McNary Fld

KSMF — Sacramento Intl

KTEX — Telluride Rgnl

KTHM — Thompson Falls

KTMB — Miami Executive

KTNU — Newton Muni

KTPH — Tonopah

KYKN — Chan Gurney Muni

KZER — Schuylkill Co Joe Zerbey

MS88 — Oreck

NJ20 — Coyle Field

NV17 — Youngberg Ranch

NV40 — [H] Action

NV72 — Sweetwater (US Marine Corps)

NV78 — [H] REMSA / Care Flight

O57 — Bryant Field

PAGH — Shungnak

PAK — Port Allen

PAMC — Mc Grath

PHBK — Barking Sands PMRF

PHDH — Dillingham

PHJH — Kapalua

PS81 — [H] Robert Packer Hospital

Q20 — [H] USFS Bridgeport

S77 — Magee

SN34 — Rucker

W50 — Davis

United States (Contiguous)

KIAD — Washington Dulles Intl

KOZS — Camdenton Mem – Lake Rgnl

XK00C7 — Bald Eagle Airfield – Myakka

XK00CL — Grand Rock

XK00DS — Pomona Landing

XK00EG — [H] Erie County Medical Center

XK00EI — Peasley Field

XK00EM — Bakko Aviation

XK00EO — Rassawek

Uruguay

XSU0008 — Chuy

Uzbekistan

UTSS — Samarkand Intl

Vanuatu

NVVV — Bauerfield

Venezuela

SVEN — Encontrados


That’s all from this update. Catch you next time!

The post SDK News – 12.4.1 | A Quick Check-In appeared first on X-Plane Developer.

]]>
/2026/04/sdk-news-12-4-1-a-quick-check-in/feed/ 2
Worldeditor 2.7 is now fully available /2026/03/worldeditor-2-7-is-now-fully-available/ Fri, 06 Mar 2026 11:19:47 +0000 https://developer.x-plane.com/?p=41274

Worldeditor 2.7 is out of beta and now available. The X-Plane Gateway will now also accept submissions made using v2.7!

This is mostly a bug-fix release, but there are two new features included, including a refreshed UI!

Download Page
More Information (Beta 1 Post) Read More

The post Worldeditor 2.7 is now fully available appeared first on X-Plane Developer.

]]>

Worldeditor 2.7 is out of beta and now available. The X-Plane Gateway will now also accept submissions made using v2.7!

This is mostly a bug-fix release, but there are two new features included, including a refreshed UI!

Download Page
More Information (Beta 1 Post)

The post Worldeditor 2.7 is now fully available appeared first on X-Plane Developer.

]]>
GPC 2025 | The Aircraft Of Theseus /2026/03/the-aircraft-of-theseus-gpc-presentation-2025/ /2026/03/the-aircraft-of-theseus-gpc-presentation-2025/#comments Fri, 06 Mar 2026 10:44:54 +0000 https://developer.x-plane.com/?p=41270

In our latest post, we discuss what happened when Laminar visited the Graphics Programming Conference in 2025


In 2025, our resident Vulkanologist, Sidney Just, attended the Graphics Programming Conference (GPC) in Breda, Netherlands, to give a talk on how the X-Plane engine has evolved over the years. Read More

The post GPC 2025 | The Aircraft Of Theseus appeared first on X-Plane Developer.

]]>

In our latest post, we discuss what happened when Laminar visited the Graphics Programming Conference in 2025


In 2025, our resident Vulkanologist, Sidney Just, attended the Graphics Programming Conference (GPC) in Breda, Netherlands, to give a talk on how the X-Plane engine has evolved over the years. As we transition towards a modern GFX engine, the team has had to overcome sizable roadblocks while transitioning from OpenGL to Vulkan.

Just yesterday, the video was finally uploaded. So if you have some popcorn and a cup of coffee, enjoy 40 minutes of tech talk with Sidney, as we take you through where we’ve been, the work we did to improve X-Plane 12, and a glimpse at where we’re headed in the future.

Our massive congratulations to Sidney. We are very proud of the work he’s done (not only on this technical talk but also on his recent work on multithreading and Aftermath profiling). And thank you to the organisers of GPC for being an accommodating host, for the work they do, and the open provision of these talks.

Download Slides PDF

GPC Website

The post GPC 2025 | The Aircraft Of Theseus appeared first on X-Plane Developer.

]]>
/2026/03/the-aircraft-of-theseus-gpc-presentation-2025/feed/ 4
SDK News – 12.4.0 | Fast and Furious /2026/02/sdk-news-12-4-0-fast-and-furious/ /2026/02/sdk-news-12-4-0-fast-and-furious/#comments Tue, 24 Feb 2026 15:41:30 +0000 https://developer.x-plane.com/?p=41250

With X-Plane 12.4.0 now available, let’s take a deeper dive into some of the changes concerning X-Plane developers!

I am unusually tardy with this post, so I would first like to apologize for the delay. I chose today’s title mostly because of multi-threading… but also because I’m all about family. Read More

The post SDK News – 12.4.0 | Fast and Furious appeared first on X-Plane Developer.

]]>

With X-Plane 12.4.0 now available, let’s take a deeper dive into some of the changes concerning X-Plane developers!

I am unusually tardy with this post, so I would first like to apologize for the delay. I chose today’s title mostly because of multi-threading… but also because I’m all about family. And the X-Plane family has certainly come together over the holidays with our latest release.

12.4.0 is out now – Introducing some significant performance upgrades, A330 Improvements, Tobii integration, new art assets, and much more. We’ve been furiously working on this for quite a while in the latter half of 2025, and we are happy to see such a well-received reaction. I personally frequent Discord, Reddit, the Org forums, AVSIM, and other Facebook groups, and we want to make sure users are feeling more heard.

One thing that has impressed me of late is the amount of creations going on. RealOps is breaking ground with its ground-handling plugin. The wonderful scenery innovations by X-Codr. New career mode plugins. More people are trying out aircraft development. New developer tools/pull requests from XP2B. The community has been cooking lately!

More importantly, we’re focused on giving you guys and gals more features to create in X-Plane. This is going to be a big focus for some upcoming updates of ours. (No, that isn’t a reference to scenery… that comes later). But more on that another day!

So let’s get into what’s new for this update…


SDK Changes

SDK 430

SDK 430 is now available and compatible with X-Plane 12.4.0 or newer.

Warning: the 4.3.0 SDK incorrectly identifies itself as version “421” in the version included in X-Plane 12.4.0. Despite this, all entry points are present. The version number is corrected to 430 to match published docs as of X-Plane 12.4.1.

Official Changelog

Other Noteworthy Changes

  • Fixed an error where users might get the message “The sim destroyed an instance during the dag!” when using add-ons (XPD-17441)
  • Improved documentation of XPLM_MSG_DATAREFS_ADDED (XPD-17317)
  • Fixed return value of XPLMGetVirtualKeyDescription (XPD-17397)

Future SDK changes

We will/should be adding access to additional basemaps/terrain data in a future update.

What happened with plugins during 12.4.0?

The short story here is, we found quite a few plugins calling X-Plane functions before it was fully loaded, which is a big no-no. I’ve asked Ben to make a blog post in his free time about further details on this, and how you can best avoid such incidents in the future.

Can you improve documentation on this?

Short answer: Yes
Long answer: I don’t think it’s any secret that we’re in the middle of a large documentation revamp, so there will be plenty of forthcoming changes. When we’re ready to communicate more, we shall!


Performance Improvements

The glorious future is here! Or at least, partially. X-Plane now takes advantage of multi-threading for scenery only. I strongly encourage you to read Sidney’s post about it here, and make sure you understand performance here. But here are a few Q&A’s

Should I expect massive amounts of increases?
It depends on your hardware and what the bottleneck was in the first place. If you’re GPU-limited (which is your GPU Compute time taking longer than your CPU), you are unlikely to see any benefits

Is this the end of multi-core/threading improvements?
No! Please see Sidney’s post for a full outline. Additionally, 12.4.1 will have additional performance improvements.

Will this help my multi-monitor setup?
Not inherently, as this is geared towards the scenery system. We have plans to address multi-monitor displays and further parallelize that work. This is not a short-term item, and I would suggest you read Sidney’s article.

Are you working on device losses?
Yes, but with caveats. We know it occurs disproportionately more with AMD devices. However, we found user feedback to be particularly poor. Throughout 12.4.0 beta, we decided to enable a “partial flavour” of AMD aftermath by default, and this should help us get one step closer to diagnosing these issues.

For the bug trackers here, we have XPD-17857, if you want to follow along.

How can I help?
Contact us via support, and they will give you further instructions. And be prepared to submit Aftermath reports!


New Assets

WED artists, we won with this update. Petr and Justin have created a brand new round of assets, fulfilling some long-requested items.

Segmented Circle
lib/airport/markings/segmented_circle

Wind Tees (Currently Not Animated)
lib/airport/markings/wind_Tee

Signal Square (Common for small EU airfields)
lib/airport/markings/signal_square

New Glider Models: ASK-21 & Ventus 3
lib/airport/aircraft/gliders

Animated Cranes
lib/vehicles/static/tower_crane

Construction Material Objects: Cable Wires, Wooden Pallets, Steel Pipes, Concrete Pipes, Cement, PVC Pipes, Concrete Blocks, Steel Beam
lib/industrial_area/construction

VHF Dipole Antenna Tower
lib/airport/radars/VHF

RV/MotorHomes/Trailers
lib/vehicles/static/RVs

Camping Equipment: Tents, Chairs, Tables, Coolers
lib/public_area/camping

Completely Revamped Modern Cars
lib/cars

New Taxis
lib/cars

Pavements: Asphalt, Concrete, Grass, Mosaic, Tiled, Mulch, Grates (Pavements are 0.15m AGL, if you wish to place objects on top)
Documentation Here
lib/airport/ground/sidewalk_15cm

Planter Objects: Grass, Bushes, Rock Shrubs
lib/vegetation/planters

Fences: Mesh, Metallic, Stone Wall, Wooden
lib/vegetation/planters

Road Bumps
lib/airport/ground/roads/speed_bumps

We’ll certainly be back with even more assets in future updates (for those who attended our Discord Developer Stream over Christmas, if you know… you know). But my personal thanks to Petr and Justin for knocking these out of the park.

A Note On Grass…

Some of you will be looking at that grass polygon with a swooning desire to place large swathes of it over your airfields…

PLEASE, PLEASE, PLEASE…. DO NOT DO THIS!

This is a one-way track to performance degradation, and we will block gateway submissions that abuse this! We have also dreamed that one day the world will be filled with lush grass to touch. But this is not the device to get there. Keep your grass planter objects in small, localised areas.


Gateway Update

Finally, we have our latest round of Gateway airports by our incredible WED artists. I’m working with Julian to get more updates to you, but I’m in awe at some of the work being done by the artists lately.

Don’t forget that Worldeditor 2.7 Beta is also available to try (although you will not be able to submit gateway airports with this). This provides the ability to flatten the default mesh (default mesh only!)

(Note: This list is not a complete representation of all changed/added airports)


Australia

YAYE — Ayers Rock

YHGI — [H] Hogan Island

YMAY — Albury

YNBA — [H] Nubeena

YPAR — [H] Port Arthur

YRKB — [H] Rokeby Police Academy

YRTN — [H] Railton

YSHD — [H] Sheffield

YTSI — [H] Tasman Island

YTUL — [H] Tullah

YWDM — [H] Waddamana

YWTH — [H] Waterhouse Island

Austria

LOAV — Vöslau

LOKR — St. Donat-Mairist

LOLO — Linz-Ost

LOWG — Graz

LOWZ — Zell am See

XLO0002 — [X] Leopoldsdorf

XLO000B — Ameis

Bahamas

MYIG — Matthew Town

Belarus

UMMG — Hrodna

XUM000A — Shchuchyn

Belgium

EBBT — Brasschaat airfield

XEB0005 — [H] Oostdijckbank Platform

XEB0006 — [H] OSY-OS1ST Heliport

Bhutan

VQPR — Paro Intl

Bosnia and Herzegovina

XLQ000B — Lazy Horse Ranch

Brazil

SBGR — Gov André Franco Montoro

SDXX — [H] Fazenda Santa Vitoria

SNDU — Ponta do Sol

SNLO — Sao Lourenco

SSHK — Fazenda Jaguarandy

XSB000V — SiCPA

Bulgaria

LBBG — Burgas

Canada

C24 — Mineral County Memorial

CAK3 — Delta Heritage Air Park

CYFR — Fort Resolution

CYUY — Rouyn Noranda

CYVQ — Norman Wells

CYYU — Kapuskasing

XC002V — [S] Pistol Lake Seaplane Base

XC00DF — Minaki

China

XZ0036 — Zhongshan Sanjiao

XZ003F — Dunhuang Mingshashan

XZ003I — Yangjiang Heshan

ZLDH — Dunhuang

Czech Republic

LKPR — Praha – Ruzyne

XLK0009 — Hláska

DEU

ED1C — [H] Uniklinik Frankfurt a.M.

Democratic Republic of the Congo

XFZ0003 — Boma

Denmark

EKOD — Odense/Hans Christian Andersen

EKSP — Vojens / Skrydstrup

Estonia

EETN — Lennart Meri Tallinn

FRA France

2051 — [X] Cavallo

Finland

EFHK — Helsinki Vantaa

France

LFGI — Dijon Darois

LFPN — Paris Saclay Versailles

LFRC — Cherbourg Manche

LFYG — Cambrai Niergnies

Germany

EDAB — Bautzen

EDAZ — Schönhagen

EDBC — Magdeburg/Cochstedt

EDFM — Mannheim City

EDHM — Hartenholm

EDRM — Traben-Trarbach Mont Royal

EDTM — Mengen-Hohentengen

EDTR — Herten-Rheinfelden

EDWI — Wilhelmshaven JadeWeser

XED001U — [H] LRZ Schkeuditz / Dolzig

Germany (civil)

XEDB2 — Fürth-Seckendorf

Greece

LGSK — Alexandros Papadiamantis

Greenland

BGCO — Nerlerit Inaat

BGKK — Kulusuk

Hungary

LHKE — Kecskemét (Titán)

Iceland

BIIS — Isafjordur

India

VAUD — Udaipur

VIAR — Amritsar

VICG — Chandigarh Intl

VIDN — Dehradun

VIDP — Indira Gandhi Intl

XVI000I — Donyi Polo

Indonesia

WAPB — [X] Bula

WAPO — Larat

Ireland

XEI001K — [H] Bull Rock Lighthouse

Italy

LIEE — Cagliari Elmas

LIMF — Torino Caselle

LIPV — Venezia Lido G. Nicelli

LIRF — Leonardo da Vinci Intl

LIRQ — Firenze Peretola

XLI001Y — Avro

Kenya

HKMO — Mombasa Moi Intl

Libya

HL81 — Al Hamada Con 66 East

Mexico

MMPP — Punta Pescadero

Morocco

GMTN — Saniat Rmel

Nepal

VNLK — Lukla – Tenzing Hillary

Netherlands

EHEH — Eindhoven

XEH001E — [H] K12-D Heliport

XEH001F — [H] K12-K Heliport

XEH001G — [H] L10-E Heliport

XEH001H — [H] L10-L Heliport

XEH001I — [H] L10-M Heliport

XEH001J — [H] L10-A Heliport

XEH001K — [H] L10-C Heliport

XEH001L — [H] L10-F Heliport

XEH001M — [H] K12-G Heliport

XEH001P — [H] Hollandse Kust Zuid Alpha

XEH001Q — [H] Borssele Alpha

XEH001R — [H] Borssele Beta

XEH001S — [H] Lichteiland Goeree

XEH001T — [H] Europlatform

XEH0022 — [H] K12-A Heliport

New Zealand

NZLX — Alexandra Aerodrome

NZNS — Nelson

NZQN — Queenstown

Norway

ENTC — Tromso Langnes

Panama

XMP0003 — El Real de Santa Maria

Papua New Guinea

XAY004P — Suaka Airstrip

Philippines

RPLL — Ninoy Aquino Intl

RPMN — Sanga Sanga

RPVM — Mactan-Cebu

Poland

EPGD — Gdansk Lech Walesa

Romania

LRCL — Cluj Napoca

LROP — Otopeni / Henri Coanda

Russia

XU003M — Popovka

Russian Federation

UNWW — Spichenkovo

Saint Lucia

TLPC — George F L Charles

South Africa

FAMM — Mafikeng

Spain

LEBB — Bilbao

LECX — Castell de Castells Cocoll

LEVS — Cuatro Vientos

Spain (mainland section and Balearic Islands)

XLE002C — Godos – Caldas de Rey

XLE002Y — Gergal

Sweden

ESGG — Göteborg Landvetter

ESSA — Stockholm Arlanda

ESUP — Pajala

Switzerland

LSPF — Schaffhausen

LSZA — Lugano

LSZT — Lommis

LSZU — Buttwil

Taiwan

RCTP — Taipei Taoyuan Intl

USA United States

51R — Madisonville Muni

Ukraine

XUK0031 — Odesa Zastava

XUK0033 — Luhanka

XUK0034 — Oleksandriya

XUK0035 — Znamyanka

XUK0036 — Zhuravka

XUK003A — Volodymyrivka

XUK003B — Pavlysh

United Arab Emirates

OMDB — Dubai Intl

United Kingdom

EGHA — Compton Abbas

EGTR — Elstree

United States

0A3 — Smithville Muni

1VA4 — [H] Evergreen

3B5 — [X] Twitchell

4TE0 — [X] Lone Star Steel Co

80B — [S] Long Pond

8C5 — Toledo Muni

9C0 — [S] Peninsula Point Pullout

IA63 — Edgren

IN24 — [H] Franciscan Health M. City

KALS — San Luis Valley – Bergman Fld

KAMW — James Herman Banning Ames Muni

KANK — Harriet Alexander Field

KBNO — Burns Muni

KCOF — Patrick SFB

KCXE — Chase City Muni

KDTW — Detroit Metro Wayne County

KFAY — Fayetteville Rgnl/Grannis Fld

KFSM — Fort Smith Rgnl

KGBR — Walter J Koladza

KINW — Winslow-Lindbergh Rgnl

KLAS — Harry Reid Intl

KLAX — Los Angeles Intl

KLCK — Rickenbacker Intl

KLUK — Cincinnati Muni Lunken Fld

KMSP — Minneapolis Saint Paul Intl

KNGU — NS Norfolk

KORC — [X] Orange County Muni

KPIT — Pittsburgh Intl

KPOH — Pocahontas Muni

KSCK — Stockton Metropolitan

KSOY — [X] Sioux Center Muni

M57 — [S] Rangeley Lake

ME12 — [S] Brettuns Pond

ME27 — [S] Double A

PAAQ — Palmer Muni

PAEN — Kenai Muni

PAKT — Ketchikan Intl

PASI — Sitka Rocky Gutierrez

PAVD — Valdez Pioneer Fld

TN19 — [H] Harriman City

UT22 — [H] Logan Regl Hospital

W31 — Lunenburg County

W43 — Hulett Muni

W63 — Lake Country Regl

W78 — William M Tuck

WV32 — New River Gorge

XK005G — [H] Longview

United States (Contiguous)

XK00AO — [H] Intermountain Med Ctr

XK00DL — Triple Tree

XK00DY — Highland View Field

XK00DZ — [S] Camden

XK00E0 — Ridgeview

XK00E1 — [H] NorfolK NS Heliport

XK00E2 — [S] Lucky Landing Marina

XK00E3 — [H] Cranberry Isles

XK00E4 — [H] Utah Valley Regl Med Ctr

XK00E5 — Sioux County Rgnl

XK00E6 — River View Airpark

United States (Puerto Rico)

XTJ000T — [H] Costa Sur Power Plant

Uruguay

XSU0007 — Aeroclub de Rocha

Venezuela

SVOK — Oritupano


That’s all from this update. Catch you next time!

The post SDK News – 12.4.0 | Fast and Furious appeared first on X-Plane Developer.

]]>
/2026/02/sdk-news-12-4-0-fast-and-furious/feed/ 2
New Documentation – 12.4.0 | 3D Sidewalks /2026/01/new-documentation-available-12-4-0-3d-sidewalks/ /2026/01/new-documentation-available-12-4-0-3d-sidewalks/#comments Tue, 27 Jan 2026 20:11:39 +0000 https://developer.x-plane.com/?p=41224 X-Plane Frame

We have new documents available for our new 3D sidewalks in X-Plane 12.4.0. Check them out!

These include

  • Available sidewalk types/assets
  • Best practices for sidewalks
  • How to place assets on top of sidewalks
  • New planter objects
  • Recommended optimisation/performance information regarding the planter objects.

Read More

The post New Documentation – 12.4.0 | 3D Sidewalks appeared first on X-Plane Developer.

]]>
X-Plane Frame

We have new documents available for our new 3D sidewalks in X-Plane 12.4.0. Check them out!

These include

  • Available sidewalk types/assets
  • Best practices for sidewalks
  • How to place assets on top of sidewalks
  • New planter objects
  • Recommended optimisation/performance information regarding the planter objects.

Special thanks to Petr and Tom Kyler for making this available!

The post New Documentation – 12.4.0 | 3D Sidewalks appeared first on X-Plane Developer.

]]>
/2026/01/new-documentation-available-12-4-0-3d-sidewalks/feed/ 4
Worldeditor 2.7 Beta 1 is now available /2026/01/worldeditor-2-7-beta-1-is-now-available/ /2026/01/worldeditor-2-7-beta-1-is-now-available/#comments Mon, 26 Jan 2026 20:35:01 +0000 https://developer.x-plane.com/?p=41214 X-Plane Frame

Worldeditor 2.7-beta 1 is now available. This is mostly a bug-fix release, but there are two new features included, including a refreshed UI!

Download Page


Thanks to Marco and Cristiano, we can also join all the cool kids who have made their own dark themes. Read More

The post Worldeditor 2.7 Beta 1 is now available appeared first on X-Plane Developer.

]]>
X-Plane Frame

Worldeditor 2.7-beta 1 is now available. This is mostly a bug-fix release, but there are two new features included, including a refreshed UI!

Download Page


Thanks to Marco and Cristiano, we can also join all the cool kids who have made their own dark themes. We also take a bit of a departure from a skeuomorphism design to try to bring more contrast. Have a go and let us know what you think! (Just don’t suggest a light mode)

Changelog

  • Updated user interface with new “Dark Theme.”
  • New “Flatten Polygons” ability for scenery
  • New metadata property to define the altimeter setting for the airport (QNH/QFE)

About Polygon Flattening

Lets get this out of the way. THIS IS NOT A SURGICAL MESH EDITING TOOL! This is for light corrections to default mesh.

Polygon flattening can be activated using the “Polygon Tool” and inserting the attribute “::FLATTEN::.pol” into the “Name” and “Resource” boxes. The “Heading” attribute will define the height of the surface, and set all elevation nodes within its borders to the MSL elevation in meters that you put into the texture “heading” field

To get a better idea of where the (default) mesh elevation points are, go to View->Toggle Terrain to preview the wireframe

  1. WED artists must take note that this ability is not a replacement for mesh-editing, and scenery submits using this must only be used where necessary! Be warned that the chance for rejection using this tool is quite high if improperly used!
  2. This will not create additional vertices in your mesh. Artists are still limited by mesh resolution

    (Obvious points here, this is for current-gen scenery only. Not next-gen scenery. Breathe)
Responsive Before and After Slider
EXPERIMENTAL USE ONLY!!! -- [What?] -- Login to add public annotations [How? >>YouTube].
Before After

The post Worldeditor 2.7 Beta 1 is now available appeared first on X-Plane Developer.

]]>
/2026/01/worldeditor-2-7-beta-1-is-now-available/feed/ 15
The glorious multi core future is now the boring present /2025/12/the-glorious-multi-core-future-is-now-the-boring-present/ /2025/12/the-glorious-multi-core-future-is-now-the-boring-present/#comments Fri, 19 Dec 2025 16:42:33 +0000 https://developer.x-plane.com/?p=41154 This is a blog post that I have dreamed of writing for years, in fact ever since I got hired 8 years ago: The glorious multi-core future is now. But, as always, there are strings attached so let me explain what’s in this release and what to expect. Read More

The post The glorious multi core future is now the boring present appeared first on X-Plane Developer.

]]>
This is a blog post that I have dreamed of writing for years, in fact ever since I got hired 8 years ago: The glorious multi-core future is now. But, as always, there are strings attached so let me explain what’s in this release and what to expect. First though, if you need a primer on performance in general, you can read all about it here: A very quick performance primer

Terms of service

1. Expectations

Let me get this out of the way first: Don’t bother asking what you can expect in terms of performance gains. You could see anything from none, moderate to a lot. Multi-threading inherently only affects the CPU, so if you are GPU-bound, you won’t see any improvements in terms of FPS because the limiting factor is still the GPU. Everything else depends on how you have configured X-Plane, your hardware, what add-ons you are running with etc. The only way to know what, if any, improvements you will see is by installing 12.4 and trying it out yourself.

2. Future Plans

Also, this isn’t the last multi-threading update. I’m very excited about it, but it’s a small fraction of what we have planned. There is more engine refactoring work to be done, more code to be optimized, but we figured “Why sit on improvements that we have right now when we could get them out to customers to properly battle test them?”

Where we came from

One myth is that X-Plane was not multi-threaded at all, which depending on your point of view is either patently false or somewhat true. X-Plane does a lot of work on background threads, especially scenery loading and texture paging. But those are all long running background tasks, what we lacked so far was true per-frame multi-threading. We had a few small tasks that could run in parallel, but the bulk of the frame was generated on the main thread.

It’s generally assumed that the flight model takes up the most time for X-Plane, but in practice, it’s usually scene graph traversal and rendering that make up the bulk of frame time, sometimes up to 75%. The more demanding your scenery, the more time will be spent on this task. For those not in game dev, scene graph traversal is the process of, well, traversing the scene and figuring out what needs to be rendered and what doesn’t. The second part is processing the data that needs to be rendered and then actually issuing all of the rendering commands, this usually involves sorting the render data in some way to reduce the number of material and state changes. All of this takes time and the more complex the scenery, the more time this takes.

There is one more thing to keep in mind: Shadows. Shadows get rendered by rendering the scene from the suns perspective, which is then used to figure out which parts of the scene the sun can see and which it can’t. By definition, everything that the sun can see is in the light and everything the sun can’t see is in the shadows. But that means that we actually have to traverse the scene twice, once for shadow rendering and once for the main scene, so while the cost isn’t double, shadows aren’t exactly free either.

You are here

X-Plane Frame

^ This is a very simplified graphic demonstrating the concept of threading in X-Plane. It is neither a statement of the number of cores used nor the number of jobs created per frame.

Because the scenery traversal process takes up such a large amount of the frame time, it makes for an obvious target for multi-core improvements. And that’s exactly what’s in 12.4. As soon as the camera is resolved and we actually know where the virtual eye is and which direction it’s pointing, we kick off the scene traversal process for shadows and the main scene. It’s actually done in multiple steps across multiple CPU cores, so that we can minimize the time it takes from start to finish.

While this goes on in the background, we are now also running the panels and avionic devices. This lets us effectively hide slower avionic updates, since X-Plane can go wide on crunching the scenery at that time. You will especially notice this with add-on aircraft that have very high panel draw times, but even our Garmin and built-in instruments aren’t totally free either.

Additionally, we try to schedule things in an ideal way. So we aim to get the shadow scenery traversal and preparation done first, so as soon as the panels are done we can start actually encoding the commands for the shadow rendering. While this goes on, the much more expensive main frame scenery traversal can finish up in the background and ideally we can immediately hit go on its rendering command generation once that is ready.

Of course this is the theory, in practice things might not finish in time and then the main thread has to wait for results to come in. It should still be faster because the scene traversal itself is done in parallel, so it should be faster than if only the main thread was working on it by itself. But theory and practice don’t always line up. Again, the only way to know what perf you will see is by testing this yourself.

Additionally, we have also improved the drawing hot path and reduced the number of state changes X-Plane has to make in order to from one object to another. We also moved a lot of the just-in-time calculation for material parameters and data to the background thread so that once we are actually drawing things, we can just emit commands as fast as possible.

However, actual drawing of the scene is still single-threaded! Once the parallel scene traversal has concluded, X-Plane’s main thread will still create one command buffer to encode all of the rendering needed. Likewise, multi-monitor set ups could see a much bigger improvement in theory, but in practice we still have to traverse the scenery of each monitor in sequence.

Where we are going

X-Plane Frame

The obvious two are parallel rendering of the frame and doing multiple monitors in parallel. The less obvious one is that we could also do the shadows and main rendering in parallel and then just submit the work to the GPU in the right order. All of these are on the roadmap, but they require more work to the engine itself. There is still a bunch of shared global state when it comes to actually rendering a scene, which we’ll have to clean up first.

One of the things that makes me really excited is the new job system that has actually been shipped in 12.3 and which is the underlying thing that makes the multi core work possible. Instead of carefully writing C++ that dispatches and joins all work in just the right order, we can now describe the frame as individual jobs and their dependencies and the computer can figure out the optimal way to dispatch them. This is analogous to the render graph system that we introduced in 12.06 which allows us to describe the scene rendering as a series of nodes with carefully defined dependencies and then the computer can figure out how to actually bake the commands and build the resources.

This gives us huge flexibility in terms of being able to re-organize the frame, since it’s no longer a massive monolithic chunk. Besides the obvious grand improvement that is parallel rendering, we also expect to be able to leverage this system to further improve performance by scheduling the frame more efficiently. But now that the initial work is the boring present, all of this is becoming the new glorious future.

The post The glorious multi core future is now the boring present appeared first on X-Plane Developer.

]]>
/2025/12/the-glorious-multi-core-future-is-now-the-boring-present/feed/ 18
SDK News – 12.3.0 | Radar Love /2025/11/12-3-0-radar-love/ Wed, 05 Nov 2025 21:30:21 +0000 https://developer.x-plane.com/?p=41138
X-Plane Frame

Let’s go!

We’ve got a thing that’s called Radar Love
We’ve got a line in the sky
Radar Love!

Ok enough of that… 12.3.0 is finally available as a public release, and we can’t contain our excitement. Let’s recap what is new! Read More

The post SDK News – 12.3.0 | Radar Love appeared first on X-Plane Developer.

]]>

X-Plane Frame

Let’s go!

We’ve got a thing that’s called Radar Love
We’ve got a line in the sky
Radar Love!

Ok enough of that… 12.3.0 is finally available as a public release, and we can’t contain our excitement. Let’s recap what is new!


Aircraft & Plugin Developers

Weather Radar

It’s finally here: the weather radar is now available in X-Plane. This is a major enhancement over the pre-existing EFIS radars, which are a rather crude depiction of NEXRAD/Cloud coverage… and not a real-time probe of cloud precipitation (and thus simulating the radar returns.)

Aircraft Authors have a few options when implementing WXR

  1. We’ve provided ready-made default EFIS instruments so that developers can quickly pick and choose several styles and functions that best resemble/match their aircraft
  2. We provide data to developers (along with a demonstration aircraft*) so that users can process and draw their own radar maps.

For more information about implementing a WXR, see this article

/article/weather-radar-for-x-plane-12-3-1/

*The Baron 58 in X-Plane uses the RDR-2000, which is actually a plugin and art resources completely separate from our default instruments. To discover custom drawing, you can follow along the code-base here.

https://github.com/X-Plane/RDR-2000

SDK 420 & Weather API

We’ve got a new version of our SDK for developers, which includes the following:

  • New weather APIs allow plugins to specify weather at multiple points for
    custom weather that varies spatially.
  • The weather info structure is extended to support new data fields.
  • Extended texture ID enumerations to access the radar return texture for
    avionics drawing callbacks.
  • Instances can be located using double-precision co-ordinates, and can be
    set to automatically move to match scenery co=ordinate shifts.
  • Extended cursor enumerations for display and avionic cursor callbacks.
  • Compiled against FMOD 2.0.2

/sdk/plugin-sdk-downloads/


Scenery Developers

Scenery Artists also get a few new improvements. Some of which were also requested by the community. These include…

  • New Taxiway/Runway Construction Barricades – Useful for delineating the edge of… well… taxiways and runways. These come in a variety of flagged and illuminated variants, so there will be plenty pleasing
  • Some new Quonset Hut Variations
  • Some new *Static* water polygons and water edge markings. These are designed to nicely blend the edge of water polygons and create convincing looking lakes and embankments. Or you can create the world’s largest (and shallowest) swimming pool!
  • An update to some terminal facades to include decals
  • New weather effects applied to parking lots and hangars. Snow will no longer accumulate in hangar interiors and ruin your C-Check!
X-Plane Frame

X-Plane Frame

This now takes our feedback list to…

X-Plane Frame

Ya’ll are gonna love the next batch of assets currently in development… SPOILERS 🙂
(Skips away like a schoolgirl)


Gateway Updates

Finally, a huge thanks again to our Gateway artists. This time around, we have 405 airport updates/or additions for 12.3.0. (Not every airport is represented; the list is around 98% complete)

Algeria

  • DAUZ – Zarzaitine – In Amenas

Argentina

  • SAEZ – Ministro Pistarini Intl 
  • SAME – El Plumerillo

Australia

  • YBHM – Hamilton Island 
  • YBSU – Sunshine Coast 
  • YBTL – Townsville Intl 
  • YLTV – Latrobe Valley 
  • YMUL – Murray Field 
  • YWHA – Whyalla

Austria

  • LOWW – Wien-Schwechat

BGR Bulgaria

  • LB21 – Graf Ignatievo AB

Belgium

  • EBBR – Brussels National
  • EBBY – Baisy-Thy
  • EBLG – Liege

Belize

  • MZ10 – San Pedro John Greif II

Bolivia

  • SLCA – Camiri

Botswana

  • FBXB – Xaxaba

Brazil

  • SBRF – Guararapes – Gilberto Freyre
  • SIMK – Tenente Lund Presotto

Canada

  • AJ4 – Anahim Lake
  • CAG8 – [S] Pender Harbour
  • XC0046 – [H] St Augustin Heliport
  • AH3 – Courtenay Airpark
  • CCD2 – Springdale
  • CST3 – Saint Lazare
  • CYHZ – Halifax Stanfield Intl
  • CYIB – Atikokan Muni
  • CYVG – Vermilion
  • CYYZ – Toronto Lester B Pearson Intl
  • XC0038 – [S] Taltheilei Narrows
  • XC00D5 – Clairmont/Meyer’s Airstrip
  • XC00DE – Taltheilei Narrows

China

  • XZ0015 – Chengdu Tianfu Intl
  • ZGGG – Guangzhou Baiyun Intl
  • ZHHH – Wuhan Tianhe Intl
  • ZSJN – Jinan Yaoqiang Intl
  • ZSSM – Sanming Shaxian
  • ZULS – Lhasa Konggar

Croatia

  • LDSB – Brac

DEU Germany

  • ED1J – [H] Wiesbaden Unfallklinik HSK
  • EDWT – Blexen

Denmark

  • EKAH – Aarhus
  • EKRB – [H] Bornholm HEMS
  • EKRK – Copenhagen Roskilde Intl
  • EKRN – Bornholm Rønne
  • EKYT – Aalborg

ESP Spain

  • LEVG – Villanueva de Gallego

Egypt

  • HEBA – Borg el Arab

El Salvador

  • MSLP – El Salvador Intl

Estonia

  • EERA – Rapla
  • EETN – Lennart Meri Tallinn

Finland

  • EFET – Enontekiö
  • EFMI – Mikkeli

France

  • LFAC – Calais Marck
  • LFBD – Bordeaux Merignac
  • LFKL – Lyon Brindas
  • LFPX – Chavenay Villepreux
  • LFQQ – Lille Lesquin
  • LFSL – Brive Souillac

Germany

  • EDAB – Bautzen
  • EDAY – Strausberg
  • EDAZ – Schönhagen
  • EDBC – Magdeburg/Cochstedt
  • EDDB – Berlin Brandenburg
  • EDDH – Hamburg Fuhlsbuettel
  • EDDL – Duesseldorf
  • EDDP – Leipzig-Halle
  • EDDS – Stuttgart Manfred Rommel
  • EDFE – Frankfurt-Egelsbach
  • EDFM – Mannheim City
  • EDFQ – Allendorf/Eder
  • EDGS – Siegerland
  • EDHK – Kiel-Holtenau
  • EDHP – [X] Pellworm
  • EDKF – Bergneustadt-Auf dem Duempel
  • EDKL – Flugplatz Leverkusen
  • EDLI – Bielefeld
  • EDME – Eggenfelden
  • EDMO – Oberpfaffenhofen
  • EDMS – Straubing
  • EDMV – Vilshofen
  • EDQA – Bamberg-Breitenau
  • EDQG – Giebelstadt
  • EDRB – Bitburg
  • EDRK – Koblenz – Winningen
  • EDRY – Speyer
  • EDTD – Donaueschingen-Villingen
  • EDTM – Mengen – Hohentengen
  • EDTX – Schwäbisch Hall – Weckrieden
  • EDTY – Schwäbisch Hall – Adolf Würth
  • EDWE – Emden
  • EDWF – Leer-Papenburg
  • EDWG – Wangerooge
  • EDWI – Wilhelmshaven JadeWeser
  • EDWJ – Juist
  • EDWS – Norden Norddeich
  • EDWY – Norderney
  • EDXF – Flensburg-Schäferhaus
  • EDXJ – Husum-Schwesing
  • EDXK – Leck
  • EDXO – Sankt Peter-Ording
  • EDXW – Sylt
  • EDY1 – Homberg Ohm
  • ETHL – Laupheim Air Base
  • ETOU – Wiesbaden Erbenheim AAF

Germany (civil)

  • XEDBB – Bundenthal-Rumbach (Söller)
  • XEDDO – Konz-Koenen
  • XEDGK – Weissenburg-Wülzburg

Greece

  • LGBL – Nea Anchialos
  • LGIR – Iraklion Nikos Kazantzakis
  • LGLR – Larissa
  • LGRX – Araxos
  • LGSA – Chania Ioannis Daskalogiannis
  • LGTG – Tanagra
  • LGTL – Kasteli
  • LGTS – Thessaloniki Makedonia
  • XLG000E – Koropi Profarta
  • XLG000F – Antiparos

Greenland

  • BGGH – Nuuk

Hungary

  • LHPR – Györ-Per

Indonesia

  • XWA04 – [H] Taro Elephant Safari Park
  • XWA10 – [H] W (Marriott) Seminyak

Iceland

  • BIGJ – Gjogur
  • BIVM – Vestmannaeyjar

India

  • VEBS – Biju Patnaik Intl
  • VEKU – Silchar
  • VICG – Chandigarh Intl
  • VILK – Chaudhary Charan Singh Intl
  • XVI000L – Navi Mumbai Intl

Indonesia

  • WAKK – Merauke Mopah
  • XWI000L – Morowali Industrial Park

Ireland

  • XEI001W – Ballyvalloo

Italy

  • LIEO – Olbia
  • LIMC – Milano Malpensa
  • LIPR – Rimini
  • LIPV – Venezia Lido G. Nicelli
  • XLI001R – Brixen Neustift Vahrn

Japan

  • RJCO – Sapporo Okadama
  • RJSA – Aomori

Kenya

  • HKEL – Eldoret Intl

Lebanon

  • OLBA – Rafic Hariri Intl

Libya

  • HLLQ – El Beida – Al Abraq

MEX

  • MM57 – Salina Cruz
  • MM59 – Pablo L Sidar
  • XMM0006 – Felipe Carillo Puerto

Malaysia

  • WBKS – Sandakan

Mexico

  • MM29 – Ta Lo de Soto
  • XMM000L – Chapala
  • XMM000N – Huajuapan
  • XMM000U – Aguililla
  • XMM000V – Purepecha
  • XMM000W – Tonala
  • XMM000X – Llano Grande
  • XMM000Y – Pista del Centro
  • XMM000Z – Punta Pajaros

Morocco

  • GMAZ – Zagora
  • GMMX – Marrakech Menara

NAM Namibia

  • FYBG – Bagani
  • FYOK – Okakarara

Netherlands

  • XEH000B – Venlo Eindhoven Zweefvliegclub

Nigeria

  • DNMM – Murtala Muhammed Intl

Norway

  • ENAT – Alta
  • ENZV – Stavanger Lufthavn Sola
  • XEN002A – [H] Haukeland U. Sykehus
  • XEN002B – Gronneviksoren

PNG Papua New Guinea

  • LMI – Lumi

Papua New Guinea

  • AUJ – Ambunti
  • AYMD – Madang
  • AYWK – Wewak
  • XAY000N – Yifki
  • XAY000P – Hewa
  • XAY000R – Agali
  • XAY002E – Kelabo
  • XAY0031 – Koroba
  • XAY0032 – Fugwa
  • XAY0033 – Pori
  • XAY0034 – Auwi
  • XAY0035 – Kopiago
  • XAY0036 – Arou
  • XAY0037 – Yatoam
  • XAY003C – Tekin
  • XAY003D – Bak

Paraguay

  • SG67 – Estancia Pai Quara
  • SGCO – Teniente Col. Carmelo Peralta
  • SGPI – Carlos Miguel Gimenez

Peru

  • SPST – Cadete Fap Guillermo Del Casti

Philippines

  • RPLL – Ninoy Aquino Intl
  • RPMC – Cotabato
  • RPMG – Dipolog
  • RPMO – Ozamis
  • RPMP – Pagadian
  • RPMS – Surigao
  • RPMV – Ipil
  • RPUO – Basco
  • RPUY – Cauayan
  • RPVP – Puerto Princesa
  • RPVR – Roxas

Poland

  • EPMR – Miroslawice
  • EPWA – Warsaw Chopin
  • EPWR – Wroclaw Strachowice
  • EPWS – Wroclaw Szymanow

Russian Federation

  • UWSG – Saratov-Gagarin
  • XU003H – Peshkovo
  • XU003I – Volzhanka
  • XU003K – Yessentuki
  • UEEE – Yakutsk
  • UHPA – Ust Pakhachi
  • UIIB – Belaya
  • UIUB – Bagdarin
  • ULLI – Pulkovo Intl
  • URMG – Grozny

Saudi Arabia

  • OEMA – Prince Mohammad bin Abdulaziz

Solomon Islands

  • AGAR – Ulawa
  • AGRM – Ramata

South Africa

  • FAOB – Overberg AB
  • XFA000Y – Sutherland

Korea, Republic of

  • XRK0005 – Goheung Aviation Center

Spain

  • LEAS – Asturias
  • LEMS – Barcelona – Bages
  • LERI – Alcantarilla
  • LESA – Salamanca
  • LETG – Toledo – Algodor
  • LEVD – Valladolid/Villanubla

Spain (Canary Islands)

  • XGC0007 – Rosinos de la Requejada

Spain (mainland section and Balearic Islands)

  • XLE002F – El Membrillar
  • XLE002G – Peralveche
  • XLE002H – Aerodromo Loring
  • XLE002J – Sonseca (Villaverde)

Sudan

  • HSPN – Port Sudan Intl

Switzerland

  • LSGB – Bex
  • LSMF – Mollis
  • LSZX – Schaenis

Taiwan

  • RCMQ – Taichung/Cingcyuangang
  • RCSS – Taipei Songshan Intl
  • RCTP – Taipei Taoyuan Intl

Tanzania

  • XHTML – Mahalae

Thailand

  • VTPM – Tak Mae Sot

Turkey

  • LTAJ – Oguzeli
  • LTBU – Corlu AB
  • LTCA – Elazig
  • XLT0003 – Cukurova

Turkmenistan

  • UTAK – Turkmenbashi

Ukraine

  • XUK000T – Lutsk AB
  • XUK0026 – Haisyn
  • XUK0027 – Filyutka
  • XUK0028 – Sutysky
  • XUK0029 – Nalyvaikivka
  • XUK002A – Lukvytsia
  • XUK002B – Irshava
  • XUK002C – Hardyshivka
  • XUK002D – Korsak
  • XUK002E – Talne
  • XUK002F – Bershad’
  • XUK002G – Divychky
  • XUK002H – Byshiv
  • XUK002I – Buzova
  • XUK002J – Slobidka
  • XUK002K – Chemer
  • XUK002L – Izmail
  • XUK002M – Kamianyi Mist
  • XUK002N – Pol’ove
  • XUK002O – Kremydivka

United Arab Emirates

  • OMDB – Dubai Intl

United Kingdom

  • EGBB – Birmingham
  • EGED – Eday
  • EGHF – Lee on Solent
  • EGKE – Challock
  • EGKR – Redhill
  • EGLA – Bodmin
  • EGLC – London City
  • EGPH – Edinburgh
  • EGPI – Islay
  • EGTK – Oxford Kidlington
  • EGXE – RAF Leeming
  • EGCM – Leeds East
  • XDAV – [X] Davidstow Moor
  • XEG005V – Kittyhawk

United States

  • 47N – Central Jersey RGNL
  • 4B6 – Ticonderoga Muni
  • 1C5 – Bolingbrook’s Clow INTL
  • 4B8 – Robertson Field
  • 60J – Odell Williamson Muni
  • 9S4 – Mineral County
  • M54 – Lebanon Muni
  • N27 – Bradford County
  • O09 – Round Valley
  • S17 – Twin Lakes
  • W35 – Potomac Airpark
  • 09Y – [S] Wipline
  • 0KS3 – Camp Chippewa
  • 17NC – Mitchell Field
  • 1AK1 – Crevice Creek
  • 22M – Pontotoc County
  • 2W5 – Maryland
  • 4AK6 – Wolf Lake
  • 5VA2 – [H] Sullins
  • 61GA – Pea Patch Aerodrome
  • 6VA2 – Loury Lester Airpark
  • 76GA – Landings East Sylvania
  • 79VA – [H] Windsor
  • 93FD – Chumuckla 20-20
  • 94TA – Reece Field
  • 97PA – Willows
  • 99NY – Hibbards
  • AK10 – Ernies Lodge
  • AK97 – Boswell Bay
  • AL27 – Headquarters
  • AL34 – Henson Field
  • AR27 – Lollars Creek Farm
  • AR34 – Pine Village
  • AR43 – Brickey – Private
  • AR94 – Squirrel Run
  • AZ31 – Serene Field
  • AZ32 – Roesner Ranch
  • KACV – Cali Redwood Humboldt Co
  • KALW – Walla Walla Regl
  • KBDU – Boulder Muni
  • KCHS – Charleston AFB Intl
  • KCKI – Williamsburg Regl
  • KCXY – Capital City
  • KDAW – Skyhaven
  • KDCA – Ronald Reagan Washington Ntnl
  • KDYT – Sky Harbor
  • KEDW – Edwards AFB Rogers Dry Lake
  • KEZF – Shannon
  • KFNB – Brenner Fld
  • KFRR – Front Royal-Warren County
  • KGGE – Georgetown County
  • KGMU – Greenville Downtown
  • KGUC – Gunnison Crested Butte Rgnl
  • KHII – Lake Havasu City
  • KHLX – Twin County
  • KHOT – Memorial Field
  • KHSP – Ingalls Field
  • KILM – Wilmington Intl
  • KJFK – John F Kennedy Intl
  • KLAL – Lakeland Linder Intl
  • KLIT – Bill and Hillary Clinton Ntl
  • KLKR – Lancaster County-McWhirter
  • KLNP – Lonesome Pine
  • KLRO – Mt Pleasant Regl-Faison Field
  • KLXV – Lake Co
  • KMHP – Metter Muni
  • KMKC – Charles B Wheeler Downtown
  • KMKJ – Mountain Empire
  • KMNI – Santee Cooper Regl
  • KMQS – Chester County G O Carlson
  • KMSP – Minneapolis Saint Paul Intl
  • KMTV – Blue Ridge
  • KNKT – Cherry Point MCAS
  • KOFP – Hanover County Muni
  • KOMH – Orange County
  • KONT – Ontario Intl
  • KORS – Orcas Island
  • KPDK – Dekalb Peachtree
  • KPVD – Theodore Francis Green State
  • KRMN – Stafford Regl
  • KSAF – Santa Fe Muni
  • KSBP – San Luis County Regl
  • KSEP – Stephenville Muni
  • KSHD – Shenandoah Valley Regl
  • KSJC – Norman Y Mineta San Jose Intl
  • KSRB – Upper Cumberland Regl
  • KSUT – Cape Fear Regl/Howie Franklin
  • KTGI – Tangier Island
  • KTLH – Tallahassee Intl
  • KTNT – Dade-Collier
  • KTUS – Tucson Intl
  • KTVY – Bolinder Field Tooele Valley
  • KUDG – Darlington County
  • KVPC – Cartersville
  • KXSA – Tappahannock-Essex County
  • MT56 – [H] Sourdough Island
  • PABE – Bethel PAWS – Wasilla
  • PHNL – Daniel K. Inouye Intl
  • SC31 – [H] Springs Memorial
  • VA25 – Twin Towers
  • VA27 – Moorefield’s Airstrip
  • W05 – Gettysburg Regl
  • W42 – Fallston
  • W75 – Hummel Field
  • Y49 – Walker Muni
  • KLUA – Luray Caverns
  • KVKX – Potomac
  • XK00DG – [H] Columbus Regl Med Ctr
  • XK00DH – [H] Dosher
  • XK00DJ – Hunting Creek Farm
  • XK00DK – Garner Field
  • XK00DL – Triple Tree
  • XK00DM – Weaver Field
  • XK00DN – [H] Rockingham Mem’l Hosp
  • XK00DO – Cool Water
  • XK00DP – Robbie Campbell Meml Airfield
  • XPH000I – Queens Medical center

The post SDK News – 12.3.0 | Radar Love appeared first on X-Plane Developer.

]]>
How to improve X-Plane and not get arrested /2025/09/how-to-improve-x-plane-and-not-get-arrested/ /2025/09/how-to-improve-x-plane-and-not-get-arrested/#comments Sat, 13 Sep 2025 01:38:36 +0000 https://developer.x-plane.com/?p=41140 In this article, Philipp Ringler takes matters into his own hands when trying to get EFBs compatible with X-Plane. The results are pretty crazy…

X-Plane supports connecting your favorite real-world EFB app like XAvion, WingXPro, ForeFlight and FlyQ. This way, you can use your iPad or tablet just like you would in a real cockpit – display enroute charts, approach plates, with optional weather and traffic overlays. Read More

The post How to improve X-Plane and not get arrested appeared first on X-Plane Developer.

]]>
In this article, Philipp Ringler takes matters into his own hands when trying to get EFBs compatible with X-Plane. The results are pretty crazy…


X-Plane supports connecting your favorite real-world EFB app like XAvion, WingXPro, ForeFlight and FlyQ. This way, you can use your iPad or tablet just like you would in a real cockpit – display enroute charts, approach plates, with optional weather and traffic overlays.

This worked extremely well with the XAvion app, a Laminar in-house product, but for 12.3 I wanted to improve support for other popular apps.

Foreflight showed me where I was, and also some traffic diamonds around me, but synthetic vision didn’t work, relative motion and tail numbers on the traffic didn’t work, there was no METAR and the NEXRAD didn’t show either.

Getting synthetic vision to work required sending the AHRS data in a way modern EFBs understand. Austin had coded this in 2013 when the ADS-B receiver of choice was a little plastic box called Clarity, that when you pushed the on-off button too hard just collapsed on itself. We’ve had several that lost their on-off button after you turned it off a bit too vigorously.

This was before the Appareo Stratus, uAvionics Sentry and other popular devices existed.

It’s been 12 years since then and X-Plane still pretended to be this falling apart, overheating plastic box… And Foreflight would flat out reject anything that X-Plane tried to tell it.

Luckily, it is easy nowadays to support ADS-B and GDL-90 thanks to an open-source project called Stratux!

I started by turning X-Plane into a simulated Stratux rather than a Clarity. Added the new AHRS messages, support for barometric pressure, etc.

Now, Synthetic Vision on the iPad was working! Traffic had relative motion!

But the weather was still stubbornly refusing to show up, even though all the weather packets were absolutely according to spec, and parsed to readable METARS, etc…

So something was still different.

Time to go wardriving!

I looked up the list of ADS-B towers: http://towers.stratux.me/

And glued my DIY Stratux into the window of my Tesla and went to see a tower!

These towers are optimized for sending data upwards into the sky, so you have to get rather close to them to pick up any signal on the ground.

I found one, parked my car, and started recording:

X-Plane Frame

X-Plane Frame

Unfortunately, the first tower I went to only rebroadcast traffic, but did not send any weather!

So, I had to drive to a different tower, until I found one that gave me the weather:

X-Plane Frame

Picture me, parked outside the airport gate, with this thing in the window with wires coming off of it.

About 10 minutes in, some people from the local helicopter medical airlift service come out and politely ask me if I need help. I convinced them that I had no nefarious intent, was not spying, and merely taking advantage of the good reception under the tower…

Spoiler alert: I did not get arrested that day, despite having what looked like a makeshift detonator in the window.

With a few Megabytes of recorded FIS-B messages, I set up my remote office, and started to analyze what the difference was between the messages X-Plane sent and the messages I recorded from the tower:

X-Plane Frame

Turns out, X-Plane didn’t fill in some header data containing a 80ns timestamp that shows when the packet was received from the tower (not the age of the weather report, simply when the receiver picked up the packet, measured using the GPS clock of the receiver).

Once I added this missing data, the weather is accepted as valid by my real EFB!

And boy does this work now! Look at all this data going into ForeFlight:

X-Plane Frame

Now, you can tap an airport in ForeFlight, and it will show you the METAR of the actual weather in X-Plane at that airport, correctly indicating it came from ADS-B:

X-Plane Frame

These two aircraft are AI aircraft, and the thunderstorm cloud north of Greensboro really was there on that day, but what you are seeing is the weather recorded on our server, replayed by X-Plane, and transmitted onto the iPad by X-Plane, showing what the weather looked like that afternoon!

And here you can see it works great with user-defined weather as well! Frankfurt did NOT have thunderstorms like that. This is simply me starting X-Plane in EDDF and setting the weather preset to nasty weather:

The post How to improve X-Plane and not get arrested appeared first on X-Plane Developer.

]]>
/2025/09/how-to-improve-x-plane-and-not-get-arrested/feed/ 5