-
-
Fairly happy with this view, runs steady 120fps, multiple fog effects to help convey distance, 5000 trees rendering here.
-
Nights in DIRT are actually dark! But don't worry, we have dynamic lights! The stars are made with geometry for a crisp looking night sky.
-
Example of one of many types of vegetation models players will find in game that can be used for crafting, farming, etc.
-
Future player built housing. This model is actually separate wall, floor, and roof pieces that will be craftable and arrangeable by players.
-
Preview of the map showing the variety of terrain. 16km x 16km
-
Gabbing over the shoulder, the backpack will open the inventory system one day.
-
Some vertex color based tool models we hope to replace our developer art with!
-
Finally getting the terrain to render near the beginning of the project! Yikes, highlighter colors...
Inspiration
An obsession with proving that massive social worlds can be rendered at 120fps on the Quest. Inspired by games like Runescape, Wurm Online, Vintage Story and Minecraft.
What it does
Thousand(s) of players sharing the same 16km island that can be terraformed, mined, and farmed together in real-time. Every change to the world is shared! Build together and create farms, towns, villages, and entire kingdoms! Players can see and travel the entire continent to discover what others have created, or stand on a mountain top with their closest friends and soak it all in at 120fps.
How we built it
We have a multiplayer title, DUST, already on the Meta store with 1000 DAU which we've optimized to run at 120fps. That knowledge was vital for building DIRT. Instead of one of the three big game engines, we used Zig and Raylib and old school optimizations like vertex colored meshes and a highly optimized terrain server back end. In the name of performance we coded by hand what is traditionally done via inspectors, scene views, and external asset editors. This kept our file size extremely small and our frame rates extremely high!
Challenges we ran into
Building a performant terrain system that's terraformable but also handles massive view distances. And being one of the first Raylib VR games on Quest 3, and using a low level (and highly turbulent) programming language like Zig, meant we had little game engine guardrails or well trodden paths to follow(or to get in our way)!
Accomplishments that we're proud of
You can stand on a mountain top and look for miles in every direction, see thousands of trees, watch the stars come out at night, all at 120fps. When you dig a hole, chop down a tree, mine a tunnel, or build a house, your change persists for every other player in the world to see. Implementing OpenAL means we have spatial HRTF audio and can do proximity voicechat. Overall, being able to apply our knowledge from building and optimizing DUST over the years feels great!
What we learned
Building a cross platform VR game from scratch with Zig and Raylib is challenging, but worth it. Every draw call counts on a mobile GPU, and as helpful as game engines like Unity and Unreal are, they can hide optimization pitfalls from developers.
What's next for DIRT: Virtual Construct
More VR-native crafting with hand interactions, player built villages and housing, and expanded social features including proximity voice chat and collaborative building tools. We want hand-tracking to be a valid way to play the game so controller batteries dying doesn't take a player out of the headset! DIRT may be the first true social sandbox "MMO" that Meta Quest players have ever experienced, and we see it as the perfect chill accompaniment for our competitive multiplayer game DUST.
Built With
- digitalocean
- lmdb
- openal
- openxr
- raylib
- zig






Log in or sign up for Devpost to join the conversation.