Speedrunner HD is known as one of the best games you can pick up on the Xbox Live Indie Games store, so the idea of the platform-running title coming to PC with added online multiplayer support makes for a rather exciting prospect.
However, DoubleDutch, the studio behind the game, hit a snag when it tried to tackle the hairy issue of online multiplayer, setting the release date for the game back way into 2014.
"Online multiplayer is just inherently difficult," noted the studio's Gert-Jan Stolk, "just because sending messages back and forth over a network costs some amount of time. In-game this results in a situation where every message a player receives from other players actually contains information about stuff that happened somewhere in the past. The question is then how to cope with that time difference so that players are still able to interact with each other correctly."
But now the team is back on track, thanks to a conversation with Joost van Dongen at Ronimo Games, who explained to DoubleDutch exactly what kinds of problems it was going to face, and how Ronimo got around these issues with last year's Awesomenauts.
"Our solution is pretty simple," van Dongen told Gamasutra. "The gameplay is completely peer-to-peer and every player is responsible for his own character. This means that the whole difficulty of synching controls with the server does not exist: if I press a button on my own computer, my own computer just executes it instantly."
For this reason, Awesomenauts players will never experience input lag, no matter how poor their internet connection may be.
"There are several downsides to this, of course," admits van Dongen, "like that interactions between characters become difficult to program, since they can be managed on different computers, and that every player needs to be connected to every other player, which is problematic with some router setups."
Yet, says the Awesomenauts dev, the Ronimo way is "by far the easiest solution to get smooth gameplay, and it is much easier to plug into existing gameplay than sending input over the network as in Valve's time-re-roll-system."
van Dongen notes that, in the case of Awesomenauts, it took a huge amount of work to keep the game's various mechanics in synch between online players, while attempting to use as little bandwidth as possible.
"The biggest challenge for us was in creating a uniform system around three very different platforms," he adds. "Playstation 3, Xbox 360 and Steam each have their own requirements, oddities and bugs that we needed to work with. Things like how to handle when an invite was accepted before the game started and then the player logged out of his Xbox account during the loading screen."
"The number of combinations of situations like that is endless and making sure they are all handled correctly is incredibly difficult and time-consuming."
Ronimo and DoubleDutch aren't the first studios to bring online multiplayer to a platforming game, and no doubt they won't be the last. What, then, would van Dongen say is the most important thing to remember when attempting to implement platforming-based online multiplayer?
"When people talk about programming online multiplayer, they generally talk about two things: gameplay synching (dead reckoning, prediction, etc.), and connections (UDP, sockets, NAT punch-through, etc.)," he answers.
"These are interesting, but the biggest challenge and the biggest amount of work in our experience is the game logic around matchmaking. Handling invites, splitscreen, sign-in/sign-out, searching for matches, hosts or opponents leaving at weird moments: the number of combinations is insane and this is easily the largest amount of work, in our experience."
What do you do, for example, if the host leaves the match because he accepted an invite into another match exactly at the moment when the match was won, but one of the other players did not receive the message that the match lost because of a packet loss?
"Good luck figuring that out," he laughs.