Throughout my time building the GPU rigid body engine in my last article, I’d been doing Quest 2 builds to see how far I was from running acceptably on there.
The Quest 2 is a funny little device with deliberately underclocked CPU cores. So if you want to make a flashy demo, your best best is to do as much on the GPU as you can. Still, that little Adreno 650 is not a desktop GPU, so there are limits.
Scaling it Down #
After I couldn’t get the fidelity I wanted on my full rigid body engine, I decided to scale back down to an earlier prototype I’d written using just spheres, and use regular particle XPBD to save on cycles and bandwidth. I ended up building a quick little demo which ran beautifully even on the Quest 2 and was a delight to play with:
You might think all those balls flying around would be a bit overwhelming, but I’ve given this demo to people of a variety of age groups who don’t play VR (or computer games in general) and they’ve all found it delightful.
I was pretty proud of getting something so dynamic and scaled up running at 90FPS on the Quest!
The Joy of Building #
So if I’ve given it as a demo and people loved it, why isn’t this a shipped product? By the middle of 2022, I was facing a conflict. On the one hand, I “needed” to use an engine like Unity in order to ship a product before my savings ran out, on the other hand using Unity was very mentally draining.
Plainly, I wasn’t having fun. I love building things, but once I’d finished my shaders and had to move into the rest of the engine I quickly lost my motivation to continue working on the project. It was clear that as long as I was in Unity, most of the work of solo dev was going to be things I didn’t enjoy.
After a trip back home to visit family, and another briefly flirting with the idea of going back to Defence work, I began the process of sorting out supervisors and funding for a PhD.
But I still had a few months to spare…