Development Update Q1 2026

Written by martin published on May 11, 2026 in News

I know "Q1 2026" is a bit of a stretch as it's already mid-May. But it was a busy few months: finishing off last year's big features, getting the codebase into shape with a round of spring cleaning, and — finally — laying the technical groundwork for the long-awaited UI Refresh. Read on for the full breakdown and make sure to check the heads-up about upcoming visual changes before you do.

A Heads-Up: Temporary Design Inconsistencies Incoming

If you've been playing for a while, you'll know the game currently offers a "classic" color theme alongside the light and dark one. And while it has a special place in my heart (and likely many others): the classic theme is effectively deprecated at this point and will eventually be removed as part of the UI Refresh, in favour of what's become the standard these days — a proper light and dark mode according to the operating system's setting, with an option for users to override it.

Beyond that, as I start rolling out the first gen-3 components in the coming weeks (more on that in the UI Refresh section below), you may notice the occasional visual inconsistency here and there — like parts of the (new) page frame not quite matching the look and feel of (existing) content. This is expected and temporary. I intend to do the migration in an incremental fashion rather than one big risky switch, so there will be a transition period. The classic theme will likely be particularly affected as I won't spend resources on doing adjustments specific to that theme.

I wanted to flag this upfront rather than have anyone think something is broken. Thanks a lot for your understanding!

Location-Based Demand (LBD) — Refinements & Ongoing Balancing

Coming back from the winter break, my first order of business was tidying up the Location-Based Demand feature that I had rushed out just before Christmas. As a first visible step (week 2), I adjusted the ground network tab of airport info pages to show connected locations rather than other airports, and updated airport maps to display those locations as catchment area hotspots. I also took a deep dive into the location clustering algorithm — the piece of code that reduces hundreds of thousands of real-world locations down to a manageable set — and fixed a number of edge cases that were producing obviously wrong results, like airports on islands with no connected locations at all. Island handling in particular remains unsolved for now and is earmarked as its own roadmap item.

In week 4 and week 6, I dug deeper into why LBD behaves unexpectedly when combined with Individual Travel Requests — the combination I eventually want to use as the default in all new game worlds. Two key challenges stand out: tourism-heavy destinations generate far too little demand because the current model is purely population-based, and cargo is spread so thinly across destinations that it's nearly impossible to make it work. I've been investigating both issues together with the volunteer data team, but I don't expect a quick fix. LBD remains limited to Wright for the time being.

Individual Travel Requests (ITRs) — Nearing Production Readiness

The first weeks of Q1 were also about ticking off the final remaining items on the ITR to-do list. One of the trickier ones (week 6) was updating the rating displays for service profiles and cabin configurations — tricky because the old ORS and ITRs compute ratings quite differently, but both need to keep working in parallel depending on the game world's configuration. I settled on a pragmatic solution and flagged it for a proper revisit once the cabin config and service profile refreshes are tackled down the line.

The bigger change that shipped in v6.13.2 (week 7) was distance-based customer type probabilities: price-sensitive passenger types now become less common on longer routes, which makes a lot more intuitive sense. Getting this right required a fairly substantial rewrite of the request generation logic, because the previous approach of rolling passenger type and request size in two separate steps was subtly skewing the actual probabilities. ITRs are shaping up well, and I'm expecting them to roll out in a regular game world within the coming months (at least as a preview in a temporary game world until Fares have arrived so address some remaining shortcomings).

Spring Cleaning — Framework & Dependency Upgrades ✅

From week 8 through to week 12, I worked through a planned "Spring Cleaning" — upgrading all the major libraries and frameworks that our systems depend on to their latest versions. I started with the central account management backend, then moved on to AirlineSim itself. The account backend upgrade went smoothly; the AirlineSim one took longer than anticipated and surfaced several bugs along the way that I had to resolve before I could ship the respective patch. There were a few post-release bumps to iron out as well, but all systems are now on current, supported versions — a solid foundation to build the UI Refresh on top of.

UI Refresh — Technical Foundation Underway

After the Spring Cleaning wrapped up, I finally got back to the UI Refresh in earnest — though not without a key strategic recalibration first (week 14). I'd been going in circles trying to figure out how to balance visual redesign work with the underlying technical migration, and a few rubber-ducking sessions later, the answer became clear: the technical framework is the actual blocker right now. There are countless features I can only properly work on once gen-3 is in place, whereas a fresh coat of paint can always be applied later. So the immediate goal is to migrate the UI framework first, doing it incrementally rather than in one big, risky switch (see above).

Practically, that means starting with the shared components — the page header and footer — that appear on every single page across all three UI generations (week 15, week 16). Rather than duplicating code, I'm working on a single implementation that generates these components for gen-1, gen-2, and gen-3 alike. The footer was completed and shipped to all game worlds with version 6.13.8 — the first real gen-3 component in production. Work on the header and the remaining page frame is ongoing, with the first full gen-3 feature page (most likely the new DS search interface) to follow once that's in place.

Note that the visual refresh is still firmly on the agenda, it's just pushed out to after the technical one. It is and remains a major development goal, especially in the context of our Early Access release on Steam and the usability/on-boarding deficits it uncovered (or rather: reminded me of).

Backend API — First Endpoint Live

Alongside the maintenance patch that shipped in week 18, I rolled out a first read-only API endpoint as a closed preview. While the API is built and designed with 3rd party consumers in mind, it first and foremost is a prerequisite for the gen-3 frontend itself — a client-side UI needs a server-side interface to talk to. Designing it in a standardised format means I can auto-generate client SDKs, cutting down significantly on boilerplate. Even this first endpoint involved more thought than expected: questions like how physical quantities should be represented in responses need to be decided upfront and applied consistently across all future endpoints.

Localisation & Marketing

A Hungarian localisation was completed and announced on Steam in week 7. On the marketing side (week 9), Michi and I started using a new tool to help with influencer outreach — automating a lot of the manual work involved in finding content creators who'd be a good fit for our games, giving us a much larger pool of candidates to get in touch with and more time to actually do so.

Outlook

As you'd expect, the UI work is going to keep me busy for a while. But as soon as I got that behind me, I will move straight into feature development again, more or less exactly according to the plan outlined in my State of the Game video from January. As such, the most likely candidates are the (already mentioned) DS search interface as well as Fares to add important new functionality to ITRs.

In parallel, a team of volunteers is continuously working on new updates for airport and geo data as well as new performance profiles for version 1.5 of the aircraft performance system, which can currently be tried out on Paine in a preview. A huge thank you for all this effort!