TUXDB - LINUX GAMING AGGREGATE
made by: NuSuey
NEWSFEED
GAMES
▪️CROWDFUNDING▪️COMMUNITY DEALS▪️STEAM DECK▪️CALENDAR
tuxdb.com logo
Support tuxDB on Patreon
Currently supported by 11 awesome people!

🌟 Special thanks to our amazing supporters:


✨ $10 Tier: [Geeks Love Detail]
🌈 $5 Tier: [Benedikt][David Martínez Martí]

Any feedback for tuxDB? Join us!

Screenshot 1
Fullscreen Screenshot 1
×
Screenshot 2
Fullscreen Screenshot 2
×
Screenshot 3
Fullscreen Screenshot 3
×
Screenshot 4
Fullscreen Screenshot 4
×
Screenshot 5
Fullscreen Screenshot 5
×
Screenshot 6
Fullscreen Screenshot 6
×
Design steampunk pixel airships out of functional modules and conquer the skies!

In the game, ships are viewed side-on, and their modules are operated by individual crew members. During combat, players give high-level commands to a small fleet, positioning their ships, ramming and boarding others. Ships and terrain are fully destructible: they can catch fire, explode, break apart, and fall. Players can also compete against one another in Internet and LAN matches.

The ships are highly detailed, teeming with sailors moving around at their individual tasks, like an ant farm or a cut-away drawing. The player's choices in ship layout are crucial, and an important part of the game is exploring the design space of different airships and their matching tactics.
Airships: Conquer the Skies
David StarkDeveloper
David StarkPublisher
2018-08-16Release
🎹🖱️ Keyboard + Mouse
Overwhelmingly Positive (4468 reviews)
VR Support
Public Linux Depots:
  • Airships Linux 53 [139.2 M]
  • Airships Linux 64 [545.79 M]
Available DLCs:
  • Airships: Conquer the Skies - Soundtrack
  • Airships: Heroes and Villains
Outdated Ships Bug Explanation

As requested, here's an in-depth explanation of what caused the AI in Airships: Conquer the Skies to build outdated ships. I've tried my best to keep it relatively non-technical.

So in the game, the AI builds airships (and landships and buildings), and it researches technologies. Of course, it should use these new technologies in the construction of better ships. But a lot of the time, this was simply not happening, with the AI still deploying muskets and grenades late into the game.

After multiple tries, I finally figured out what was causing this bug, and also why it was so hard to diagnose.

First, some context: compared to other real-time strategy games, units in A:CtS are much more complicated. Instead of a single entity with one HP pool, an airship consists of dozens or hundreds of modules and tiles, all with their own stats. This is what makes the game fun, but it also causes performance problems.

This means that when the AI wants to build a ship, it's expensive to check every ship to see if it can be built. So instead, the AI keeps a list of ships that are buildable, and a list of techs it had when it made that list.

Whenever the AI wants to build a ship, it checks whether its list of ship techs is the same as the list of techs it's researched. If they're not the same, it's developed some new technology, so it re-checks all the ships and makes a new list of ships to build, and updates its list of ship techs with its current technologies.

So, step by step:

[code]Ships List Ship Tech List Current Tech List

HMS Murderface Grenades Grenades
HMS Stabber Wooden Armour Wooden Armour
HMS Not Nice

New tech researched and added to Current Tech List.

Ships List Ship Tech List Current Tech List

HMS Murderface Grenades Grenades
HMS Stabber Wooden Armour Wooden Armour
HMS Not Nice Cannons

Ship Tech List and Current Tech List are different, so the AI updates the Ships List.

Ships List Ship Tech List Current Tech List

HMS Murderface II Grenades Grenades
HMS Stabber Wooden Armour Wooden Armour
HMS Katana Cannons

Ship Tech List is updated to be the same as Current Tech List.

Ships List Ship Tech List Current Tech List

HMS Murderface II Grenades Grenades
HMS Stabber Wooden Armour Wooden Armour
HMS Katana Cannons Cannons
[/code]

That last step is where the bug was: It should have made a copy of its current technology list and filed it away as the ship technology list. Instead, it just used the same list, the "live" one. So now, whenever it researched a new technology, it would be instantly in the ship tech list as well. Meaning that whenever it checked, the two lists would be the same, and so it would never notice technology had changed, and would never rebuild its ship list.

[code]Bug: Ship Tech List is the same as Current Tech List.

Ships List Ship Tech List Current Tech List

HMS Murderface Grenades
HMS Stabber Wooden Armour
HMS Not Nice

New tech researched and added to the tech list.

Ships List Ship Tech List Current Tech List

HMS Murderface Grenades
HMS Stabber Wooden Armour
HMS Not Nice Cannons

Ship Tech List equals Current Tech List, and so Ships List is not updated.
[/code]

And so, the ship list stayed the same, with the same old ship designs, and the AI did not actually benefit from the research it was doing.

The fix was very simple: just make a copy of the tech list rather than use it directly. But what caused the bug in the first place? An optimization pass I did three years ago. These tech lists are used all over the place in the game, as they need to be consulted frequently to check if something is available. I discovered that the game spent a lot of time making pointless copies of them, and so I got rid of all that copying - including in this place, where there was a very good reason for it!

So why did this take so long to track down? You might have noticed that there were multiple previous updates where I claimed to have fixed this bug. Well, to be able to fix a bug, you have to first observe it in the wild. There's a bunch of confounding factors: perhaps the AI has outdated ships because it doesn't have the money to upgrade them, or they haven't made it to a shipyard because they've been too busy fighting.

