I am the main XR and Software Developer for Mend!
Mend is a 2 player, asymetrical co-op game for VR. It is designed by Justin Palmer and was originally an Oculus LaunchPad title.
I developed the core game systems built to Justin's specifications, including:
- an XR Interaction Rig we use that abstracts object usage logic away from the core VR camera rig.
- "Grab & Pull" locomotion keyed to the hand controller update sequence for as smooth as possible movement
- Physics based object manipulation. (aka you can pick up things)
- Extensive modifications to FMOD to allow dual speaker outputs so the VR player has their own localized audio that is distinct from the pancake player
- An input remapper built on top of Oculus' OVRInput system to allow easy control customization
- Spatial dependent collision platforms!
Check out the first gameplay trailer here!
Feature Highlight: Spatial Dependent Collision #
I'm really proud of this, and I want to explain more in depth.
Dictionary of Terms
- VR Player : the person wearing the VR headset. This is the "Owl sister" seen in screenshots and gameplay.
- Flat Player : the person using a controller and computer monitor and no VR headset. This is the "Fox sister" seen in screenshots and gameplayer.
Having invisible platforms is not a novel idea in video games. The logical progression is a tool or item that reveals the platforms.
For an example from Super Mario Odyssey:
The obvious use case for a 2 player game, is that Player1 controls the tool to reveal the platforms that Player2 has to use. However, it didn't mesh at first with our use case.
The Twist #
I really wish we could make the collisions operate the same way as the visuals. - Justin Palmer, Mend's Game Designer
The core aspect that Justin wanted to have is that the players need each other, and cannot complete the level without each other.
We already accomplished this with platforms as The VR player is the only player that can move the platforms for the non-VR player to use.
However, once the VR Player revealed the invisible platforms to the Flat Player, the Flat Player could just remember where to run and jump, removing agency from the VR Player as they just had nothing else to do.
We already had a method of partially rendering platforms that were in range. I then took it one step further, and devised a method of controlling collisions for partials views as well. The Flat Player (and any other physics objects we want!) will now fall through any invisible sections in the geometry.
The result #
(animated gif showing partial collision dynamically with a bunch of boxes)
Now the game really requires team work to complete!
(animated gif showing Owl and Fox working in tandem to platform)