I hope that what I learned while working on ROAR will help you, or inspire you.
I try to archive my side projects by documenting their development.
It's hard and time-consuming, but also rewarding.
I do it because I like sharing what I learn.
And also because I know that my memory is not as good as it used to be.
This book is written in form of bullet points.
It's a trick I used to actually finish writing it.
I progressively added more and more detail to a very coarse-grained outline.
I realize that bullet points aren't optimal for reading.
Thanks for sticking around.
Background
In November 2019 Michał Budzyński put together a prototype of a simple scene written in Goodluck running in VR. It was just a few spheres, plus two spheres for the hands, but when I first saw it, I was blown away.
The scene came to life like I had never experienced it before.
There was something mesmerizing about the fact that it was running code that we had written ourselves. It was just a simple albedo diffuse shader, but I could now walk around that cube and see exactly how every fragment was lit!
It was right then when I decided to buy an Oculus Quest myself, and try to develop a game for it.
I also started experimenting with different gameplay ideas.
One was called Humur and it was a human-Tetris game in which huge walls with holes in them would come at you from different sides, and you had to try to fit your hands and the head into the holes.
I got very dizzy when I first tested it and decided to look for other ideas.
I then created a simple demo called Hej, in which your goal was to high five an endless stream of flying hands.
Lastly, together with Michał, we started working on a drone simulator called Latam (Polish for I'm flying).
This effort didn't go too far, but it was another stepping stone in learning the WebXR API, the 6DoF controls, and the perception of space in virtual reality.
All these experiments were written using Goodluck, our custom game template with an ECS architecture and a WebGL rendering pipeline. Goodluck is focused on simplicity, hackability—and tiny code size.
These experiments made me realize that it was possible to develop a WebXR experience in 13 KB.
I decided to participate in js13kGames in the WebXR category and submit a game which doesn't use any of the allowed third-party libraries.