Enabling Guns of Icarus Alliance Cross-platform with Photon Voice
This guest post was written by Howard Tsao, Team Lead at New York City based indie studio Muse Games.
Their hit-game ‘Guns of Icarus’ raised the stakes on team-based PvP combat with an emphasis on strategic competition and truly cooperative play. It is a fantastic airship-to-airship combat game that’s all about teamwork, tactics, and fast-paced action.
The main tenets of the Guns of Icarus experience were teamwork and bringing people together. Therefore, as we took Guns of Icarus Alliance – the complete edition of the game – to PlayStation 4, seamless cross-platform play was something we aspired to from the start.
Not only did we want people from PS4 and Steam PC to play in the same match, we also wanted them to fully communicate through all the means available. This meant that having cross-platform voice chat support was essential.
Realizing the vision of fully integrated cross-platform play and voice chat between PS4 and PC (Win/Mac/Linux) on Steam brought about set of novel challenges that we had to find creative ways to overcome, as there hadn’t really been precedents that we could follow or emulate.
Thankfully, Photon and Photon Voice were instrumental in making this cross-platform dream possible.
Working with Photon and Photon Voice
Guns of Icarus started as a PC game (Windows, Mac, Linux) that integrated Steam’s API, and therefore we implemented our chat on top of Steam’s Voice Chat system, which was done via peer to peer networking. However, this voice system required Steam running for all players, and cannot be used for PS4 players.
PS4 has its own voice chat SDK. Unity wrapped it with Net Chat Plugin. It provided some basic voice chat features, but not enough to cover all the voice chat features Guns provided. And the bigger issue was, it cannot be used for PC players.
In order to support cross-platform voice, the first issue came to our mind was whether there would be a 3rd party voice chat solution that can work for both PC and PS4 players. Without it, we could still support both PC/PS4 players playing together, but they would likely not be able to use voice chat to communicate. Given the high demand of collaboration in the game, it would not be ideal. Along the way, we built contingencies, such as a voice signaling/command system and a more nuanced AI crew command system. However, these were meant to be plan Bs, and the elusive grail of cross-platform voice chat was what we were after.
At the time, there were very few cross platform games, and even fewer games that supported players from both platforms to play together, so we could not find how other games worked. There were no ready-made 3rd party solutions, and our own attempts to build this voice chat bridge did not get very far. The task seemed daunting to impossible for a long while.
Last year, we found Photon Voice as a voice chat solution that works on PC. Since we used Photon as our own game server, we had some experience with it, and knew that its networking package works on PS4. We started talking with Photon’s team and realized that this could be a way forward to make cross-platform voice a reality.
The package itself was quite straightforward and easy to use. However, Guns of Icarus’s existing voice chat system was complex. We designed our in-match voice chat based on a multi-channel structure, taking a bit of inspiration from the military. Crews onboard the same ship could only talk to each other. The captain of each ship had an additional channel to talk to other captains on the same team. This way, we helped manage the flow of information so that players were not overwhelmed and inundated with everyone’s voices, which could be highly chaotic.
As a result, integration took us some time, as we needed to support players chatting with players in the same match lobby, as well as players in the same party, which could be two different groups of people. Also, in match lobby we supported match chat, team chat, captain chat and crew chat, and recipients needed to know not only who was talking but which channel that player was using. These were not supported by the original code provided by Photon Voice, and therefore we tweaked some of its source code at higher level. The solution was flexible enough that we managed to make it work exactly like what Steam voice did, and it worked cross platform!
However, there was a caveat that we didn’t know until very much later, found by Sony’s meticulous FQA team, that PS4 players were not able to output only the chat audio to the headphone, but keeping the other music/sound to the TV. The feature was supported by Unity’s Net Chat Plugin by routing the incoming voice data to PS4’s voice device, whereas Photon Voice handled the voice with Unity’s AudioSource class, so that they could not be separated with the rest of the sounds in the system. This was something we reported to the Photon team, and it was something that they were actively working to support. Hopefully soon, everyone using Photon as the solution would be able to navigate this issue much easier. One thing great about diving into the unknown abyss was that we had the opportunity to work with great people such as the Photon team to make contributions to improving their product and platform. This was one of the more rewarding part of our development.
Realizing the dream of releasing on the PS4 and finding a solution cross-platform play and voice took us on a challenging and lengthy journey. In the end, we could not have succeeded without Photon and Photon Voice, as well as all the timely support the team at Exit Games provided us. For anyone looking for a cross-platform solution for an online multiplayer project, we absolutely recommend Photon.