Gopher Game Server provides a flexible and diverse set of tools that greatly ease developments of any type of online multiplayer game, or real-time application. GGS does all the heavy lifting for you, ensuring you never need to worry about synchronizing or data type conversions.
Moreover, Gopher has a built-in, fully customizable SQL client authentication mechanism that creates and manages users' accounts for you. It even ties in a friending tool, so users can befriend and invite one another to groups, check each other's status, and more. All components are easily configurable and customizable for any specific project's needs.
- Super easy APIs for server, database, and client coding
- Chat, private messaging, and voice chat
- Customizable client authentication (*1)
- Built-in friending mechanism (*1)
- Supports multiple connections on the same User
- Server saves state on shut-down and restores on reboot (*2)
(*1) A MySQL (or similar SQL) database is required for the authentication/friending feature, but is an optional (like most) feature that can be enabled or disabled to use your own implementations.
(*2) When updating and restarting your server, you might need to be able to recover any rooms that were in the middle of a game. This enables you to do so with minimal effort.
- Distributed load balancer and server coordinator
- Distributed server broadcasts
- GUI for administrating and monitoring servers
- Integration with GopherDB when stable (*1)
(*1) MySQL isn't very scalable on it's own, and the SQL implementation for storing friend info is probably not the most efficient. Hence, it is recommended to put the friends table into a separate database cluster. GopherDB, on the other hand, is a very promising database project that will greatly increase server efficiency, and could possibly even outperform MySQL overall. It has a built-in authentication table type, which takes a substantial load off the game servers, and further secures your users' private information. It also supports nested values which are deep-validated through table schemas, so you can store complex information using a wide variety of data types and rules. You can follow the project and get more info with the link above!
- JavaScript: GopherClientJS
If you want to make a client API in an unsupported language and want to know where to start and/or have any questions, feel free to open a new issue!
Gopher Game Server requires at least Go v1.8+ (and MySQL v5.7+ for the authentication and friending features).
First, install the dependencies:
go get github.com/gorilla/websocket
go get github.com/go-sql-driver/mysql
go get golang.org/x/crypto/bcrypt
Then install the server:
go get github.com/hewiefreeman/GopherGameServer
Package gopher - Main server package for startup and settings
Package core - Package for all User and Room functionality
Package actions - Package for making custom client actions
Package database - Package for customizing your database
Contributions are open and welcomed! Help is needed for everything from documentation, cleaning up code, performance enhancements, client APIs and more. Don't forget to show your support with a ⭐!
If you want to make a client API in an unsupported language and want to know where to start and/or have any questions, feel free to open a new issue!
Please read the following articles before submitting any contributions or filing an Issue:
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at:
http://www.apache.org/licenses/LICENSE-2.0