I'm embarking on an attempt to make multiplayer strategic conquest work in Airships.
First off, to be clear, this may well not work. I wrote the strategic conquest code without thought to making it multiplayer, which means I now need to try and refit it for this purpose. It's entirely possible that I can't get it to work consistently, or that performance or UX problems make the experience a terrible one.
Still, lots and lots of people insisted they really wanted this feature, especially cooperative strategic multiplayer, so I'm giving it a try. If, after a few weeks of work, things are still a complete mess, I will shelve the attempt.
I started working on this about three days ago, having formulated an approximate plan:
Airships uses a lockstep multiplayer system. You make sure that each player has the same starting state, and the same seed for the random generator. Then you make sure to apply player commands at the same time and in the same order for all players. This way, the game state on each player's machine progresses in the same way, in "lockstep".
Lockstep has the advantage that it's fairly simple and that it requires little bandwidth. The disadvantages are high latency (which for a strategy game we don't really care about) and a kind of "butterfly effect" thing. If there's ever the slightest discrepancy between the states on different players' machines, the states will diverge more and more over time, and cannot be easily reconciliated. So it's quite nice and simple if you get it perfectly right.
The combat mode got multiplayer early on and so has grown up along with it. There have still been plenty of problems, but it generally works now and doesn't diverge. The strategic conquest mode, on the other hand, is almost as old, and written on the assumption that it's singleplayer only.
Still, technically, all it has to do to be lockstep multiplayer is two things:
- Be predictable. Use the right random source across the board, and don't do stuff that relies on details of the player's computer, like the frame rate or details of memory allocation.
- Instead of directly manipulating the world, send command objects to the server, receive them back, and execute them at the right time.
- There is exactly one human player.
- That player is always the first empire on the map.
- Fights between all other empires can be quick-resolved.
- The game can be paused whenever it needs user input.
- Battles where commands are received through the multiplayer connection have exactly two human participants.
- Battles where commands are received through the multiplayer connection are not part of a bigger process. When they end, the "game" ends.
Two views of the world map, in sync. And it... actually kinda works! You can set up a game between two players, and the generated world is the same. You can send a fleet to another city and it moves in sync. The fights appear to stay in sync. Still, there probably are divergence issues, and there's a lot of things incidental to multiplayer that need to be made to work. Saving and loading, desync detection, dealing with disconnects. And the user experience is pretty rough right now: when a fight starts, players are simply yanked out of the map screen, straight into the fight.
The player on the right is fighting giant spiders while the one on the left is spectating. So this is an encouraging stage to be at, but I always knew that the hard part was going to be getting all the details right. Onwards!
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 ]