ESCHVR

a VR game with impossible geometry

Demo Room 1

In regular geometry, four 90° turns make a loop. Here's a room where two 90° turns are enough.

Demo Room 2

Here's a room where you have to take six 90° turns to get back to where you started.

Demo Room 3

Finally, here's room where the "exit" door actually leads to a different perspective of the same room.
Forgetting non-Euclidean geometry for a second,
here's an example of a basic puzzle level in ESCHVR.
Here's an assortment of images from the game.
image loading...
image loading...
image loading...
image loading...
image loading...
image loading...
image loading...

Dev Notes

(or, why I'm proud of ESCHVR)


Game engines are not designed with non-Euclidean geometry in mind.
Throughout the development of ESCHVR, it became increasingly obvious that Unreal Engine 4 was no exception.

Most games that simulate non-Euclidean geometry do so through hidden portals. These portals serve 2 functions:
  1. Physics – Teleport objects from one portal to the other.
  2. Visuals – Render the view seen from one portal to a texture, then put that texture on the other portal.

However, VR and UE4 combine to make both of these functions a lot less straightforward:
  1. VR motion is weird. The player's controllers and head can move independently of their "real" position.
  2. VR has stereoscopic rendering, which means double the renders per portal side. Rendering scenes to textures in UE4 is very laggy.

Because VR was (and still is) in its infancy, there were no existing implementations I could work off of. None in UE4, anyway. This was uncharted territory.
However, after roughly two years of sporadic development, a lot of glitchy-VR-induced nausea, and a hard reset or two, I came up with a solution.

Without going into the scary implementation details, the VR-compatible portals were powered by two novel concepts I came up with:
  1. Proxy objects. They keep track of how an object's movement is transformed through different frames of reference.
  2. Ghost objects. They're like fake, render-only clones of objects.


The suprising thing is, these new techniques actually worked.
To my knowledge, ESCHVR is still the only working implementation of non-Euclidean geometry in VR in Unreal Engine 4.
Go Back to the Main Page