Dev Log Week 2024-09: Static maps

Last week’ dev log turned out a bit short, so I want to provide a bit more context in this one.

As is pretty much obvious, I am working on “maps” for AirlineSim right now. And you might be wondering why, with all the things that one could work on around AS, this is what I picked. To explain this, I need to talk a little bit about our general roadmap for the coming months:

You might remember from our end-of-2023 status update that the largest project for 2024 will be a Steam release of AirlineSim. This will technically be a thin wrapper around the AirlineSim web frontend, so people can “download” the game through Steam even though it is and remains a browser-based game. But there is more to it, of course: When opening the game in Steam, people need to be able to see and select game worlds without leaving the Steam client. They also need to be able to pay which must happen via Steams payment system while running the game in Steam. When playing in one game world, players need to be able to switch to a different one, they need to be able to add an email address so they can play outside of Steam…and so on and so forth.

This is all quite boring stuff. It also provides no perceived benefit to existing players and it definitely doesn’t make for great screenshots. Those two things are where the maps start to come in. The whole point of the Steam release is to get new players into the game. But let’s face it: At almost 20 years of age, the current generation of AirlineSim doesn’t impress anyone from a visual point of view. So we wanted to add a new feature that a.) is a bit more visual than most of the table-based pages of AirlineSim and b.) actually provides some tangible benefit to existing players.

Since almost every serious player uses the fantastic Routemap by @Matth and because there were worries more than once that this service might be discontinued, we finally decided that it was about time we added something similar directly into the game. This checks all our boxes: It’s visual by nature and it actually provided added value to all players, both new and old.

Now, we are under a lot of pressure at the moment, since the public funding we receive for a new project over at Prosperous Universe will run out in the middle of the year and there won’t be a new one after that. Therefore, I wanted to get a prototype of the maps out as quickly as possible so I can move on to the far more difficult and risky project of the actual Steam integration. That’s easier said than done, though. Interactive maps are inherently complex and as mentioned last week, there are a lot of technical options for how to go about implementing them. On a high level, I considered these three options:

  1. Use a third-party service and/or library that renders maps based on tiles (just as Matth’s route map does.
  2. Render maps on our end based vector data that’s freely available.
  3. Actually use a rendering engine to take option 2 a bit further and get more options in terms of fidelity.

All of these have their own pros and cons, but since I want to avoid dependency on additional or even 3rd party services (like a tile server) and the licensing issues (and costs) that come with them, and because eventually I’d like to go for an abstract “ATC-like” look anyway, I opted for option no 2…a vector-based approach.

The main drawback here is that some of the things a ready-made library provides out of the box have to be implemented by hand. Especially during interactions like panning and zooming there are also some performance implications that need to be taken into consideration. It’s for the latter why I decided to leave it at a “static prototype” for now: It’s far from what I eventually want to do, but I need to get something working fast because it’s far more important to get the whole Steam infrastructure up and running as quickly as possible. Once we have that set up to a point that people can start testing it, I can return to the maps in preparation for the Stream release. Meanwhile, I can iterate on the static maps to find a fitting visual style etc.

In other dev log news:

  • The map work resulted in the unexpected side effect of getting a really nice frontend development pipeline, something which AS never had up to this point. It means I get a much smoother development experience and you get things like proper cache busting on frontend assets (as in: When I change the style of something in the game, you actually see the change and don’t have to beg your browser to clear its cache first).
  • I fixed a long-standing issue that could cause airline deletions to pile up because of unresolved interdependencies. The respective version 6.8.9 has already been rolled out to all game worlds.

Last but not least, a quick screenshot of what the maps currently look like in-game (they are only used in two places atm):

Again, the color scheme isn’t final yet, expect iterative adjustments until we find something that everyone (or most people :sweat_smile:) like :smiley:

5 Likes

Hi,
a question: Do you plan to implement features from asroutemaps into the game? Cheers, M

Yes, eventually the most important ones should be in AS.

1 Like