Skip to main content
Software Engineering Daily

Developing Multiplayer Games in Godot

46 min episode · 2 min read
·
Renee Haberman,Chris Raidenor

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.

Know someone who'd find this useful?

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 — Free

Keep Reading

Books, tools, and gear mentioned in this episode

SignalCast may earn commission on purchases via these links. As an Amazon Associate, SignalCast earns from qualifying purchases.

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?

Similar Episodes

Related episodes from other podcasts

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 up to 3 shows.

Start My Monday Digest

No credit card · Unsubscribe anytime