Michael Kleinbriel
Game Developer | Animator | Programmer

Peril in Paradise

Personal Project made to increase my understanding of Unity's VR systems

Everything seen in the video was made by me from scratch.

I've always been fascinated by VR games and to be more specific, physics-based VR games like Blade and Sorcery, Boneworks, and Half Life: Alyx. So, I decided to try and learn how these games were made by trying to make my own in Unity. This project was made in three weeks of on-and-off work in July 2022 and it required a lot of research. This was before I even went to college to learn more about video game development and Unity. The video above showcases the project but here is what I'm most proud of. To start, the player controller ended up exactly how I wanted it to be. It is entirely physics based and every part of the body is connected with either a fixed joint or a configurable joint. The player moves by having a "monoball" sphere roll around have friction move the player. The player physically jumps by compressing its body down to its feet and then quickly expanding, just like real life. The hands are connected to the body via configurable joints and the player can climb by grabbing with their hands and pulling up. They can also grab other objects (like the "crowbar" in the video) and use them to grab onto ziplines to move around. My biggest accomplishment though is my physic's based hands. Each finger has physics attached to them and that allows them to wrap around objects that the player grabs realistically. No need to set hand poses for every object, the player can realistically grab anything. However, the current implementation is a little bit buggy but I just need to get around to fixing it, I've has pseudocode written for over a year and a half.

The player obviously needs some tweaking though and some refactoring due to the fact that this was pretty much my first time ever using Unity before and I was just learning as I went along. One thing that I would like to point out is that everything was custom made. Unity has its XR toolkit with some prebuilt stuff but it is really bad. It doesn't allow for physics interactions at all, everything is just translation. This is good if you want to make a game Job Simulator or Beat Saber but terrible if you want to make a physics-based game like Boneworks and Half Life: Alyx. So, I decided to ditch all of that and make my own systems instead.

I'm really proud of what I made for this project considering it was my first time using Unity really. It definitely needs a complete remake today though where I can use my current-day skills. But, it's not like all of the code I wrote back then was bad, it just needs some improving.