Public VR Critique #1: Nighttime Terror

Oculus Developer Blog
Posted by John Carmack
April 26, 2016

In 2015, John Carmack published a series of public critiques of the first batch of Gear VR titles to provide guidance for future VR development. We are republishing these six critiques on the Oculus Developer Blog. Note that the critiques were requested by the developer and that current versions of these titles could have been updated to address items noted in these posts.

Original Publish Date: May 6, 2015

This is a well-executed project, with everything competently done:

  • Gets a head tracked load screen up quick.
  • Using MSAA and proper texture filtering.
  • Generous UI size for legibility.
  • Simple gaze-and-tap UI.
  • Playable with just the touchpad.
  • Nicely light mapped diffuse environments.
  • Fairly dim, reduces peripheral vision flicker.
  • Blob character shadows.
  • Background music.
  • Leaderboards.

Technical Criticism

It only runs at 30 fps, so you see the edges of the screen pulled in with rapid head motion. Without profiling I can’t say where the fault might lie, but it should be possible to make it run at 60. I never saw “block tear” during gameplay, so it is likely that the slowdown is CPU related, rather than GPU.

The bedroom/menu room extends too high, repeating texture coordinates enough that there are clipping issues – I could get jittering texture coordinates when looking down at the very base of the wall. Cutting the height in half would probably fix it.

While dim is generally good, solid black strongly brings out the two-frame-rise ghosting problem with the display. Loading screens should go to black at the edges to reduce the impact of choppy updates (we need to make a sample of a load screen that is only rendered a single time, which can avoid the chopped-off effect that very low FPS load screens can show) (UPDATE: look for this to be included in a coming update to our Unity Sample Framework), but game scenes, like the kitchen, should avoid solid black. Going to a dark grey would help.

There is very little sense of stereo in the game, it could almost have been rendered monoscopic. The game is full of small things close to the floor, while you are a good distance away. Even the things you do get somewhat closer to, like the rocking horse, are still close to the wall behind it, which also has limited texture to show the stereo disparity.

While the UI is generally good, there is still some aliasing on the line art for the controller and at the edges of the UI plaques. Going full sRGB gamma correct helps (at some performance cost on Adreno), but just going to thicker lines with a little fade at the edge is even more effective.

The edges of powerup models had sparkles, both on the UI and in game, and the office and attic scenes had sparkles along some edges. Not outlined enough in texture atlases? The Christmas level had alpha tested leaves, which cause a lot of aliasing. Sorted alpha blending is best, but using alpha-to-coverage will help a bit. The sparkling aliased bright lights are especially bad for stereo disparity.

The UI buttons activate on button state – I once died and a menu item immediately activated because I had the button down and happened to be gazing in the right place. They should be edge triggered on button release, ideally showing one highlight state when gazed on, another when the button is down, then only activate if the user releases without moving the gaze outside of the button. Integrating tiny audio effects for each of these events helps a lot.

UI activate should also immediately put away the menus. Right now you tap it, and it isn’t clear anything is happening for a quarter second or so.

VR engineer hat off, game developer hat on:

This design was (probably correctly) driven by touchpad control, and the mechanic is pretty good for that limited interactivity, but it does hamper game play. I really wish we could bundle a gamepad with every Gear VR.

Repeating weapons and damage sponge enemies don’t make for the most rewarding gameplay. Holding “time on target” never feels as good as having the “eye for the moment” and one-shotting something. Tapping the HMD repeatedly isn’t good for VR, so there may not be much to do about it.

For fire-hose style shooting, I would have liked to try Robotron style aiming with the joypad, but that would push the joypad gameplay even farther from the touchpad experience. In fact, I thought about the N64 Robotron game while I was playing, since the enemy counts are reasonably similar. There are probably some gameplay lessons there if you can find an old cart or emulator.

The action could be made much more rewarding. Even if the functional behavior didn’t change at all, flailing arms and juddering bodies under the stream of bullets and more aggressive death explosions leaving a splat decal behind would make the play more fun. Some knock back from more powerful weapons on both shooter and target would also help.

A minor visual effect at point of shot impact on the environment would help.

Crowds of little monsters cry out for grenades.

3D audio would help, especially when shots go wild and impact on the other side of the room, but you would have to be careful to limit the channel count under rapid fire for performance reasons.

I would have liked a slightly faster movement speed.

I lost track of my guy after looking around sometimes. HeroBound added a dynamic pointer to help this. It would be nice to have a press-to-start on each level so users can look around and appreciate the scene before the action starts.

There should be a sound when items spawn, and when they bounce on the ground. The item models were completely meaningless to me; even if they stay abstract (accurate weapon models would be bad) there are probably better choices.

The monsters are so silent – the big ones should have an occasional roar animation.

The hat darkening health indicator was not very clear to me. Having the band go green / yellow / red would have been more informative.

Announcing waves during play would break up the unending nature of the play, and maybe giving full heals every ten waves or so would give some meaning to them.

The different scenes would feel more valuable if you had to get to some minimal distance in a prior scene to unlocking the next one.

The levels could have been designed so the character could walk much closer to the camera in some places, which would be a nice contrast. In general, I wish I was at least a little closer to the action at all times. It is hard to identify with your character when all you look at is a small hat.