Environment Artist on
Charybdis
Multiplayer VR game built with Unity URP
The Game
Charybdis is a competitive multiplayer game where you race submersibles to capture the treasure and escape.

The MissionBuild a performant, online VR game for Meta Quest 3.

Introduction
Designing for VR — grips, triggers, buttons

Since players would be seated for the experience, I knew I wanted to use buttons and levers to simulate real interactions with the grips, triggers, and buttons on hand controllers.


However, during playtesting it was noted that real deep-sea conditions would crush this design's angles under the immense pressure. This led to a complete redesign, this time using the NEMO submersible as a reference for real, physics-based geometries.




Wanting to use 2K textures and normal bump to give detail to "grabbable" materials, I knew this would hurt performance. To offset these costs, I settled on baking AO, opacity, and roughness into the diffuse and metallic channels, reducing the total number of textures overall.



Dynamic environments
Progression through light, color, and space
Aiming for 5–8 minute play sessions, we wanted to give players enough time to learn controls before sending them into the pit, literally.
By leaving spawn areas wide open and well-lit, players were free to drive recklessly before entering the real challenge. As light, color, and space constrict, players are forced to rely on the LiDAR and principal axes (yaw, pitch, roll) to navigate tight spaces, requiring mastery of controls in the process.




Optimizing for VR
Fake it 'till you make it
The LiDAR mechanic you see above was one of our most expensive systems, using particle collision to map out the terrain in low-light scenarios. Resulting in heavy CPU overhead, we needed a system to not only cull mesh renderers, but colliders as well, leading to the collider streaming you see below.
By only spawning colliders near the player at runtime, we were able to avoid massive overhead while keeping a vital mechanic for late-game navigation. A bonus was that we could still use Unity's Terrain system for level building, expanding the use of "Trees" at the individual level (very useful for open-world games!).




Optimizing at each turn, we then cut polycounts in half through decimation, use of LODs, and volumetric fakes. Our motto — every frame counts.



Post-mission debrief
'Wow' with what you have



As my first time developing in VR, I learned to enjoy the limitations of URP, constantly challenging you to find new solutions to things taken for granted in HDRP and Unreal.
Prioritizing optimizations at every step of the way also directed our team to produce better designs, scalable solutions, and aim for a more stable product in general. While I first thought VR was going to be frustrating, I now believe it's a platform worth exploring in the future.

