Deep Dish Dungeon: Three-player online co-op in Unity

Oct 19, 2026|8 Min
Game designMade with Unity
Key art for Deep Dish Dungeon by Behold Studios, Raw Fury. Made with Unity. A figure in a green hood and red tunic holds a torch aloft in a gloomy crypt. A skeleton lurks behind to the figure's left. The game logo text appears on the right.

Learn how Behold Studios’ two-person team built online co-op adventure Deep Dish Dungeon with Netcode for GameObjects, Lobby, Relay, Vivox, and Unity 6.3.

How does a two-person team with no dedicated network engineer build an online co-op game?

Founded in Brasília, Brazil, and now based in Toronto, Canada, Behold Studios has been making games with Unity for more than a decade. Their latest release, Deep Dish Dungeon, is a co-op dungeon crawler for one to three players. For the majority of development, just two people worked on Deep Dish Dungeon: Studio head Saulo Camarotti handled design, programming, business, and marketing, while artist Carolina Baumgarten created all of the visuals, from concept art to 3D models, textures, UI, and more.

Deep Dish Dungeon was hotly anticipated, passing 500,000 Steam wishlists before launch, and it’s available now on Steam and Xbox Game Pass with crossplay. Read the case study to learn how Behold Studios saved time and resources with Unity Services and Unity 6.3, and understand the design decisions that made this ambitious project possible.

Deep Dish Dungeon | Behold Studios | Raw Fury

The results:

  • 500,000+ Steam wishlists before launch, including 65,000 in the first few days after the announcement trailer
  • A playable online multiplayer prototype on day one of development
  • Crossplay between Steam and Xbox with no extra networking code
  • Localization into 11 languages
  • Late-joining players brought up to date on every enemy, item, and object in a shared dungeon
Deep Dish Dungeon launch trailer

Turning multiplayer constraints into strengths

Behold Studios has shipped multiplayer games before, including a Facebook game in 2011 and Out of Space in 2020. For Deep Dish Dungeon, Saulo deliberately kept the team small. He hired Carolina for the project because, as a multidisciplinary artist, she could cover 3D, 2D, logos, illustration, and concept art.

As the only programmer, Saulo knew he'd have to be extra careful about keeping the project in scope. “Multiplayer adds so much more complexity to a project, and usually people have dedicated engineers to work on those issues,” he says. “It’s not just a team of two, it’s just me as a programmer. So I needed to create a game that uses the limitations of multiplayer as a design factor.”

Deep Dish Dungeon | Behold Studios | Raw Fury

This led to a series of deliberate choices that turned these limitations into strengths:

  • Co-op only, no PvP: Because players are friends on the same side, the game can trust each client.
  • Peer-to-peer, with no dedicated server: The player who creates the game acts as host.
  • Tolerant of latency: High ping doesn’t break the experience, so the game doesn’t need complex movement prediction.
  • A deliberately simple look: The game renders at one third of the output resolution for a pixelated style that suited Behold Studios’ skill set and avoided heavy VFX and shader work.

The art style also played a role in setting expectations for the player. “Even the aesthetics help us,” Saulo explains. “You expect some things not to be completely smoothed out.”

Deep Dish Dungeon | Behold Studios | Raw Fury

Designing for multiplayer from the first line of code

Saulo had prior experience with dedicated multiplayer stacks like Photon. Even so, he gave himself a three-month prototype budget to test whether Unity 6’s end-to-end multiplayer stack would hold up.

“When we saw Netcode for GameObjects, we realized it was right up our alley,” he says. “We could use Unity’s core logic – the way we create things and manage our objects – and add a multiplayer layer on top of it.”

He started from the code samples in the Unity Documentation for Lobby and Relay and made rapid progress. “The first line of code was already implementing the multiplayer Lobby and Relay system,” he says. “On the first day, I was already playing a multiplayer game.”

Thinking about multiplayer from the very beginning of development meant there was never a single-player codebase to refactor. Saulo has watched other teams spend anywhere from one to six months adding multiplayer to an existing project.

Go multiplayer with Unity

Deep Dish Dungeon | Behold Studios | Raw Fury

Connecting players with Lobby and Relay

To the player, joining a friend is one click. The host picks a friend from their Steam friends list and sends an invite that carries a Lobby ID. The friend accepts, joins the same lobby (entering a password if the host sets one), and connects to the host through Relay.

The harder part happens behind the scenes. A friend can drop into a session already in progress, so they have to catch up on every networked object in the dungeon, such as which enemies are dead, their remaining hit points, and which items have been picked up. Saulo wanted to avoid building custom scene management. Instead, Deep Dish Dungeon serializes the scene into a save file when a session starts. When someone joins, scene objects are removed and loaded dynamically from the host’s synchronized state. Returning players reappear at their last saved spawn point.

