Dev Blog 141: Stabilizing one and developing the other

November 27, 2019

Good evening airport CEO and welcome to yet another development blog post. This is the 141st in order and today we’ll put most aspects of large releases and Alpha 33 behind us as we look forward to continuing the journey with Alpha 34 and the rest of Airport CEO. Well, not quite, not just yet, but this is another one of those dev blog that are just packed with news and information so please allow us to stop blabbing and just get into it!

Continued stabilization of Alpha 33

As you might have seen we’ve kept ourselves (and maybe you) busy with multiple experimental and default deployments over the last two weeks. The most recent release on the default branch happened earlier this morning, Alpha 33.7-4 which features a series of important bug fixes and improvements, some more than other, and the latest experimental version also released today, Alpha 33.7-47, contains a little Steam autumn sale surprise…

Bow before the queen!

... yes, even at night.

There she is! The queen of the skies meticulously crafted by the very talented Rubble (Steve) as per usual. With the 747 now available through Swiftly (you'll need to cancel your existing Swiftly contract to have the 747 generated in the fleet) and soon available via the MDKs, and although there are a few more other large aircraft in production, we really feel that Alpha 33 has become complete with this addition.

Alpha 33 also contains, as mentioned, a series of bug fixes including a new check-in desk allocation system, a few new languages that we’re testing (on an early access basis, it needs a bit more testing before we can claim full support) as a result of the efforts the community has put in over at Localizor. If all continues to look good for the 33.7-47 update it will be transitioned to the default branch early tomorrow morning. But first...lets take a little deep dive into one of the things that really separate the recent default release from the previous.

Improved pathfinding

One of the most important improvements in Alpha 33.7-X is the improved pathfinding system. With the newly added larger aircraft there are for sure more passengers in a terminal to simulate than ever before. Even before the launch of Alpha 33, it was quite obvious to us that the previous pathfinding algorithm would not be able to handle the many path requests in larger terminals as the existing system already in some cases caused an increasing path finding queue as the system tried to keep up with both valid and invalid requests. The effect was a lot of passengers just standing around waiting for their path to be calculated which, naturally, caused players to report this phenomenon as a bug. The pathfinding has previously been ran in a separate thread, but it was limited to calculating one path at a time which was partly because of the way the grid was setup but also partly to avoid thread related problems such as race conditions. The system worked really well on single floored terminals where there were only a couple of thousand passengers. Today’s Airport CEO has multiple floors, soon multiple terminals and a lot more passengers which clearly highlighted the need for an efficient pathfinding.

We decided to separate the pathfinding logic into three categories: Same area search (resulting in a path between two locations that are reachable in same area without switching floors), adjacent area search (resulting in a path between two locations that are reachable by going up or down one floor) and full search (resulting in a path between two locations that require a full search over the entire terminal). The last one is by far the most demanding and was the main bottleneck of the previous system. In addition to separating the algorithm into three steps we also did some fundamental changes to allow for separate threads to calculate paths in each category simultaneously. This means that if a path takes longer to calculate it will no longer block the other threads and therefore keep passengers moving in the terminal. This should lead to none (or at least very few) cases where passengers get stuck waiting for a path. The system is very powerful and flexible and was after a short testing period on the internal branch rolled out on experimental and eventually today on the default branch as part of Alpha 33.7-4. There is an automatic system which sets the number of threads available for calculation depending on the number of cores of a player’s CPU, however for advanced users the number can be manually overridden in the GameSetting.json file. If you have a particularly powerful or powerless CPU it can be interesting to play around with those values for optimal pathfinding performance (just don’t overdo it, threads are costly to keep around if they’re not doing anything).

The three amigos.

Making progress on Alpha 34

Even though we’ve been up to quite a lot of things these past two weeks, development of Alpha 34 has continued steadily. We’re now really noticing the difference in being three developers rather than two as regular organizational work and stabilizing Alpha 33 with overhauled pathfinding and more previously would have stalled Alpha 34 development more or less completely. But since we now have more hands on deck development has progressed smoothly. The new rating system and associated UI is ready for internal testing, along with the new progression system and related features and UI. We’ve added an “end game goal” (well, an Airport CEO session can never really end, right?) that’s more or less ready for testing, we have thrown out the old e-mail system and replaced it with an inbox that will matter to you (and that you should keep an eye on), we’ve adjusted the tutorial to the new ways of ACEO, we’ve implemented the community’s improved airport database for more realistic route generation and we’re in the middle of adding performance reports, ATCT improvements, employee overhauls and more. We’ve also started working with a new freelancer who is tasked with the ambitious project of revamping and restructuring the airline’s and their fleets in ACEO, as per requested by the community and with that an airline rating overhaul will follow. Most of these things and their current state can be reviewed on the public Trello board, although everything is not yet fully set in stone.

We do not yet have any screenshots or images to share with you as the tickets that are completed mainly center around code and systems. Building comprehensive progression and rating systems that are comprised of, and in turn affect, multiple data points is both complex engineering but also a lot like shooting from the hip – at least when it comes to the balancing. This is why Alpha 34, as opposed to Alpha 33 which was mainly comprised of new assets and asset-based features and systems, will go into internal testing much faster. We’re expecting to roll out the first versions of Alpha 34 on the internal branch starting next Friday as we’ll need a lot of help with testing and balancing. And contrary to Alpha 33, we expect Alpha 34 to therefore also need a lot longer soaking time on the internal branch since changes we make are not as direct in systems as they are with assets. Ultimately we will be targeting an experimental release of Alpha 34 before we go on Christmas leave and then return with a default release within the two first weeks of 2020. But! Already by next Wednesday we should have some exiting initial results and feedback to share with you all… and perhaps even a few screens.

In other news

… yes you read that correct, Wednesday, which means that the bi-weekly dev blog day has changed! If you’re an avid dev blog reader you by know that we’re terrible at releasing dev blogs on Monday as announced. They’re always being pushed back and the core reason is that on Monday we usually have a full bug backlog and a full support inbox to deal with, together with other community work and more. Things however always calm down a bit during the middle of the week which is when we find the time to write and so it only makes sense to move the announced date to Wednesday instead. Let’s see if we can keep this or if the new expected dev blog day will be Friday instead, however Friday was originally the first day on which we released dev blog so eventually we’ll just end up in this wonderful loop. Let’s see what happens!

… we’re heading to Slovenia and Slovenian Games Conference 2019 this weekend (together with several other studios from Game Habitat Dev Hub in Malmö). If you’re there don’t hesitate to hit us up and as always, we’ll try to capture and share some moments of it on the Apoapsis Studios Instagram.

… we’re working on a new early access trailer. The old one is… ehm… dated. It’s nothing fancy about the new one though, just itself being a really fancy trailer showcasing the current state of Airport CEO. It’s due for sure, the most recent trailer of Airport CEO is not really representative at this point… but an interesting reminder of how far we’ve come. You’ll be the first to see it once it’s ready, we’re very excited to show it with you.

… there was an AMA last Sunday over at the official Airport CEO Discord hosted by the wonderful mods and participated by several cool peeps of the community. Airport CEO and forum member ReV0LT took their time to assemble a list of all the questions and their (in most cases) given answer. Check it out here!

That’s it for this week. Enjoy the queen and the 33.7-47 update and we’ll see you around the community. Fly safe!

Related blog posts

Dev Blog 141: Stabilizing one and developing the other

November 28, 2019

Good evening airport CEO and welcome to yet another development blog post. This is the 141st in order and today we’ll put most aspects of...

Read more

Dev Blog 140: Alpha 33 and The Big Bird Update released! ... and the pillars of Alpha 34

November 12, 2019

Hi there, airport CEO! Welcome back to another dev blog and perhaps a little break from Alpha 33 and the big bird update which was deployed on the default branch just this...

Read more

Newsletter

Enter your email to get the latest updates and news.

Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.