▶
The History of Multiplayer in Armello
We have something really special here today. We've mentioned previously that we'd like to share more information about how our multiplayer systems work, and here we have it. Here's a history and retrospective of the Multiplayer systems in Armello, written by our lead developer, Karl Burdack.
How did it take 3 years for Armello to transition from Peer to Peer, to Cloud Hosted Dedicated Servers? The short answer is we were always busy, fixing issues, adding features for monthly updates, or porting to new platforms. We were also a very small team, of four permanent coders. The rest of this article is the long answer! Its been a winding path for Armello Multiplayer. As a studio, we have learnt much in three years about how to deliver updates to a live game. However we recognise there are still many improvements to be made. NMAs The biggest issue for Armello Multiplayer has been deadlocks in the gameplay event queue. The event queue is a list of actions, or rules, the game takes to move the game forward. They are executed one by one. If an event does not complete, the next event cannot begin. These are seen as freezes in gameplay, that we refer to as NMA which is short for No More Actions. These freezes mostly affect multiplayer, since they occur when one peers version of events go out of sync with another, or a bug in our code fails to complete an event. An analogy, would be if you played a physical board game. Where one of the four players, on their turn, could draw cards then take 3 actions. If that player sat at the table and refused to finish drawing their cards (NMA), all the other players would wait forever for their turn, and get very annoyed! September 2015: Version 1.0: Photon Matchmaking As a beginning, lets start with the first full public release of Armello, Version 1.0. The first Armello multiplayer architecture operated by relying on Photon Relay servers. The Relay Server receives messages from players in a match, and then sends those messages in a consistent order to all players. We also had an optimization for when the local player was having a turn, that they would immediately execute their actions, eliminating latency.
Remaining Issues:
Remaining Issues The biggest issue with this change, was that dealing with disconnects became much harder. If the current Relay host (Amber) were to disconnect, a new peer needs to be consistently chosen, and all messages that were outgoing from the previous host at the time of disconnection, need to be reconciled in case any were lost to some players. Its likely that Amber disconnecting while Thane takes an action, might let Thane execute his own action (red arrow) but for the message to never arrive at Sana or Mercurio (black arrows). This lead to difficult issues for us down the road. June 2016: Version 1.4: Optimized networking For 6 months, part of the Armello team were focused on porting to the Xbox One. Unfortunately, at that time Photon was not available for Xbox One. So in order to support that platform, we had to port the multiplayer to support a third solution: Unity Networking. Unity Networking on Xbox One at the time, had much stricter message size limits. So we had to get serious about optimizing Armellos sloppy network message sizes. Its something we had on our list of things to do, and now it had become a priority. In many cases, these optimizations reduced the amount of data sent and received by a factor of 100.
What? How could a simple Move action in a turn based game, consume 2500 bytes. Easily:
These optimizations were easy to bring over to the Steam release of 1.4. It would also be an important optimization down the road for Mobile platforms. These optimizations have benefited players on connections with poor bandwidth, as well as reducing CPU overhead on below minimum spec machines. Unknown to us at the time, would be that the initial Unity Networking port to the Xbox One, would also be useful when starting out implementing dedicated servers! Jan 2017: Version 1.6: Multiplayer Stability Update Poor disconnect handling had now been plaguing our multiplayer community for 6 months, and we began work on an improved model for the Peer to Peer Relay Host An example of how disconnect could cause stability issues:
In this situation, the system must be designed to recover the message Thane had sent, and re-send it to Sana. If the message is not recovered correctly, it can lead to an NMA situation. To address these inconsistencies with disconnections, we implemented improvements to how disconnections were handled. We implemented a better message tagging and reliable message recovery protocol. A simplified example of how lost messages are recovered is shown below:
Remaining Issues: While this was promoted as a Multiplayer Stability Update. Many players complained that it made their experience worse. We reflected on two areas of weakness where we must improve:
Automated test PC's. These nifty HP micro PC's have a low power usage, but enough CPU power to run several tests of Armello in parallel, usually without graphics.
Remaining Issues:
Problems:
Initial prototyping was promising, but some additional problems would need to be overcome:
For our planning for 2.0, we surveyed our community, what changes they would suggest for Armello 2.0. When we looked at the top 5 multiplayer related requests:
The number one requested feature, was Multiplayer Reconnect. This is a feature that would allow players to rejoin a game that had already begun, after they were disconnected for some reason. Also note resolving NMAs as 4th on the list. We also keep an eye on our monthly negative reviews, here is an example from April 2018:
This month is fairly typical for reviews. 25% of negative reviews are attributable to NMAs. Also, 8% of players gave us a negative review for lack of a Reconnect feature. Many of the complaints are down to taste, such as Randomness (RNG). However NMAs and Reconnection are something we can improve, without fundamentally changing the game of Armello.
By the first week of september, in Patch 7, we had resolved all known crash issues, and had load tested the server into a stable configuration. From Patch 7 onward, server load times, and availability have been rock solid. One of our reasons to switch to dedicated servers, was increased match stability, by reducing NMA rates. Now that dedicated servers are fully operating, we can compare public multiplayer games completed against those that failed to complete because of an NMA. The following chart shows 30 days of games, with the transition from Peer to Peer to Dedicated Servers marked in red. Note the significant decrease in NMAs as a percentage of games (in light blue):
We are very happy with these results. And we hope our players are too! More games are being completed than ever before, with stability issues such as NMAs and disconnects at all time lows. The future While we arent promising anything (when do we ever do that?), having dedicated servers does open up some interesting future possibilities for Armello beyond adding reconnect capability. We will be announcing some of these in future. In the meantime, keep the suggestions coming!
[ 2018-10-30 03:55:50 CET ] [ Original post ]
Howdy folks!
We have something really special here today. We've mentioned previously that we'd like to share more information about how our multiplayer systems work, and here we have it. Here's a history and retrospective of the Multiplayer systems in Armello, written by our lead developer, Karl Burdack.
The History of Multiplayer in Armello
How did it take 3 years for Armello to transition from Peer to Peer, to Cloud Hosted Dedicated Servers? The short answer is we were always busy, fixing issues, adding features for monthly updates, or porting to new platforms. We were also a very small team, of four permanent coders. The rest of this article is the long answer! Its been a winding path for Armello Multiplayer. As a studio, we have learnt much in three years about how to deliver updates to a live game. However we recognise there are still many improvements to be made. NMAs The biggest issue for Armello Multiplayer has been deadlocks in the gameplay event queue. The event queue is a list of actions, or rules, the game takes to move the game forward. They are executed one by one. If an event does not complete, the next event cannot begin. These are seen as freezes in gameplay, that we refer to as NMA which is short for No More Actions. These freezes mostly affect multiplayer, since they occur when one peers version of events go out of sync with another, or a bug in our code fails to complete an event. An analogy, would be if you played a physical board game. Where one of the four players, on their turn, could draw cards then take 3 actions. If that player sat at the table and refused to finish drawing their cards (NMA), all the other players would wait forever for their turn, and get very annoyed! September 2015: Version 1.0: Photon Matchmaking As a beginning, lets start with the first full public release of Armello, Version 1.0. The first Armello multiplayer architecture operated by relying on Photon Relay servers. The Relay Server receives messages from players in a match, and then sends those messages in a consistent order to all players. We also had an optimization for when the local player was having a turn, that they would immediately execute their actions, eliminating latency.
Remaining Issues:
- Players would timeout and be disconnected after only approx 10 seconds of lost connection. This was a limitation where Photon could not be configured to behave differently.
- It did not support future improvements to Matchmaking we had planned, such as ranked matchmaking, in a way compatible with how we wanted to implement it.
- This system had no way to block cheaters, issue bans, or prevent pirate copies of the game from playing.
Remaining Issues The biggest issue with this change, was that dealing with disconnects became much harder. If the current Relay host (Amber) were to disconnect, a new peer needs to be consistently chosen, and all messages that were outgoing from the previous host at the time of disconnection, need to be reconciled in case any were lost to some players. Its likely that Amber disconnecting while Thane takes an action, might let Thane execute his own action (red arrow) but for the message to never arrive at Sana or Mercurio (black arrows). This lead to difficult issues for us down the road. June 2016: Version 1.4: Optimized networking For 6 months, part of the Armello team were focused on porting to the Xbox One. Unfortunately, at that time Photon was not available for Xbox One. So in order to support that platform, we had to port the multiplayer to support a third solution: Unity Networking. Unity Networking on Xbox One at the time, had much stricter message size limits. So we had to get serious about optimizing Armellos sloppy network message sizes. Its something we had on our list of things to do, and now it had become a priority. In many cases, these optimizations reduced the amount of data sent and received by a factor of 100.
What? How could a simple Move action in a turn based game, consume 2500 bytes. Easily:
These optimizations were easy to bring over to the Steam release of 1.4. It would also be an important optimization down the road for Mobile platforms. These optimizations have benefited players on connections with poor bandwidth, as well as reducing CPU overhead on below minimum spec machines. Unknown to us at the time, would be that the initial Unity Networking port to the Xbox One, would also be useful when starting out implementing dedicated servers! Jan 2017: Version 1.6: Multiplayer Stability Update Poor disconnect handling had now been plaguing our multiplayer community for 6 months, and we began work on an improved model for the Peer to Peer Relay Host An example of how disconnect could cause stability issues:
In this situation, the system must be designed to recover the message Thane had sent, and re-send it to Sana. If the message is not recovered correctly, it can lead to an NMA situation. To address these inconsistencies with disconnections, we implemented improvements to how disconnections were handled. We implemented a better message tagging and reliable message recovery protocol. A simplified example of how lost messages are recovered is shown below:
Remaining Issues: While this was promoted as a Multiplayer Stability Update. Many players complained that it made their experience worse. We reflected on two areas of weakness where we must improve:
- Measurement: We must be able to better measure build stability during development (testing), and in live builds (analytics)
- Automated testing: We must automate the testing process of multiplayer, so that an enormous volume of games can be played, testing all possible combinations of actions.
- Double disconnect: There were many cases where if two peers disconnected rapidly, our implementation would not handle it well. We would need to add automated tests for this case.
- Undetected by us at the time, was that the optimization of immediately executing the local players action (indicated with red arrow in previous images), was also the cause of much of the disconnect instability, due to ordering issues when switching hosts.
Automated test PC's. These nifty HP micro PC's have a low power usage, but enough CPU power to run several tests of Armello in parallel, usually without graphics.
Remaining Issues:
- After this round of patching, disconnections remained the major cause of instability, and we determined to look at this next.
- Analytics were still lacking enough detail for us to track live build stability.
Problems:
- Multiple players disconnecting at the same time were still causing stability issues, which were difficult to address easily with our existing peer to peer architecture and certain game events.
Initial prototyping was promising, but some additional problems would need to be overcome:
- A hosting service for the servers would need to be found
- Server hosting costs would need to be evaluated. As every hour of a dedicated server costs money. We didnt want to dramatically burden our indie game with an unsustainable cost for running multiplayer.
- The server version of the game would need to be heavily optimized for CPU usage, Memory Usage, and build size. So that it could be more cheaply hosted.
- Latency for the active player would be unacceptable for some players. Additional work would need to be done to hide the latency by allowing the player to move, and revert that action if the server decided differently.
Planning for Version 2.0
For our planning for 2.0, we surveyed our community, what changes they would suggest for Armello 2.0. When we looked at the top 5 multiplayer related requests:
The number one requested feature, was Multiplayer Reconnect. This is a feature that would allow players to rejoin a game that had already begun, after they were disconnected for some reason. Also note resolving NMAs as 4th on the list. We also keep an eye on our monthly negative reviews, here is an example from April 2018:
This month is fairly typical for reviews. 25% of negative reviews are attributable to NMAs. Also, 8% of players gave us a negative review for lack of a Reconnect feature. Many of the complaints are down to taste, such as Randomness (RNG). However NMAs and Reconnection are something we can improve, without fundamentally changing the game of Armello.
- Reconnect: This is by far simpler with a Client/Server architecture. Where the Server has a complete copy of the game, which can be replicated to clients attempting to reconnect. If we are ever to support this feature, we would first need working dedicated servers.
- Resolve NMAs: We knew that the ongoing difficulty with testing and preventing NMAs would be much simpler in a client/server architecture. In particular, having a dedicated server does away with the problem of a host disconnecting completely.
- Setting up the backend technology to let us easily upload new builds of the server into the cloud. (PlayFab)
- Developing optimizing builds of Armello to be hosted in the cloud as a server.
- Improving disconnect to take advantage of the stable dedicated server.
- Repurposing our automated testing, to be testing hundreds of cloud hosted games a day, and to pressure test the cloud hosting service.
- Improving client side movement actions to hide latency
- Fixing a whole bunch more NMAs along the way.
By the first week of september, in Patch 7, we had resolved all known crash issues, and had load tested the server into a stable configuration. From Patch 7 onward, server load times, and availability have been rock solid. One of our reasons to switch to dedicated servers, was increased match stability, by reducing NMA rates. Now that dedicated servers are fully operating, we can compare public multiplayer games completed against those that failed to complete because of an NMA. The following chart shows 30 days of games, with the transition from Peer to Peer to Dedicated Servers marked in red. Note the significant decrease in NMAs as a percentage of games (in light blue):
We are very happy with these results. And we hope our players are too! More games are being completed than ever before, with stability issues such as NMAs and disconnects at all time lows. The future While we arent promising anything (when do we ever do that?), having dedicated servers does open up some interesting future possibilities for Armello beyond adding reconnect capability. We will be announcing some of these in future. In the meantime, keep the suggestions coming!
- Karl & the LoG Team
[ 2018-10-30 03:55:50 CET ] [ Original post ]
Armello
League of Geeks
Developer
League of Geeks
Publisher
2015-09-01
Release
Game News Posts:
295
🎹🖱️Keyboard + Mouse
🎮 Full Controller Support
🎮 Full Controller Support
Very Positive
(10747 reviews)
The Game includes VR Support
Public Linux Depots:
- Armello Linux Universal [2.02 G]
- Armello Linux64 [2.26 G]
Available DLCs:
- Armello - Usurpers Hero Pack
- Armello - Seasons Board Skins Pack
- Armello - The Bandit Clan
- Armello - Rivals Hero Pack
- Armello - The Dragon Clan
Armello is a grand swashbuckling adventure that combines three styles of play; The deep tactics of card games with the rich strategy of table top board games, combined with a character role-playing system.
As a hero from one of the clans of Armello, you'll quest, scheme, hire agents, explore, vanquish monsters, cast spells and face off against other players, with one ultimate end goal in mind — storming the palace and becoming King or Queen of Armello. The Kingdom of Armello is as dangerous as it is beautiful, perils, banes and bandits hide around every corner and a spreading corruption known as the rot is leaving no creature untouched.
Armello is League of Geeks’ attempt to revolutionise digital board and card games, whilst providing players a rich world within which they can craft their own stories of epic adventure. The aim was to create a rich game full of backstabbing, close shaves, shattered alliances, ruses and empty promises - a perfect game to play with your friends.
MINIMAL SETUP
- OS: Ubuntu 12.04 LTS (64-Bit)
- Processor: Dual-core 2.0 GHz (SSE2)Memory: 2 GB RAM
- Memory: 2 GB RAM
- Graphics: OpenGL SM3.0 capable GPU with 1GB VRAM. Graphics card that has vendor-made drivers installed.
- Storage: 4 GB available space
- OS: Ubuntu 12.04 LTS (64-Bit) or later
- Processor: Quad-core 2.5GHz (SSE2)Memory: 4 GB RAM
- Memory: 4 GB RAM
- Graphics: OpenGL SM3.0 capable GPU with 2GB VRAM. Graphics card that has vendor-made drivers installed.
- Storage: 4 GB available space
GAMEBILLET
[ 6108 ]
GAMERSGATE
[ 496 ]
FANATICAL BUNDLES
HUMBLE BUNDLES
by buying games/dlcs from affiliate links you are supporting tuxDB