Saulo says the hardest problem was dealing with state, not getting players connected.

“In a single-player game, you know for sure that things are happening in a certain order,” he says. “In multiplayer, you never know exactly what the state of variables and objects will be if someone joins in the middle of something. Objects have to know what to do if they’re called while they’re in the wrong state.”

Deep Dish Dungeon | Behold Studios | Raw Fury

Making voice a mechanic with Vivox

Many co-op players already use tools like Discord for voice chat, but Saulo chose Vivox because he wanted voice to be embedded into the experience of exploring the dungeon itself.

“I wanted the players to feel the dungeon, and the loneliness of the dungeon as well,” he says. “I wanted them to feel that their friends are being left behind.”

Voice in Deep Dish Dungeon is positional and filtered by the space around each player. Around 15 intercom speakers placed throughout the dungeon can be used to broadcast a player’s voice to everyone. This lets one friend stay at camp cooking while another heads out to forage and radios back for supplies. Talking also counts toward the noise that enemies react to, the same as jumping, swinging a torch, or clanking around in armor.

“Now players are thinking about how and when to use that feature,” Saulo says. “It adds a lot of layers to the interaction.”

Add voice and text chat to your game

Deep Dish Dungeon | Behold Studios | Raw Fury

Improving gameplay with Analytics

Deep Dish Dungeon is a nonlinear sandbox with no map, no compass, and several solutions to most obstacles. That made playtesting difficult. “Every time we watched someone play, they behaved in a different way,” Saulo says.

He built a Unity Analytics strategy around that freedom. It tracks how items move through the game, and it logs each hit, combat encounter, and death along with the player’s inventory and whether they had eaten. That last data point turned out to be important.

“In Deep Dish Dungeon, food is not a healing potion. It’s a buff,” he says. “I saw a lot of players exploring with an empty stomach, and these were the players reporting that the game was too hard.”

The discovery led to the creation of a new gameplay system: a hunger meter that drains players HP when they go too long without eating. As a result of this mechanic, players can more easily understand why they need to eat before they delve into the dungeon.

Analytics dashboard for the Deep Dish Dungeon demo

Analytics dashboard for the Deep Dish Dungeon demo

Catching bugs with Diagnostics

With no QA team of their own until their publisher, Raw Fury, came on board, Saulo used Diagnostics to find crashes and errors he couldn’t reproduce on his own machines. It also helped him rank them by frequency and platform.

One report started with players saying they couldn’t attack enemies. “The attack works fine, the enemy works fine – what’s happening?” Saulo says. The Diagnostics data showed a chain of events that started much earlier, with an inventory referencing an item that no longer existed. “We could catch the problem way before.”

Diagnostics dashboard for the Deep Dish Dungeon demo

Testing multiplayer in Unity 6.3

For a solo programmer, setting up multiplayer test sessions can take up a lot of time. Multiplayer Play Mode in Unity 6.3 removed most of that work. Saulo can enter Play Mode and run two or three clients in the Unity Editor at once, either in the full dungeon or in dedicated test scenes.

“I can test anywhere in the game with two or three players at the press of a button,” he says. “And running the local game is pretty much the same as running through Relay and Lobby. It’s the same code.”

Unity 6.3’s improved stability mattered just as much. Saulo remembers crashes nearly every day in older versions. After upgrading to Unity 2023 and then Unity 6, he recalls, “It took me a while to realize it had been over a month since I had a crash.”

Translating with the Localization package

Behold Studios’ previous games relied on third-party localization plug-ins, which didn’t always keep up with new Unity versions. This time the team used Unity 6’s Localization package. It provides string tables that sync with Google Sheets and a font fallback chain that tries a second font when the first can’t render a language. Deep Dish Dungeon launches in 11 languages: English, Brazilian Portuguese, French, German, Spanish, Latin American Spanish, Polish, Russian, Japanese, and Simplified and Traditional Chinese.

Saulo’s advice here is to plan for long translations as soon as possible. “It’s very wise to start thinking about localization early and create a UI that already accounts for it,” he says.

Deep Dish Dungeon | Behold Studios | Raw Fury

Parting advice

For small teams considering online multiplayer, Saulo’s main advice is about design, not technology.

“Create a game where you can trust the client. Create a game that’s co-op. Create a game where latency isn’t an issue – if you have 500 milliseconds of latency, the game still works because of the design,” he says. “Design-wise and production-wise, this is more important than the actual technology you’re going to use.”

Try new features in the Unity 6.7 beta