Porting is Harder Than You ThinkAugust 13, 2014
In a recent story for Ars Technica, Oculus CEO Brendan Iribe said that porting games to Oculus won’t work.
Valve asked us to give a talk called ‘Porting Games to VR.’ When we gave the talk, we stood up, we put up ‘Porting into VR…’ and then [the next slide was] ‘…does not work.’” it turns out that [PC games like Team Fortress and Half Life 2], as made for a PC to the monitor and a keyboard and a mouse, do not port over well to VR for a broad audience. They’re just really challenging from a disorientation standpoint. You need to make it for VR from the beginning.”
Some people in the community challenged this statement, and people are surely going to keep working on ports. So I wanted to go deeper to show why porting is not going to lead to great experiences.
We’re going to look at the amount of work required to port a single game and that investigation should show the challenges involved in porting most of them. They say “write what you know,” which means I’m going to be looking at Super Mario 64, one of the most popular titles of all time. What challenges would there be in porting this game to the Oculus Rift?
Note: When I write below that something is “disorienting”, I am drawing either on my experience watching Youtube videos of people experiencing dizziness or sickness, or from the Oculus Best Practices Guide.
First person or 3rd person?
The first question is whether we want to have the camera represent Mario’s point of view or have the camera look over Mario’s shoulder like it does in the original title. Let’s examine each in turn.
Here are some of the challenges associated with a first person viewpoint.
To enter each world, Mario jumps into a painting on the wall. This is likely to be disorienting in a first person viewpoint.
Many of Mario’s moves would cause motion sickness due to the rapid head movement. Examples: Pounding the ground (front flip), side somersault, wall kick (sudden change of direction).
Many of Mario’s enemies are taller than him, and would be terrifying to view from a first person perspective. The Whomp boss for example is about fifteen times as tall as Mario and tries to kill him by falling on him. I imagine this is insanely scary.
Mario can die by falling off of a floating platform. The ground (or clouds below) accelerating up toward Mario can be very disorienting and cause sickness.
One of the coolest features of a VR game is positional tracking - the world view updates when you move your head, allowing you to see around corners and such. It’s awesome, and let’s say we have a software kit that makes it easy for the Mario castle to update position when we move our head.
We then have a problem that if the user’s head leaves the view frustum (the area where the tracking camera can “see” the Oculus), the world stops updating, which can be very disorienting. New UI will have to be built to address this problem. (This isn’t a problem unique to Mario).
If Mario gets too close to a wall, the user can move their head toward the wall without the world moving, which is disorienting. Another disorienting change of direction will occur if Mario jumps towards a wall and is repelled backwards.
When running up a hill that is too steep, Mario slides backwards on his butt. This is a sudden change of direction not initiated by the user, which can be disorienting. A similar effect occurs when Mario touches lava or Bowser tilts the world.
The designers will need to make a decision about whether to have Mario’s body direction change when your head direction changes. Based on the conversations I’ve had so far, at least some users will be unhappy with either decision.
Okay, you’ve decided that maybe a first person camera angle isn’t ideal. Let’s look at some of the implementation issues for a third person camera angle.
When Mario dives underwater the camera moves seamlessly from above the water to under it. This may be disorienting.
Jumping into a cannon triggers a first person UI. The sudden change in POV can be disorienting.
Rotating the camera angle 90 degrees means moving the physical position of the camera (which in VR, is now your head) quite a lot, which can be disorienting. Yet, this is necessary in many parts of the game as currently designed.
If Mario gets too close to a wall and the camera follows, the camera (your head) can go through the wall, which can be disorienting.
In some situations the camera is frozen into place while Mario talks to a character. Freezing the camera is paramount to “taking control away from the user” and is undesirable.
- The initial menu and world interstitial menus, which takes up the entire screen, will need to be updated so the menu items don’t follow your head when it moves.
The Zelda 2.0 HUD is in roughly a fixed
position above your head.
The world freezes when you press “Pause”, paramount to “taking control away from the user” because you can’t turn your head and get new content anymore. These will need to be updated.
The corners of the screen, where information about coins, health, stars, etc are currently located, are difficult places to put data in the Rift because looking in the corners causes eye strain. A new HUD pattern will have to be implemented, maybe similar to the Zelda 2.0 Beta implementation.
I’m not trying to suggest it’s not possible to port a game like Mario to a head-mounted display. Mario is almost certainly not the easiest game to port, either. That said, many gameplay elements discussed here are found in other games (falling to your death, HUD in the corners of the screen, approaching walls, etc), and other games would have the same problems as the port discussed above.
We’re probably going to see a lot of ports. The earliest uses on new media often use patterns from older media. The first TV shows were people talking into a camera for 60 minutes (like they did on radio). It’s easiest to port games because the assets already exist and it’s “easy” in software and design terms to take something that exists and has proven to be a commercial success and make the minimal adaptations for a new screen. It may be easy to port, but I don’t expect ports to succeed on the Rift.