So after the initial rapid success of getting conquest multiplayer to work, it was time to see how much the multiplayer really kept in sync. It looked like it was in sync, but not every small divergence would be visible, and those small divergences could spiral into larger ones.
As an aside, idle googling has just led me to a horrible discovery: The daft Ashton Kutcher vehicle *The Butterfly Effect* somehow spawned two sequels. Yay.
Anyway, to make sure that the versions of the world on multiple players' computers were exactly the same, I wrote a checksumming system. At regular intervals, the system would take the game state, save it to disk, and take a checksum of it. It would add this checksum to a backlog, and send it across to the other players.
Upon receiving a checksum, the system would call up its own checksum for that point in time from the backlog. If the checksums disagreed, it would output the point in time where this divergence had happened and exit.
This system was very useful, as it let me do a detailed comparison (a diff) between the game states at the point of divergence. It also created a vast amount of data, because it had to write a full save game multiple times a second. It will definitely be deactivated for the release!
And indeed, it led me to find a number of problems: The names of pre-generated ships didn't match. That one was easily fixed. Another problem was that the road data wasn't quite the same, which turned out to be because the game wasn't looping over city pairs to build roads between in a consistent fashion. Looking for other such inconsistent loops also let me find what would have been a rare and subtle bug in the monster nest code.
So with the game state looking synchronous, what's next? Well, it's all the unglamorous GUI stuff. Allowing players to choose the map size and difficulty, their empire name and their coat of arms. A chat system.
Then, allowing for multiplayer conquest games to be resumed, which turns out to have lots of corner cases. What if the game is resumed with a set of players that isn't clearly identifiable as the previous players? Or with more or fewer players. What if someone exits setup at a weird moment?
I'm still working on getting all of these scenarios figured out and accounted for, but a basic GUI for resuming games exists. And once that's done, I can make available a very early version of multiplayer conquest. It will be very rough: you can't design ships, or look at city defences. Combats start right away with no setup phase and no warning. There's no diplomacy beyond what happens in the chat. The world setup is probably really unfair. But it's something that can be tried out and iterated upon.
Airships: Conquer the Skies
David Stark
David Stark
2018-08-16
Action Indie Strategy Singleplayer Multiplayer
Game News Posts 306
🎹🖱️Keyboard + Mouse
Overwhelmingly Positive
(5250 reviews)
http://www.zarkonnen.com/airships/
https://store.steampowered.com/app/342560 
The Game includes VR Support
Airships Linux 53 [139.2 M]Airships Linux 64 [545.79 M]
Airships: Conquer the Skies - Soundtrack
Airships: Heroes and Villains
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.
- 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.
- OS: Ubuntu/Debian/Mint
- Processor: 2.2Ghz+ Dual-coreMemory: 2 GB RAM
- Memory: 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.
[ 5166 ]
[ 1903 ]