Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Go
  3. gonet

gonet

MITGo

A scalable game server skeleton implemented in Go with hub-based architecture for multiplayer games.

GitHubGitHub
1.3k stars290 forks0 contributors

What is gonet?

gonet is a game server skeleton implemented in Go that provides a distributed architecture for building multiplayer game backends. It separates concerns into Game Servers (handling player logic), a Hub Server (managing global state and message forwarding), and a Stats Server (collecting analytics data). The framework solves the problem of creating scalable, maintainable game servers with built-in persistence and communication patterns.

Target Audience

Game developers and backend engineers building multiplayer online games who need a production-ready server framework with Go's performance and concurrency features.

Value Proposition

Developers choose gonet for its clean separation of server roles, built-in message persistence, and scalable architecture that allows independent restarting of game servers while maintaining system consistency.

Overview

A Game Server Skeleton in golang.

Use Cases

Best For

  • Building scalable multiplayer game backends in Go
  • Implementing hub-and-spoke server architectures for games
  • Developing games requiring persistent messaging when players are offline
  • Creating game servers with separate analytics collection
  • Projects needing independent restart capability for game server nodes
  • Teams wanting a production-tested game server skeleton to build upon

Not Ideal For

  • Real-time games requiring low-latency, fully asynchronous communication to avoid ACK delays
  • Teams seeking a turnkey solution with built-in matchmaking, lobbies, or social features
  • Developers needing serverless or cloud-native architectures with automatic scaling and no single points of failure
  • Projects where MongoDB is not preferred or where database flexibility is critical

Pros & Cons

Pros

Distributed Architecture Separation

Clearly separates Game Servers, Hub, and Stats Server roles, allowing independent scaling and restart of GS instances as stated in the deployment section.

Persistent Offline Messaging

Unicast messages are stored in MongoDB when players are offline and delivered on login, ensuring reliable communication without message loss, as per the communication principles.

Built-in Analytics Collection

Includes a dedicated Stats Server for collecting player behavior data without impacting game performance, enabling easy integration of analytics for post-analysis.

Synchronous Reliability

GS to HUB/SS calls are synchronous with ACK confirmation, providing consistent and reliable communication for critical operations, as emphasized in the communication principles.

Cons

HUB Restart Dependency

HUB restart requires all Game Servers to restart, causing potential downtime and complicating high-availability deployments, as noted in the server state consistency section.

Complex Initial Setup

Installation prerequisites include specific tools like graphviz and gawk, plus MongoDB dependency, adding overhead for teams not already using these technologies.

Outdated Version Risk

The README indicates this version (gonet1) is no longer maintained, with a recommendation to move to gonet2, risking lack of updates, security patches, and community support.

Frequently Asked Questions

Quick Stats

Stars1,287
Forks290
Contributors0
Open Issues0
Last commit1 year ago
CreatedSince 2013

Tags

#multiplayer#game-server#distributed-systems#mongodb#golang#server-architecture#scalability#message-routing#real-time#backend-framework

Built With

G
Go
M
MongoDB
G
GraphViz
g
gawk

Included in

Go169.1k
Auto-fetched 9 hours ago

Related Projects

EbitengineEbitengine

A dead simple 2D game engine for Go

Stars13,237
Forks765
Last commit17 hours ago
LeafLeaf

A game server framework in Go (golang)

Stars5,512
Forks1,329
Last commit2 years ago
nanonano

Lightweight, facility, high performance golang based game server framework

Stars3,200
Forks463
Last commit3 months ago
G3NG3N

Go 3D Game Engine (http://g3n.rocks)

Stars3,098
Forks313
Last commit2 months ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub