Zenith: The Last City
How does a small, remote team create an MMO in VR? With a flexible development platform, multithreaded programming, robust DevOps tools, and the support of an active community, Ramen VR launched a well-optimized, multiplatform game that’s delighting players and ushering in a new era of gaming.
Creating a successful, high-performance VR MMO for all major VR platforms
Linux, PlayStation VR, Quest, Quest 2, Rift, SteamVR
Making an ambitious bet
Getting buy-in on a bold vision
Making Zenith took a leap of faith: Tsen and Frazier funded early development out of pocket. “Our studio name comes from all we could afford to eat at the time,” jokes Tsen.
An angel investor changed everything. Soon, Ramen VR was enrolled in the Y Combinator accelerator program, and raised $280K in 45 days with a record-breaking Kickstarter campaign. Backers were impressed by the project’s scope and the studio’s determination to make it happen.
“Nobody who’s ever built an MMO before would try to do this,” says Tsen. “Startup, VR, MMO, cross-platform – it’s gamedev on hard mode!”
Finding the right tools
Tsen and Frazier had previously collaborated on an award-winning Unity project – a VR MOBA, Conjure Strike – and were confident that they could tackle something even more ambitious.
“We knew how hard it would be to build a game of this scale in VR, but we also thought there was a gap between how hard people thought it was and how hard it actually was,” says Tsen. “That gap was platforms and tools like Unity, which enable content creation on a much larger scale with a much smaller team.”
Ramen VR launched Zenith with a team of 15, but they now have 22 core team members. When selecting new development tools, they make sure they’re customizable, easily integrated, work well with existing systems, and are approachable for technical and non-technical contributors.
Building a foundation with DOTS
As systems-based games, MMOs require strong, scalable technical foundations. Early in development, Ramen VR organized Zenith’s systems using MonoBehaviors, but running logic hundreds of times across hundreds of identical GameObjects was inefficient. They leveraged Unity’s Entity Component System (ECS) framework, a key pillar of the Data-Oriented Technology Stack (DOTS), to avoid the drawbacks of object-oriented programming.
“An MMO is a great application for ECS,” Frazier notes. “Zenith requires thousands of Entities to coexist at the same time, and ECS allows us to run at scale.”
Choosing the right workflows
In the new workflow, every “actor” GameObject (players, mobs, collectibles) has a corresponding ECS Entity. The ECS runs through GameObjects and checks for relevant tags, triggering logic whenever they’re found.
“It was nice to be able to pick the workflow appropriate to the situation. We could have done pure Objects or pure Entities – but I don’t think you should have to choose,” says Frazier.
Avoiding rate limits
ECS also helped with infrastructural challenges. Over 120,000 players signed up to alpha test Zenith, and Ramen VR underestimated the strain this would put on their servers. When high numbers of players logged off, servers exceeded storage caps and players lost save data. To solve this, the team created an ECS tag to track quest progress. “Our ECS system checks for tags, and when it picks one up, it’ll put it into a queue, dequeue it every X seconds, and write it to external storage,” explains Frazier.
Optimizing visuals across devices
Zenith is a multiplatform MMO, so optimizing graphics for all major VR devices was crucial to ensure the game would reach as many players as possible. Creating VR games means drawing twice as many GameObjects, at higher resolution, at higher frame rates, to ensure good immersion and reduce VR sickness. So they opted for the Universal Render Pipeline (URP).
“The Universal Render Pipeline was the best choice for us because we were shipping on PC, Android (Oculus Quest) and PSVR,” says Frazier. “URP allowed us to build for all VR platforms.”
Reducing rendering costs
With URP’s Single Pass Instanced rendering, Ramen VR could render visuals for both eyes in one place, saving on CPU and GPU time and improving performance. Customizability was also a plus. “We edited the standard shaders (Simple Lit, Unlit) to respond to changes from our day-night cycle – making things more orange or red at sunset, adding a blue tint at night, and so on,” says Frazier.
The studio is happy with what they’ve achieved with URP, but hopes to push Zenith’s visuals further in a future release. “A lot of our original quality was sacrificed due to hardware limitations – mostly memory, but also GPU time,” says Frazier. “Now we’re trying to take advantage of things like texture arrays to regain some of that lost fidelity.”
Managing project files
To ensure they can deliver new content continuously and on schedule, Ramen VR uses Unity Plastic SCM version control to manage the project. “It’s allowed us to improve our productivity, improve our workflows, and work collaboratively much more easily,” says programmer Jordan J.
Plastic SCM has dual workflows for artists and engineers, and teammates can choose to work centralized or distributed while committing to the same repository. “The centralized flow means fewer accidents and mismatches of local versus remote than you see with something like Git,” says Frazier. Ramen VR has never lost project data since adopting Plastic SCM.
Bringing players together
Smart ECS implementation and visual optimization with URP means players can adventure together and explore Zenith’s massive world without experiencing slowdown or losing progress. And a scalable, customizable tech stack means Ramen VR is set up to continue adding new content to Zenith for years to come.