Skip to content

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.

Timeline
Jan 2026 – Mar 2026
Team
UC Irvine
Role
3D ModelingEnvironment DesignLighting
Location
Irvine, CA
Submersible exploring a lit cavern

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

Over-the-shoulder view of the submersible

Introduction

Designing for VR — grips, triggers, buttons

Early submersible cockpit model

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.

Early submersible exteriorEarly submersible controls

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.

Redesigned hull, blockoutRedesigned hull, refined
Finished submersible modelFinished submersible close-up

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.

Interior renderClose-up renderPilot POV render

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.

Color progression across the level
Level design overview
Exploring a narrowing tunnelExploring the pit in low light

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!).

Collider streaming, top view (all colliders)
Collider streaming, top view (streamed)
All collidersStreamed
Collider streaming, player view (all colliders)
Collider streaming, player view (streamed)
All collidersStreamed

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

Submersible polycount reduction (before)
Submersible polycount reduction (optimized)
BeforeOptimized
Environment lighting pass

Post-mission debrief

'Wow' with what you have

Pit mazePit maze, deeperPit maze, exit

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.

Also check out