finds.dev← search

// the find

xiaonanln/goworld

★ 2,719 · Go · Apache-2.0 · updated Nov 2025

Scalable Distributed Game Server Engine with Hot Swapping in Golang

GoWorld is a distributed game server framework for Go built around an entity-component model, targeting MMO-style games that need player/monster/NPC entities spread across multiple game processes. It handles the hard parts of distributed game servers: cross-process entity RPC, AOI (area of interest) for spatial queries, and hot-swapping game logic without kicking players. Audience is Go developers building multiplayer games who don't want to wire up the distributed messaging layer themselves.

Hot-swap via SIGHUP + restore is genuinely useful — you can push a bug fix to a live game process without a full restart, and the state migration mechanism is baked in rather than bolted on. The three-tier architecture (gate / game / dispatcher) is a sound separation: gates handle raw TCP/KCP/WebSocket connections so game processes never touch network I/O directly, which makes game logic easier to test. AOI is implemented at the framework level so you don't have to write your own spatial partitioning to broadcast movement packets efficiently. Multiple transport protocols (TCP, KCP, WebSocket) are supported out of the box, which matters when you need both browser clients and native clients.

Hot-reload explicitly does not work on Windows, which is a significant gap documented casually in the README with no workaround offered. Storage backends are MongoDB or Redis only — no SQL option — which locks you into a specific ops stack before you've written a line of game logic. The last meaningful commit activity is years old despite a Nov 2025 push; the tutorials linked are on Chinese-language platforms and the community QQ group is the primary support channel, so debugging obscure issues without Chinese is painful. The dispatcher is a single point of failure — the architecture diagram shows one dispatcher node, and there's no obvious path to a HA dispatcher setup documented anywhere.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →