Hello airport CEO and happy new year!
Last time we spoke was in 2018, since then we've turned a page and are now looking at a blank sheet, or a blank C# class if you will, getting ready to populate it with content for 2019. We're starting off 2019 strong with a lot happening around the studio and with a lot happening around Airport CEO. So, let's not waste any more time chitchatting and let's just get into it...
The last thing we did in 2018 was to launch Alpha 29, a very large and fundamental update developed over two months with the sole purpose of addressing several performance related issues in Airport CEO. The deployment overall was a success and we got a lot of feedback regarding noticeable increased performance and a lot higher FPS counts compared to the previous Alpha 28 version, which isn’t that surprising since we completely reinvented the game’s agent rendering solution but also made several other performance improvements for various systems in general but perhaps mainly agent behavior simulation.
We’ve however addressed this in multiple dev blogs before and won’t go into its details again. Since 2018, we’ve continued to mainly bug fix and patch a lot of different aspects of Alpha 29 and are currently on Alpha 29.6-2 for the experimental branch with several more updates planned this week, partly targeting bug fixes for the new stand assigned vehicles feature but mainly targeting bugs relating to remote stands and associated issues.
Unfortunately, we had a git branching problem earlier this week which basically resulted in us working on bugs and features in the same branch causing a somewhat delayed deployment schedule. We will most likely very soon transition an experimental version to the default branch as we have several important bug fixes in place that we need to get out, since the bulk of the experimental version deployments currently consist of bug fixes, we in general deem most experimental versions as stable and at least more stable than the current default branch.
One big thing that has changed, and is still changing and will in the future continue to be improved, in Alpha 29 post the initial default deployment, is the job task system. The job task system has with Alpha 29 undergone its third and hopefully last fundamental change for the foreseeable future. We started out with a quite dumb version which had each agent asking the job task assignment system if there was an available and suitable job for them to do, which had the system loop through all job tasks to find that system for them. Although reliable, it was incredibly lackluster from a performance perspective as the job task system would loop through all job tasks, meaning several irrelevant job tasks for a specific employee, several times per frame just to find a suitable job task for one employee… which all creates a lot of overhead.
That was initially fixed by Alpha 29 and we adapted the system so that instead of each employee asking the system what they could do for it, the system instead recognizes which employees are available to be assigned a job and thus dispatches available jobs as required by a central loop function. However, this initial version was coded from the perspective of the job, i.e. “who should do this specific job task?” rather than from an employee’s perspective, i.e. “what should this employee do?”.
This all sounds trivial, you might think, but in order to determine what a certain employee should be doing at a certain point in time and place in the world you need to perform some sort of sorting operation and when you need to sort through a large list of items and perform that sorting using costly distance and time based calculations, there’s a noticeable risk of racking up the very same overhead you were trying to avoid.
So what we’ve done is to only dispatch job tasks for the work force that is available and we’ve mitigated the risk of looping through large lists by caching job tasks in lists grouped by what type of employee they are relevant for. Essentially we’ve implemented a very lean version of the system that will always strive do the least number of loops by only sorting through objects that are relevant for a certain agent. It also allows us to sort job tasks with better control and enable sorting on other attributes, for example skill or stress levels or what stand a certain vehicle is assigned to, a feature we’ve recently implemented as of Alpha 29.6 on the experimental branch.
There are more tech talks to do around Alpha 29 and what fundamental changes we’ve made and will have continue to make but we’ve gone on long enough for this segment. If you’ve read this far, well… well done.
We’ve got a lot of exciting things happening in this building as of next week, perhaps the most exciting in our small studio’s history. Our new full-time team member starts on the 21st of January which also means that during their first day we’ll transition the office to a bigger room within the same building (this will be the third time we’re moving offices in less than one year… and hopefully the last as we now have some growing room). Together with the new hire we’ll then spend the week developing and planning for the future of Airport CEO with the purpose of locking down a proper roadmap for the large features ahead, what Airport CEO in its full release state will look like and how we will get there. For any studio, expanding from two members to three, is perhaps one of the most exciting and critical transitions in its lifetime. It marks the start of something new as we greatly increase our overall work load capacity and in the long run should be able to deliver new content, bug fixes and overall progress comparatively much faster. Airport CEO started out as a hobby project over three years ago and even though Airport CEO has transitioned beyond a prototype it’s really just now we feel that Apoapsis Studios is catching up and we’re moving on to become something more than just Airport CEO, to becoming sort of a real indie studio. In the next development blog you’ll be sure to get a full introduction of our new member and what they’re all about!
Speaking of new team members, we’ve for a while been teasing you about a new part-time member on the team solely working on designing new aircraft… and we’re now happy to reveal that this mystery aircraft maker is in fact an old community veteran: Rubble! Barney Rubble, or Steve as is his real name, is a long-time airport CEO which joined us on the Forum early on and has since then become a core member of our community. Not too long ago, Rubble started posting a few pictures of aircraft models he’d done, and the quality of his work caught our eyes. Being just two developers running the entire Airport CEO show, we always look for talent that can help out in progressing the development of the game and with Fredrik being responsible for aircraft creation we though that this might be an opportunity to relieve his plate while at the same time getting new aircraft models out faster. We approached Rubble and before we knew it a partnership was born.
Steve resides in the UK, though has a heart belonging in Wellington, New Zealand, and has a background in design, tech, image and photography. With excellent Illustrator and Photoshop skills he’ll be relieving Fredrik of some aircraft development work when able to and we couldn’t be happier to have him with us. The airport CEO community truly spawns some great members and again and again show what an unprecedented source of knowledge it is.
We have a few new aircraft models planned for early 2019, including the E190, E170 and the Cirrus AircraftVision Jet (GA). We’ll be sure to keep you updated as work progresses.
And to celebrate Rubble’s work, we’ve launched two new aircraft polls in which we’re looking for your help to decide what aircraft to implement next. Come join us in the GA poll where we’re trying to figure out what the next general aircraft to implement should be, or come join us in the first ever large aircraft poll and debate why you think the MD-80 don’t belong there!
What happens now then? It’s time to branch. If you’re a regular airport CEO you by know now how we develop Airport CEO, but if you’re new you’d probably like to learn that we work in increments, spending some time on bug fixing and the rest of the time on new features. While this and the coming week will in majority be spent on bugs, we’re also branching off and will make a move towards completing the catering turnaround service, continuing work on multi-floor terminals and starting work on large aircraft stands. We expect to make several minor polish improvements and progress on “easy tickets”, including minor new content and items, as that is what the new hire initially will be spending time working on… but more on that next time!
We have some other minor news that are perhaps equally exciting to everything else we’ve written about. First off, the Airport CEO soundtrack is finished! From idea, to composition, to recording, to mixing and mastering, Airport CEO will soon have a full length one-hour soundtrack accompanying you when running your airport. Once it goes live we’ll write a thorough development blog on how it came to be from start to finish and how the work progressed, and Sinephony has even been kind enough to grant us with a video from their recording sessions. We will be reviewing the songs throughout the week and prepare for its implementation, hopefully it should be out and in your ears in a not too distant future.
Apoapsis Studios will soon get a new website and do the same kind if journey that the Airport CEO website did, i.e. get transitioned from our slow VPS in Dalarna toa global, faster and more stable solution. We reckon that not many people do visit https://www.apoapsisstudios.com/ but we thought we’d let you know anyway.
And speaking of websites, we’re also slowly migrating all the old development blogs from the old host to the new host so that we can bring our history with us and let any new airport CEO dig deep down to the origins of Airport CEO.
So… that’s it for this week! We’ve got two very exciting weeks ahead of us including a lotof deployments and a lot of studio changes. Until next time… fly safe!
Welcome to another development blog update. It's already the 12th of February and time is passing by quickly, fortunately we're putting that time to good use...Read more
Welcome to another development blog, the 122nd in order, as we're painfully aware of having spent several hours converting the previous blog posts from the ...Read more