Sky Rogue also offers a local splitscreen co-op mode, which comes with its own challenges, which are generally complicated even more by the permadeath.
-Significantly less difficulty - This isn’t something I really consider a flaw, the game is already challenging and I don’t mind if people even the odds with a friend, but beyond the obvious fact that you’ve got more guns on your side, you also have doubled the number of targets your enemies might shoot at. This is a pretty big deal when half of the challenge is surviving incoming fire, since enemy aircraft might focus on one player and ignore the other. There’s nothing really special going on under the hood here: enemies frequently try to target the closest player.
-No free respawns - Games made with co-op in mind generally have some way to revive dead players during combat, or at the very least allow them to quickly respawn. Doing so in a permadeath-driven game would pretty much fundamentally break the game. Sky Rogue doesn’t do anything clever yet, the dead player is dead and just has to wait, but that’s not a good solution in the long term, especially when it’s very easy for beginning players to crash very early in flight. Spelunky lets dead players float around as ghosts and blow on things, at least giving them something to do. However, when starting a new level, the dead players stay dead, while in Sky Rogue they get to fly again.
-Technical challenges - Rendering the game on two cameras is simple enough, but that’s only the tip of the iceberg. The game was formerly coded as a singleplayer game and needed some code rewritten to conceive of a game with multiple players. Each time a new feature is added, or even when bugs are fixed, they need to be tested in splitscreen as well as in singleplayer. Most notably, Unity doesn’t natively support multiple audio listeners, meaning only one player gets to hear correct audio. There are off-the-shelf plugins to implement this functionality, but they require you to basically re-implement all existing audio code to use the plugin’s methods and not the built-in Unity ones.
Thankfully, Sky Rogue has extremely lightweight graphics, so it doesn’t go up against perhaps the main reason why splitscreen modes aren’t finding their way in most AAA titles: rendering performance. It’s already hard enough to get the game to look great with a single camera at an intentionally-limited 30fps, imagine having almost double the load because you have two cameras which could be looking at completely different things at the same moment. In many cases, games capitalize on intentional limitations, such as Wolfenstein 3D limiting itself to a 2D map to allow for some highly optimized fake-3D rendering. In Sky Rogue’s case, and in more cases than you may realize, it’s entirely unintentional: we wanted to pursue the low-poly, flat-shaded look anyways, and it just happened to make things a lot easier for splitscreen. It also avoids many other unexpected issues; our shaders don’t break when upgrading to the next Unity version because we only use about 3-4 built-in ones.
Despite the challenges, splitscreen co-op definitely adds a lot to the game. I don’t have any hard-and-fast numbers, since I haven’t (yet?) implemented any analytics into the game, so I’m not sure how many people are actually playing it. However, the ancedotes are frequent: of those who play co-op, parents playing with their children is pretty common, and it’s a natural fit for streamer teams such as Average Giants who are physically next to each other. It’s a game that lends itself well to being played with company despite not explicitly being designed for it. Players who suffer from the “no free respawns” are generally willing to restart the game if their friend dies too early.
Overall, Sky Rogue has been a difficult game to design, despite the fact that many decisions came easily. Your home base aircraft carrier is floating in the sky… because it happens to be cool. The enemy sends reinforcements the more destructive you are, because otherwise players would use the boring-but-optimal tactic of destroying everything dangerous and then destroying absolutely everything it was protecting, on every single level. It seems like the easy decisions are self-evidently right, but the hard decisions that took weeks or months of feedback and refinement seem like arbitrary compromises. Having a solid vision for a game seems like a platitude, but it’s really quite critical, and knowing what’s not important for the game is just as important as knowing what’s important. Like the flight simulators of the 80s and 90s, we’re working within constraints, but this time most of them are intentional. A clash of polygons flying over a (not entirely) flat plane is part of Sky Rogue’s vision; not an empty throwback, but as a critical piece of a game that’s not quite been made before.