This Quest 2 and Quest 3 port was one of the most technically complex projects I have ever undertaken. Not only was it my first time working in VR—which forced me to learn a vast array of new techniques and concepts—but I also had to meet the strict performance requirements of stereoscopic rendering, maintaining a very high framerate and resolution on hardware comparable to a 2020 smartphone. Additionally, we were a small team of two people, and our timeline was limited to just 9 months.

A game area that required extensive optimization work.
The Hardware
The game had to be launched on two VR systems: Quest 2 and Quest 3. Therefore, it had to be optimized to run at 4K and 90FPS on the Quest 2 as an essential requirement. The original game, Metamorphosis, was not particularly optimized, as it was built for substantially more powerful platforms. This led to several issues: thousands of unbatched mesh draw calls causing intolerable RenderThread costs, irregular and unnecessarily high polygon counts, etc.
The game also featured characteristics that made porting to limited hardware like the Quest 2 difficult, such as multiple wide-open spaces that prevented effective scene culling.

Quest 2 uses a Qualcomm Snapdragon XR2 chip.
VR Adaptation
The porting process required more than just graphical adjustments; it was also necessary to introduce VR mechanics into gameplay originally designed for flat games. This involved a radical overhaul of the movement system. We created a climbing system that allowed players to scale almost any surface as in the original game, and an immersive movement system that utilizes hands and allows for local physical movement.

Screenshot of one of the starting areas.
Optimizations
Some of the most critical optimizations we implemented involved an exhaustive review of all materials to minimize per-fragment costs. Given the high resolution of VR rendering, reducing pixel complexity allowed us to save significant frametime.
Furthermore, as mentioned earlier, we faced RenderThread bottlenecks caused by an extremely high number of Draw Calls. To solve this, alongside measures like HLOD generation, we utilized massive instancing for thousands of static meshes throughout the environments (such as the bricks in the image to the right). Through this, we managed to reduce Draw Calls in certain areas from 4,000 down to just 200–400.

This area caused significant Draw Call issues.
Due to various issues with the company that commissioned the project, we had to leave development before its completion. The game was finished by another studio and published with very few additional changes compared to the state in which we left it: there were no specific graphical improvements for Quest 3, VR-specific accessibility options were missing, and some graphical and performance issues remained unresolved. Despite this, I am very proud of our team’s work and the technical level achieved within such a small team and tight schedule.
Below you can watch a brief gameplay video of the game’s first levels:
First minutes of gameplay on Quest 3.