Get the latest Education e-news
 
  • Porting To Consoles: Gotchas And Things To Consider

    [09.13.18]
    - Matthias Maschek
  • Lightfield is a flying racing game with parkour elements and a novel approach on how to navigate the tracks. We released Lightfield in September 2017 on Xbox One and Playstation 4 followed by Steam in August 2018 with extended HYPER Edition features.

    Lightfield was designed from the ground up to be on consoles, which we were hoping would give us a good visibility boost on launch. Most of our features were targeted about what players on consoles want and expect and everything was designed for the TV+couch setting.

    We focused on simplicity and tried to get rid of as many game menus as possible. Joining and dropping out of local multiplayer sessions and switching between game modes like time trial and exploration should happen fluidly without menus and reloads. This is also what caused some headaches later on...

    Starting Point

    We are a small team of four consisting of two programmers and two artists. We already had experience developing games and interactive experiences, but none of our previous projects was on this scale or targeted consoles.

    We started out on PC as our main development platform since it took a while until we had all the contracts signed and received our Dev Kits for the consoles. Thus we only started around midway through the project with the implementation of console specific features.

    In our research we found a lot of talks about performance and optimizing gameplay for consoles, but what we were missing though was all the small and large details that come along when developing for consoles but that are easily overlooked: It's the little things players take for granted and that behave the same across all games like sign in behaviour or starting and joining online multiplayer matches.

    In this post I will try to highlight some of those obvious but not so obvious features that we initially overlooked and underestimated when porting the game to consoles.

    Users

    Lightfield was designed with the TV and couch setup in mind from the start. There is a group of players out there that is actively looking for local multiplayer games, and since we also like us some local multiplayer ourselves, we decided to make it a core feature.

    Focusing on simplicity and trying to reduce game menus in favor of a more fluid game flow, it was important for us that players can join and leave the game pretty much at any time. There is no discrete local multiplayer mode, all you have to do is pick up a controller and press any button to join.

    User accounts

    Having no discrete multiplayer mode made implementation a lot more complex when it comes to handling users and user accounts. We knew that consoles have user accounts but we were not aware about all the fine details, similarities and differences.

    Every participating player in the game has a user and that includes the split screen players. At the beginning we only had one "User" that represented the connection to the platform libraries but soon after looking at more closely we realized that ain't gonna be enough.

    We started with most of our integration on PlayStation where accounts are handled quite easily. Whenever you connect a controller to the console you have to sign in and for the duration of that controller being connected the user stays the same. So whenever a player joins active gameplay in split screen multiplayer there is already a user assigned to the new controller and stays the same user as long as the controller exists. All we had to do if the user/controller disappeared was to drop the player out of the gameplay.

    Later, when we moved to the XBox One we realized that the whole concept of users is way more flexible and dynamic there. Users bound to controllers can change at any time, controllers don't necessarily have a user bound to them from the get go etc. That means that you have to keep track of the users that are bound to the controllers and thus to a certain player. We were quite simply missing a player/user/controller system as one piece that connected this information in one place.

    The sign in flow on XBox One also impeded how our in game join worked. In the beginning, if a player pressed any button on a controller the controller joined immediately into gameplay since the user was already initialized at that point in time. Now, when the player presses a button we have to go through the full sign in process interrupting the gameplay which can take up to several seconds.

Comments

comments powered by Disqus