ancatrusca

ancatrusca

BEAM There, Done That with Ellyse Sedeno - Why Multiplayer Games Are Just Distributed Systems

This podcast is relevant particularly for the architectural discussion around how OTP primitives map to the domain of multiplayer games.
Ellyse Sedeno has been working at the intersection of distributed systems and game backends since the early days of MMORPGs. Her starting point is that multiplayer games and telecom systems face structurally similar problems: millions of concurrent sessions, soft real-time requirements, failure isolation between subsystems, and distributed state that has to be consistent without being globally locked.
The episode covers how the traditional game server architecture - threaded Java or C++ with explicit lock management - fails under load in ways that are both predictable (deadlocks are non-deterministic and nearly impossible to reproduce) and expensive to fix after the fact.
The alternative she describes maps cleanly onto OTP:
A presence server, chat server, world server, and combat server run as separate supervised processes. Each player and mob has its own process. Movement events arrive in a mailbox, are processed without locks (there is no shared mutable state to lock), and changes are broadcast. When the world server crashes, it restarts under supervision without affecting chat. The architecture makes failure modes visible and recoverable rather than total.
One observation worth discussing from an Erlang perspective: she makes the case that the call vs cast distinction matters significantly in game server design. Circular dependencies between server processes using synchronous calls are the actor model’s equivalent of a threading deadlock - and they’re much easier to reason about structurally when your dependency graph is explicit in your process topology.
She also discusses using player behavior analytics as an observability layer - aggregate deltas in chat volume, level completion rates, and movement patterns as leading indicators of server-side failures. At scale, player behavior is a higher signal-to-noise instrument than server logs that have become too noisy to read.
The project is open source on Codeberg as game_server.

Most Liked

ellyxir

ellyxir

hey there, here’s the repository, feel free to ping me if you have any comments or questions! ellyxir/gameserver - Codeberg.org

kxnis

kxnis

Awesome talk. I woke up today thinking of how to use elixir in games and you just published it. Thats amazing. Btw, what is the repo? Couldn’t find it at codeberg

Where Next?

Popular in Podcasts Top

brainlid
In episode 76 of Thinking Elixir, we talk with host David Bernheisel about his recently released Safe Ecto Migrations guide. Intended as ...
New
brainlid
Episode 185 of Thinking Elixir. Dive into the world of structured LLM prompting with our latest guest who shares insights on their innova...
New
brainlid
In episode 62 of Thinking Elixir, we talk with Chris McCord about his recent announcement that he’s moved to work at Fly.io! We cover wha...
New
bbense
Well, the only elixir specific thing about this is the site is written in Phoenix, but an important podcast for all open source advocates.
New
brainlid
In episode 66 of Thinking Elixir, we talk with Kai Wern Choon about his experience tracing performance problems in production. We talk ab...
New
brainlid
We talk with Andrea Leopardi, Elixir core team member, author, and recent Protohacker celebrity! We wanted to learn more about his dbg wo...
New
wolf4earth
Ivan Rublev is the author of the open source library, Domo, which provides type validations for Elixir applications. He discusses the typ...
New
brainlid
We take a deeper dive with Nathan Long into IOLists in Elixir. We cover what they are, how they work, the power they have when concatenat...
New
brainlid
Episode 181 of Thinking Elixir. In this week’s episode, we ignite the exciting world of Elixir with Chris McCord’s announcement of FLAME,...
New
brainlid
We talk with Peter Ullrich about his experience sending SMS messages from a Raspberry Pi Zero using Nerves. We cover what went well, what...
New

Other popular topics Top

danschultzer
None of the current solutions worked well for me, so I went ahead and built a user management system from scratch. This project took far...
548 29703 241
New
aadeshere1
I have a another noob question about loop. Since elixir is immutable, while loop is not directly possible. total = 10 while total != 0 ...
New
gshaw
What is the idiomatic way of matching for not nil in Elixir? E.g., First way: defp halt_if_not_signed_in(conn, signed_in_account) when...
New
Patoshizzle
After calling mix ecto.create I get this error: 17:00:32.162 [error] GenServer #PID<0.412.0> terminating ** (Postgrex.Error) FATAL...
New
SoCreat
i’m a new one to elixir which editor can i use vs code? or atom? Thanks! :smiley:
New
Emily
I have VueJS GUIs with the project generated using Webpack. I have Elixir modules that will need to be used by the VueJS GUIs. I forese...
New
sergio_101
I am VERY much an elixir newbie. I have taken one elixir course and one phoenix course on Udemy. During that course, I saw the instructor...
New
klo
Got a question about when to concat vs. prepending items to list then reversing to achieve appending. So i know lists boil down to [1 | ...
New
JakeBecker
TL;DR: I’ve just released an implementation of Microsoft’s IDE-independent Language Server Protocol for Elixir. It adds language support ...
1144 54250 245
New
dogweather
I wrote this comment on r/haskell, and it’s not popular there. :wink: But I think I’m on to something… Haskell reminds me of Java, and e...
New

We're in Beta

About us Mission Statement