The Horror Engine
Background
The Horror Engine is a clash of passions for me. It applies principles of my research into the mechanics of horror games & Virtual Reality (VR) & also cements the knowledge I have gained from my MSc in Computer Game Software Development.
The Horror Engine takes the immersion of VR a step further by allowing a multi-player experience in which the player outside of VR can manipulate the VR world in real-time, thus tailoring the experience for the player in VR. This takes the potential of social VR further. Not only by watching & enjoying the VR experiences of others but having an impact on their experience. The aim is to allow the player to create an experience tailored to the fears of the player in VR.
The long term goal, yet to be fully realised, is for this this principle to be supported by a number of graphics APIs and a range of VR headsets - hence the Horror Engine.
The story so far...
I have created a minimum viable product to demonstrate the bare bones concept of the Horror Engine.
Networking
The most challenging aspect of the engine so far!
I have used windows sockets to create two-way communication between two PCs using the same local network.
Threading has been used to avoid the blocking send & receive processes.
The server machine acts as a portal into the VR world, allowing the player to place objects, which persist into the VR world.
Currently, the two way communication passes coordinates between the client & server machines of both the player (in VR) position & also the position of where the object in VR should be placed.
The next stage involves placing objects & tracking positions in a more sophisticated manner, using a grid system.
VR Integration
The client machine facilitates VR using the Oculus Rift C++ SDK (ovr_sdk_win_0.8.0.0).
The Oculus libraries have been successfully integrated & adopted into the existing code of the engine.
The player can use the Oculus headset to look around the environment & X Input is used to move the "body" of the player.
X Input is also used as a means of rotating & zooming into the 3rd person representation of the VR world on the server machine.
Rendering
All graphical rendering in the engine is through the use of DirectX 11.
The book Beginning DirectX 11 Game Programming by Sherrod & Jones has been my bible for the last few months!
The engine supports the import of .obj files (but currently doesn't support .obj files with animation information contained within them).
The next stage will involve a more data driven approach to the models loaded for use within the engine. This would be by reading in a text file of .obj files & their associated texture information.
The texture & model information can easily be adapted, as demonstrated by my lovely Twin peaks homage above :)
* The Horror Engine is a work in progress! Please watch this space for updates & development blog posts! *
A massive thank you to my BAFTA Mentor Lizi Attwood for her ongoing guidance & encouragement during this project. Lizi is an absolute legend.