Wow, I heard it's a pain writing game engines from scratch. How did you make an engine with VR compatability?
Vehicle Construction Kit
A downloadable game for Windows and Android
Vehicle Construction Kit is about sticking simple parts together to build vehicles. It is a VR game optimized for Oculus Quest and can be played alone or in multiplayer.
I initially prototyped this during a one week game jam and been fixing bugs and adding features since then. I am still far away from having all the features I want, like active motors that can be controlled with sticks and buttons and flying. Those things are NOT there yet, but I may add them in the future.
Usability is also a bit lacking: A and X toggle through the 5 available building blocks, trigger creates a new object or grabs an existing one without effecting other parts, while the grab button will grab something and move it with everything that is attached to it around.
The available parts are: Box, Plane, Cylinder, Axis and Thruster. These parts are loaded from json files and are easy to add or customize, but for this to work correctly in multiplayer everyone needs to have the same set of modules.
Unless everyone is inside the same network multiplayer needs port forwarding and your external IP address.
Vehicle Construction Kit is using my own game engine "Rayne", which seems to be somewhat stable but could potentially have all kind of issues. I am using PhysX for the physics simulation, OpenAL Soft and libOpus for the Audio, Enet and Protobuf for Networking and a couple of other libraries.
|Made with||Blender, Pixelmator, Oculus Rift, HTC Vive|
|Tags||building, construction, Multiplayer, rayne, Singleplayer, vehicles, Virtual Reality (VR)|
|Average session||A few minutes|
|Inputs||Oculus Rift, HTC Vive, Oculus Quest, Windows Mixed Reality, Valve Index|
|Multiplayer||Server-based networked multiplayer|
Click download now to get access to the following files:
Log in with itch.io to leave a comment.
It is a lot of work, this is like the 7th "engine" I made over the years, it's probably the best one yet, but there are still a lot of things I'd love to do different, but then I would never manage to actually make a game with it.
For the VR support I mainly just implemented a "VRWindow" from my "window" class (which represents a single application window on the screen). This VRWindow has a "swap chain" (which has a couple of buffers) just like every other window which can then be rendered into. The only difference is that instead of this being backed by a window on the screen, it passes this on to the different VR SDKs which all have an implementation of this window. The VRWindow also has some additional methods to query input, head position and set haptics.
I then have a VRCamera which does some of the more general camera setup, creating two cameras attached to a head which render into a vrwindow.
Actually this now looks more complicated than it really is :D The result is that I can use the same code for the different VR headsets / SDKs. The VR part was pretty easy to do, but I don't have support for some of the optimization stuff yet like drawing both eyes at once with instancing or foveated rendering. Both will need some adjustments to the rendering.
Hey there Slin! Nice to see you getting involved in the game jam. This looks cool! You should put it up on SideQuest too!