A scalable game server skeleton implemented in Go with hub-based architecture for multiplayer games.
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.
Game developers and backend engineers building multiplayer online games who need a production-ready server framework with Go's performance and concurrency features.
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.
A Game Server Skeleton in golang.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Clearly separates Game Servers, Hub, and Stats Server roles, allowing independent scaling and restart of GS instances as stated in the deployment section.
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.
Includes a dedicated Stats Server for collecting player behavior data without impacting game performance, enabling easy integration of analytics for post-analysis.
GS to HUB/SS calls are synchronous with ACK confirmation, providing consistent and reliable communication for critical operations, as emphasized in the communication principles.
HUB restart requires all Game Servers to restart, causing potential downtime and complicating high-availability deployments, as noted in the server state consistency section.
Installation prerequisites include specific tools like graphviz and gawk, plus MongoDB dependency, adding overhead for teams not already using these technologies.
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.