And there's a lot of moving parts to ship management: I long thought the code for upgrading, rather than building new ships, was broken. So I asked players to send me saves of games where the AI had failed to build modern ships.

Here's the thing: the game doesn't store the ship list in the save file. It doesn't have to, because it can recreate the list, right? So when you loaded a save game with this bug, the bug would go away as the ship list would be freshly recreated and up to date. So I'd inspect the game and see correct ship lists, and hence assume the problem was with using the lists, not the lists themselves. The bug took so long to find because it was covering its tracks.

So here you have it: optimization always carries the risk of introducing new bugs, and sometimes bugs hide from you.

[ 2025-05-19 08:38:56 CET ] [Original Post]

Minimum Setup

  • OS: Ubuntu/Debian/Mint
  • Processor: 1.8 Ghz+Memory: 256 MB RAM
  • Memory: 256 MB RAM
  • Graphics: 1 GB VRAM+
  • Storage: 1 GB available spaceAdditional Notes: Not currently compatible with Intel HD graphics controllers. May run on other Linux distros. but no guarantees.
  • Memory: 2 GB RAM
  • Recommended Setup

    • OS: Ubuntu/Debian/Mint
    • Processor: 2.2Ghz+ Dual-coreMemory: 2 GB RAM
    • Graphics: 2 GB VRAM+Network: Broadband Internet connection
    • Storage: 1 GB available spaceAdditional Notes: Not currently compatible with Intel HD graphics controllers. May run on other Linux distros. but no guarantees.
    GAMEBILLET

    [ 6541 ]

    16.79$ (16%)
    1.12$ (93%)
    3.10$ (84%)
    5.27$ (12%)
    17.75$ (11%)
    13.30$ (11%)
    4.23$ (92%)
    0.72$ (93%)
    1.97$ (87%)
    5.08$ (92%)
    35.14$ (12%)
    16.79$ (16%)
    26.65$ (11%)
    1.12$ (93%)
    5.87$ (16%)
    8.48$ (79%)
    17.59$ (12%)
    33.17$ (17%)
    8.29$ (17%)
    13.34$ (11%)
    8.17$ (73%)
    12.59$ (16%)
    4.23$ (79%)
    8.39$ (16%)
    17.19$ (14%)
    20.99$ (16%)
    3.50$ (88%)
    20.72$ (17%)
    33.95$ (32%)
    12.42$ (17%)
    GAMERSGATE

    [ 2085 ]

    0.85$ (91%)
    0.5$ (75%)
    0.85$ (91%)
    2.55$ (87%)
    6.3$ (82%)
    0.54$ (82%)
    1.7$ (91%)
    0.85$ (91%)
    29.99$ (40%)
    0.64$ (87%)
    0.45$ (85%)
    1.53$ (91%)
    3.4$ (83%)
    3.4$ (83%)
    0.43$ (91%)
    0.52$ (47%)
    0.83$ (92%)
    4.25$ (79%)
    1.45$ (91%)
    6.0$ (80%)
    3.19$ (87%)
    3.38$ (62%)
    5.25$ (65%)
    3.57$ (70%)
    0.37$ (63%)
    6.0$ (76%)
    0.85$ (83%)
    10.62$ (58%)
    1.5$ (85%)
    3.19$ (79%)
    MacGamestore

    [ 2045 ]

    21.99$ (27%)
    5.99$ (85%)
    3.99$ (73%)
    7.47$ (66%)
    1.19$ (88%)
    2.98$ (85%)
    3.39$ (92%)
    1.19$ (88%)
    3.59$ (80%)
    18.49$ (8%)
    29.99$ (40%)
    9.49$ (5%)
    1.49$ (85%)
    17.49$ (13%)
    1.29$ (84%)
    1.19$ (88%)
    5.99$ (80%)
    9.49$ (5%)
    1.69$ (83%)
    1.49$ (94%)
    0.99$ (75%)
    7.29$ (76%)
    9.49$ (5%)
    13.99$ (7%)
    1.19$ (76%)
    9.49$ (5%)
    0.69$ (65%)
    1.19$ (76%)
    2.49$ (88%)
    1.19$ (70%)

    FANATICAL BUNDLES

    Time left:

    356209 days, 17 hours, 14 minutes


    Time left:

    356209 days, 17 hours, 14 minutes


    Time left:

    5 days, 0 hours, 14 minutes


    Time left:

    16 days, 0 hours, 14 minutes


    Time left:

    19 days, 0 hours, 14 minutes


    Time left:

    20 days, 0 hours, 14 minutes


    Time left:

    29 days, 0 hours, 14 minutes


    Time left:

    51 days, 1 hours, 14 minutes


    Time left:

    29 days, 0 hours, 14 minutes


    Time left:

    33 days, 1 hours, 14 minutes


    HUMBLE BUNDLES

    Time left:

    0 days, 18 hours, 14 minutes


    Time left:

    0 days, 18 hours, 14 minutes


    Time left:

    2 days, 18 hours, 14 minutes


    Time left:

    7 days, 18 hours, 14 minutes


    Time left:

    9 days, 18 hours, 14 minutes


    Time left:

    14 days, 18 hours, 14 minutes


    Time left:

    16 days, 18 hours, 14 minutes

    by buying games/dlcs from affiliate links you are supporting tuxDB
    🔴 LIVE