Scalable Distributed Game Server Engine with Hot Swapping in Golang
Go Python Other
Switch branches/tags
Nothing to show
Latest commit b78056a Aug 16, 2017 LinNan use glide to manage packages

GoWorld GoDoc Build Status Go Report Card ApacheLicense

Scalable Distributed Game Server Engine with Hot Reload in Golang

中文资料: 游戏服务器介绍 目录结构说明 使用GoWorld轻松实现分布式聊天服务器 欢迎加入Go服务端开发交流群:662182346


  • Spaces & Entities: manage multiple spaces and entities with AOI support
  • Distributed: increase server capacity by using more machines
  • Hot-Swappable: update game logic by restarting server process


GoWorld Architecture


GoWorld server adopts an entity framework, in which entities represent all players, monsters, NPCs. Entities in the same space can visit each other directly by calling methods or access attributes. Entities in different spaces can call each over using RPC.

A GoWorld server consists of one dispatcher, one or more games and one or more gates. The gates are responsable for handling client connections and receive/send packets from/to clients. The games manages all entities and runs all game logic. The dispatcher is responsable for redirecting packets among games and between games and gates.

The game processes are hot-swappable. We can swap a game by sending SIGUSR1 to the process and restart the process with -restore parameter to bring game back to work but with the latest executive image. This feature enables updating server-side logic or fixing server bugs transparently without significant interference of online players.

Get GoWorld

$ go get

Install dependencies


  1. get glide.exe from and put it to $GOPATH/bin
  2. run install-deps-win.bat

Linux: make install-deps

GoWorld uses Glide to manage packages. Glide

Manage GoWorld using is a script for managing goworld server easily. Running requires python 2.7.x and psutil module. We can use to build, start, stop and reload game servers.

$ pip install psutil

Build Dispatcher & Gate:

$ python build dispatcher gate

Build Example Chatroom Server:

$ python build examples/chatroom_demo

Start Example Chatroom Server: (dispatcher -> game -> gate)

$ python start examples/chatroom_demo

Stop Game Server (gate -> game -> dispatcher):

$ python stop

Reload Game Servers:

$ python reload

Reload will reboot game processes with the current executive while presearving all game server states.

Run Example Chatroom Client

The client for chatroom demo is hosted at The project was created and built in Cocos Creater 1.5. A running server & client demo can also be found at