RED Games Location-based VR 2018

The Raft is a four-player co-op same-space VR shooter commissioned by Starbreeze Studios for Emarr Entertainment’s PVRK in Dubai. You and three friends will board the raft and purge the swamp of an infestation of supernatural creeps.

Development overview

The game was purpose-built for deployment to the PVRK in Dubai. It’s built primarily for Vive and StarVR, and we also supported the Oculus Rift which we used for early prototyping. Each client runs on an HP Omen X compact desktop, which has a backpack form factor allowing untethered/wireless play; this was crucial to executing the same-space concept (all four players share the same physical space and can physically interact with each other during gameplay).

I was the design and development lead on the project, and for most of its life I was also the sole engineer. The game is built in Unreal Engine 4 and nearly all game logic is implemented in C++. Key tech pillars for this project were the avatar posing system, which translates the HMD and hand controller positions into convincing full-body articulation complete with walk cycles and facial expressions; a transparent aim assist algorithm which helps players feel like sharpshooters while avoiding the feeling that the game is aiming for them; and a multi-layered flocking behavior for the massive enemy bat swarms that appear during the middle section of the experience.

As the project wrapped, I also concepted, shot, and edited the promo trailer you see above, and coordinated a final pass of After Effects work that was provided by a colleague.

Lessons learned

After using Unity almost exclusively for years, I came into Unreal Engine 4 pretty cold. I remembered some stuff from having worked on Gem Feeder 14 years prior, but that was two engine generations ago and a lot had changed, so I had to get up to speed quickly.

UE4 is really different in that it’s open-source, which meant wrapping my head around a whole new buildchain. For StarVR support we had to integrate an engine patch, and over the course of development I had to make a few other engine-level changes as well: mostly addressing bugs, in particular a crucial network timing issue. This was a depth and intensity of C++ programming I hadn’t done in a while, and it was definitely an adjustment.

I also learned a ton about VR development, in particular what you can get away with in VR. The avatar articulation system, while clever and effective, is way less sophisticated in implementation than I’d have thought it would need to be to feel convincing. That turned out to be true for lots of things, and might be chalked up to the fact that, for now, VR as a concept still has that new-car smell with most players. I’m sure the bar will go much higher over the next few years, as adoption spreads and players become more familiar and experienced with VR.

Finally, this project really crystallized for me something that’s been nagging at me for a long time: that games can be awesome without being punishing. The decision to omit a fail state for the bulk of the experience was deeply controversial throughout development, with many arguments made that without a fail state the game would have no stakes and would end up being boring.

In practice, that turned out to be wildly false… for this use case.

To be fair: this is a location-based experience that most people will play through just the once, and its target audience is vastly more casual and VR-curious types than hardcore gamers. But for this use case, taking a more forgiving design stance and just letting people enjoy the content, regardless of their skill level, was absolutely the right decision.