Intro
Since the discharge of the Guns of Icarus series on Steam and PC, we’ve been constantly updating the player revel in. From the unique PvP most effective edition to Guns of Icarus Alliance, the today’s and complete edition with PvE and faction battle infused, we’ve discovered a ton over the last few years. Yet, because the very starting, we had usually aimed to go past PC and take the sport to console. Bringing Guns of Icarus Alliance to the PlayStation four became a dream that we’d been running in the direction of since the begin. Gaming on console have been and nevertheless is, a substantial part of our lives, and we still get a piece starry-eyed with the conclusion that our recreation is going to be on PS4. The adventure to get so far were a winding and exhausting one for us, studying and overcoming myriads of challenges along the way. With the sport now set to launch on PS4, we wanted to take a chunk of time to reflect and share some of the training we learned in this adventure.
The foremost tenets of Guns of Icarus were teamwork and bringing people together. Therefore, pass-platform play changed into something we aspired to from the very starting. Not only did we need people from console and PC to play in the identical match, we additionally desired them to completely communicate via all of the approaches to be had, including voice, text, and command signals. Realizing the imaginative and prescient of absolutely included go-platform play – between PS4 and PC (Win/Mac/Linux) on Steam and different structures – brought about another set of novel demanding situations that we had to locate creative methods to conquer, as there hadn’t clearly been precedents that we may want to comply with or emulate. The purpose of this write up is to recount the distinctive units of issues – starting from cross-platform development, performance, and user interfaces concerns to the engine and platform-specific challenges – and summarize how we overcame them. Hopefully, this would be a beneficial reference for anyone embarking on multiplayer tasks and thinking about move-platform assist.
Cross-Platform
Limitations and Advantages
The choice to go pass-platform among console and PC changed into a complex one to make for any multiplayer identity. While we had been guided by way of our vision for the sport, this decision did come with an extended listing of technical challenges. One lesson found out turned into that we couldn’t make layout adjustments impartial of platform, which means that if we located demanding situations that had been one-of-a-kind for mouse and keyboard customers, or discover something turned into commonplace convention on one platform however now not the other, we needed to find a unified solution that labored for each. This also restrained the way we resolve other issues which includes performance. Essentially, we realized that we needed to make a game that becomes optimized for 2 particular platforms. This intended that our technology needed to be bendy and that we couldn’t pass all in on any technology or hardware that won’t exist on different systems. We essentially needed to optimize the game all over again for each platform we desired to launch on. And for Guns of Icarus, shifting to console supposed that we needed to take a step lower back and exchange some of the approaches we advanced new contents and functions. We moreover now not had the plenty freedom to push updates each time we felt love it, and we had to be careful including features that failed to match on both structures. In addition, because our console odyssey took one of these long time, we needed to re-have a look at our UI/UX and make sizable redesigns with controller navigation in mind. This had outcomes in phrases of community and player reception; a part of our players who were used to or entrenched in our antique navigational go with the flow did now not take kindly in our redecorate efforts. The UI remodel then became also a workout in network and crisis control.
With all this being stated, keeping a recreation pass-platform ultimately had some of the benefits as well. With Guns of Icarus, we had always pointed everyone from extraordinary areas or working systems to the equal match on the same server. For better or worse, we desired to make a case to bring players collectively in that way, and so we’ve architected our backend to reflect that. In a way, with helping cross-platform for the console, this turned into merely a platform extension to our back give up. However, in our opinion, maintaining an unmarried consumer base changed into generally notable for a sport. It becomes plenty simpler to hold one organization of active gamers than two. And in any multiplayer assignment constructed on teamwork, letting players from one of a kind platforms institution up and play may want to suggest more long-term and invested players. Cross-platform help also meant preserving a single version of the game in place of more than one discrete versions that could probably be even extra of a version manipulate nightmare. From our quiet, only having to hold one model of the sport became a huge benefit. We had been not balancing every object and map two times. We weren’t writing all our code twice, and it changed into all of the same recreations. Most importantly though, doing cross-platform play turned into just REALLY gratifying. It was fantastic to look all people playing together. Being capable to say “come to play this game with me” and no longer having to worry about having pals on specific systems changed into a dream come properly to a terrific portion of players in our game.
Cross-Platform Voice
Guns of Icarus began as a PC recreation (Windows, Mac, Linux) that integrated Steam’s API, and therefore we implemented our chat on top of Steam’s Voice Chat gadget, which was completed thru peer to see networking. However, this voice device required Steam jogging 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 a few primary voice chat functions, however no longer enough to cover all of the voice chat capabilities Guns supplied. And the larger trouble became, it cannot be used for PC gamers.
In order to support go-platform voice, the primary issue got here to our thoughts was whether there might be a 3rd party voice chat solution that can paintings for both PC and PS4 players. Without it, we may want to nevertheless assist both PC/PS4 players gambling together, but they could possibly now not be able to use voice chat to speak. Given the excessive demand for collaboration in the sport, it would now not be ideal. Along the manner, we built contingencies, inclusive of a voice signaling/command device and an extra nuanced AI team command machine. However, those have been intended to be plan Bs, and the elusive grail of go-platform voice chat was what we had been after.
At the time, there were only a few move platform games, and even fewer games that supported players from each structure to play collectively, so we couldn’t locate how other games worked. There were no equipped-made third celebration solutions, and our personal attempts to construct this voice chat bridge did not get very far. The challenge regarded daunting to impossible for an extended even as.
Last year, we located Photon Voice (evolved by Exit Games) as a voice chat answer that works on PC. Since we used Photon as our very own game server, we had a few enjoy it, and knew that its networking package works on PS4. We started out talking with Photon’s group and found out that this will be a way ahead to make cross-platform voice a fact.
The bundle itself become quite straightforward and easy to apply. However, Guns of Icarus’s existing voice chat gadget become complicated. We designed our in-healthy voice chat based on a multi-channel shape, taking a chunk of thought from the army. Crews onboard the same ship ought to simplest speak to every other. The captain of every ship had an additional channel to speak to other captains on the equal team. This manner, we helped manage the drift of facts so that players were now not crushed and inundated with anybody’s voices, which will be relatively chaotic.
As a result, integration took us some time, as we had to guide players chatting with players within the identical suit foyer, in addition to players within the equal birthday party, which may be two exclusive groups of humans. Also, in shape lobby, we supported fit chat, crew chat, captain chat and group chat, and recipients had to know not handiest who was speak me but which channel that player changed into using. These have been now not supported via the authentic code furnished by Photon Voice, and therefore we tweaked some of its source code at the better level. The answer becomes bendy enough that we managed to make it work precisely like what Steam voice did, and it worked cross-platform!
However, there was a caveat that we didn’t recognize till very lots later, determined via Sony’s meticulous FQA group, that PS4 gamers have been now not capable of output most effective the chat audio to the headphone, but retaining the alternative song/sound to the TV. The feature becomes supported by Unity’s Net Chat Plugin with the aid of routing the incoming voice information to PS4’s voice tool, whereas Photon Voice dealt with the voice with Unity’s AudioSource magnificence so that they couldn’t be separated with the relaxation of the sounds inside the machine. This changed into something we pronounced to the Photon crew, and it becomes something that they had been actively running to assist. Hopefully soon, absolutely everyone the usage of Photon as the solution could be capable of navigating this trouble tons less difficult. One issue super about diving into the unknown abyss was that we had the possibility to work with extremely good people which include the Photon team to contribute to enhancing their product and platform. This turned into one of the more rewarding a parts of our improvement.
Navigating Unity
The Bare Minimum: Getting the Game to Run on PS4
AoT Compilation Issues
Guns of Icarus had quite a few customary item instantiations (like List<X>) at runtime (the usage of System.Reflect), which induced us a ton of headaches, because the PS4 didn’t have a real.Net runtime surroundings like PC, and might simply throw out a group of AoT compilation mistakes at runtime.
Our preliminary answer becomes to claim all those used general instructions explicitly in one in every one of our scripts. So that Unity might know those classes exist and construct them well. However, there were so many of them and it became very tough to list them all, now not to say making and retaining that list was extremely error susceptible.