Developing Multiplayer Games in Godot
Episode
46 min
Read time
2 min
Topics
Leadership, Design & UX, Software Development
AI-Generated Summary
Key Takeaways
- ✓Physics determinism constraint: Non-deterministic physics in Godot forces a host-authoritative model where one machine simulates all physics objects and broadcasts results to every client. In Domekeeper, carried resources are physics objects, meaning with 8 players each carrying 4 resources, the host must continuously transmit data for 32 objects simultaneously, creating a hard practical player cap.
- ✓Bandwidth optimization via bit-packing: Naive resource synchronization sends full data structures per frame. Domekeeper's team reduced each resource packet to two 64-bit integers by encoding position, rotation, and carrier identity at the individual bit level — using 6-bit integers where full integers are unnecessary. This compression made 8-player sessions viable without requiring dedicated server infrastructure.
- ✓Client-trust model for indie multiplayer: Implementing server-authoritative anti-cheat requires dedicated servers, ballooning costs for premium indie games. Domekeeper deliberately trusts client-reported hit detection, accepting occasional inconsistency. This decision only works because the game uses friends-only lobbies with no public matchmaking, eliminating the adversarial player dynamic that makes server authority necessary.
- ✓Monster synchronization via seeded RNG: Rather than syncing monster positions every frame, Domekeeper sends a unique ID with each monster spawn, which seeds an identical random number generator on every client. Monster behavior becomes locally deterministic from spawn, requiring only event-based correction packets when clients drift out of sync, dramatically reducing per-frame bandwidth requirements for combat phases.
- ✓Network state manager per client: Godot's high-level networking requires scene tree objects to exist on all clients before RPCs can target them, surfacing race conditions that naive packet broadcasting hides. Domekeeper implements a per-client network state tracker so systems only transmit packets to clients in the correct loading or spawning state, preventing the ordering bugs that multiplayer introduces into single-player code.
What It Covers
Renee Haberman (Bip n Bits) and Chris Raidenor (KAR Games) detail the technical and design challenges of retrofitting online multiplayer into Domekeeper, a Godot-built roguelike tower defense game, covering network architecture decisions, bandwidth optimization, physics synchronization, and the economics of peer-to-peer versus dedicated server infrastructure.
Key Questions Answered
- •Physics determinism constraint: Non-deterministic physics in Godot forces a host-authoritative model where one machine simulates all physics objects and broadcasts results to every client. In Domekeeper, carried resources are physics objects, meaning with 8 players each carrying 4 resources, the host must continuously transmit data for 32 objects simultaneously, creating a hard practical player cap.
- •Bandwidth optimization via bit-packing: Naive resource synchronization sends full data structures per frame. Domekeeper's team reduced each resource packet to two 64-bit integers by encoding position, rotation, and carrier identity at the individual bit level — using 6-bit integers where full integers are unnecessary. This compression made 8-player sessions viable without requiring dedicated server infrastructure.
- •Client-trust model for indie multiplayer: Implementing server-authoritative anti-cheat requires dedicated servers, ballooning costs for premium indie games. Domekeeper deliberately trusts client-reported hit detection, accepting occasional inconsistency. This decision only works because the game uses friends-only lobbies with no public matchmaking, eliminating the adversarial player dynamic that makes server authority necessary.
- •Monster synchronization via seeded RNG: Rather than syncing monster positions every frame, Domekeeper sends a unique ID with each monster spawn, which seeds an identical random number generator on every client. Monster behavior becomes locally deterministic from spawn, requiring only event-based correction packets when clients drift out of sync, dramatically reducing per-frame bandwidth requirements for combat phases.
- •Network state manager per client: Godot's high-level networking requires scene tree objects to exist on all clients before RPCs can target them, surfacing race conditions that naive packet broadcasting hides. Domekeeper implements a per-client network state tracker so systems only transmit packets to clients in the correct loading or spawning state, preventing the ordering bugs that multiplayer introduces into single-player code.
Notable Moment
Renee explains that mixing local split-screen co-op with online multiplayer — allowing two couch players to share one connection while playing alongside separate online players — was likely a decision he would never repeat, as it multiplied the possible game states and introduced a disproportionate volume of edge-case bugs throughout development.
You just read a 3-minute summary of a 43-minute episode.
Get Software Engineering Daily summarized like this every Monday — plus up to 2 more podcasts, free.
Pick Your Podcasts — FreeKeep Reading
More from Software Engineering Daily
NanoClaw and the Rise of Personal AI Agents
Jul 21 · 63 min
The Founders Podcast
#426 How Obsession Built Christopher Nolan
Jul 26
More from Software Engineering Daily
Agentic DevOps at AWS
Jul 16 · 49 min
All-In with Chamath, Jason, Sacks & Friedberg
GameStop CEO Ryan Cohen's $56B Plan to Take Over eBay
Jun 23
Books, tools, and gear mentioned in this episode
SignalCast may earn commission on purchases via these links.
Tools
“Domekeeper, a Godot-built roguelike tower defense game”
company
“Renee Haberman (Bip n Bits) and Chris Raidenor (KAR Games) detail the technical and design challenges”
“Chris Raidenor (KAR Games) detail the technical and design challenges of retrofitting online multiplayer into Domekeeper”
More from Software Engineering Daily
We summarize every new episode. Want them in your inbox?
NanoClaw and the Rise of Personal AI Agents
Agentic DevOps at AWS
AURA and Open-Source Agents for Production Operations
Eric Ries on Why Good Companies Go Bad
SED News: Restricted Models, IDE Wars, and the DeepMind Mafia
Similar Episodes
Related episodes from other podcasts
The Founders Podcast
Jul 26
#426 How Obsession Built Christopher Nolan
All-In with Chamath, Jason, Sacks & Friedberg
Jun 23
GameStop CEO Ryan Cohen's $56B Plan to Take Over eBay
My First Million
May 13
How to manufacture a billionaire childhood
The School of Greatness
May 8
How to Build a Million-Dollar Portfolio Starting From Nothing | Graham Stephan
This Week in Startups
Apr 15
This 22-Year-Old Built TikTok for Mobile Games, and It’s Growing Fast | E2276
Explore Related Topics
This podcast is featured in Best Cybersecurity Podcasts (2026) — ranked and reviewed with AI summaries.
Read this week's Software Engineering Podcast Insights — cross-podcast analysis updated weekly.
You're clearly into Software Engineering Daily.
Every Monday, we deliver AI summaries of the latest episodes from Software Engineering Daily and 192+ other podcasts. Free for one show.
Start My Monday DigestNo credit card · Unsubscribe anytime