Dev Blog 42: A Large Runway, The Dashboard Panel, Construction Serialization & More…

October 11, 2016

Heyooo! The weather here in southern Sweden is really, really, really depressing and so it is great to have these development blogs to look forward to. Another week in the bag and with 55k lines of code over 311 classes development is progressing as usual.

New Upgradable Structures

With last week’s implementation of a new and bigger jet aircraft we felt that it was time to implement the larger runway. While runways are and will be modularly expandable with stuff like PAPI lights to lengthening of the runway itself or a change in foundation there will still be two types of runways, the smaller runway and the larger runway. The big difference between these two is… well, the size, as seen in the picture below.

While you technically of course could make your small runway just as long, it would most likely be a bad investment decision. Here’s a “small” .gif to show what scales we’re working with (texture resolutions not final) (contractor was later fired for stupidity):

We’ve also worked a lot behind the scenes in regards to the system for upgrading stands, building larger stands and stuff like that. Focus has also been put into the UI so that selection of stand is intuitive, not to mention in regards to selecting the foundation.

This Week in Construction

This week has yet again seen a number of different improvements in the construction simulation. A lot of it has taken place behind the scenes in regards to simulation demolition, making sure that the construction simulation processes are functioning correctly and, something we’ll talk about later, the it’s serialization aspect. We won’t talk in detail about all the minor changes so here’s a bullet list of what’s been done:

  • Constructible objects in large are now equipped with a different construction overlay (blueprints) system which allows you to see a little bit better in regards to what you are building. This still needs some work and testing though.
  • An issue where contractors constructed the same object multiple times has been resolved.
  • Complete saving and loading function of contractors “in the middle of construction” implemented (yay!).
  • Placeable objects serialized in their correct states (constructed or unconstructed).
  • Structure (buildings, taxiways, runways, stuff like that) and item (sofas, check-in desks, plants) effects such as lights, smoke and various animations are not activated until construction completion.
  • Contractors have been equipped with a small headlight allowing them to work in the dark.

Here’s a .gif of a number of poor souls working in harsh weather. Mind you that this was captured before the above listed fixes were implemented and so any bugs visible here are squashed.

While we're snuggly coding inside, these poor souls brave the elements. #madewithunity #unity3d #indiedev #gamedev #indiegame #AirportCEO
— AirportCEO (@AirportCEO) October 7, 2016

Click here for a high-res version (55 mb)!

We’ve still got a few things to do here before we can fully wrap this up, such as longer construction time for larger objects including multiple contractors helping out as well as including any upgrades made into the construction system. Resource gathering of construction material is still abstracted out due to scale and distances, we’ll see what happens here.

The Dashboard Panel

We have finished off yet another initial design for an aspect of the management panel: The Dashboard! This is probably one of the less useful panels but will allow you to quickly get an overview of the current state of your operations and other conditions. It contains a number of widgets that, if time will allow, you’d be able to alter and replace in terms of what data they are showing and what each individual widget actually does. This is however of lower priority and the data that is currently displayed is what we have deemed the most valuable for you to keep track of in an early build.

As you can see, some of the widgets show a “No connection found…” message. This is because there’s no such thing as magic in Airport CEO, if you want to see the weather you’ll need to construct a weather station, if you want to be able to review and check up on incidents you’ll need an operations manager. All of the widgets only show congested pieces of data, the coming data panel will allow you to review everything in greater detail as this is only meant to server as an overview.

There is still, of course, many more iterations to go here as things need to become more obvious in regards to what they are (so generic) but at least the concept is implemented.


One of the most important and complex features that is only used twice per game session is the loading and saving feature. Given the vast, vast number of of objects that we’re aiming to simulate in terms of placeable objects, agents such as employees, passengers and aircrafts as well as contracts, e-mails, ongoing incidents, baggage handling, weather data and more and more it is important that we can easily save this, and then load it back up.

Corrupt saves suck big time. We have ourselves experienced these a number of times and so we really want to construct something that is durable and reliable. Now, there is no challenge in saving static data such as economy variables, e-mails, inboxed applicants from future staff and so on, on many fronts this has already been accomplished. What’s going to pose a challenge is to, for example, save passengers in the middle of a queueing process, employees in the middle of loading bags or fuel trucks about to collect new fuel. While we have plans on how to do this, it’s going to take some time, especially since we don’t really want to get into it until we’ve completed the entire passenger simulation cycle.

However, serializing contractors in the midst of a construction simulation process, which we achieved this week, was an important step towards a 100% fully featured and working saving and loading function; it gave us insight into how we are going to progress with the technical issues at hand.


When we’re on the topic of the complete passenger lifecycle, let’s talk baggage belts. As you know, we did some major overhaul and removed all physics calculations from the build which had some major implications on existing systems. One of these were the baggage belts which solely relied on effectors for their transportation which not only required a lot of code in order for the dragged belts to twist and turn correctly, but also drained unreasonable amounts of juice. This week we restored the system to its somewhat former glory and have implemented a low impact, way smarter method from moving them from point A to point B. This is however not without a number of new challenges that we have yet to overcome, but we can at least now again start to focus on sealing the complete cycle. Though you should know!

Lastly, the newsletter is up and running again after several weeks of issues and downtime. Hopefully you are reading this because of a message sent to your e-mail and hopefully we won’t have to struggle anymore with that shit. Also it got a new look in the process, always something!

So that’s it for this week. We’re steaming ahead as usual and it’s always difficult to know exactly what this week is going to bring. Thanks again for all your support and comments on our work, we wouldn’t be doing it without you.

Related blog posts

Dev Blog 131: Alpha 31 released on experimental (the multi-floor update), aircraft cabin cleaning and NG19 postmortem

June 7, 2019

Good day airport CEO and welcome to the 131st development blog, a few days delayed but with good reason. Today, after months of development, we’re launching the first of several...

Read more

Dev Blog 130: Last phase of multiple floor, completing the de-icing implementation, localization tests and NG19!

May 25, 2019

Hello airport CEO and welcome to the 130th development blog! We’re writing to you from the floor of the third day of the Nordic Game Conference 2019 here in Malmö...

Read more


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.