All Projects → hewiefreeman → Gophergameserver

hewiefreeman / Gophergameserver

Licence: apache-2.0
🏆 Feature packed, easy-to-use game server API for Go back-ends and Javascript clients. Tutorials and examples included!

Programming Languages

javascript
184084 projects - #8 most used programming language
go
31211 projects - #10 most used programming language
golang
3204 projects

Projects that are alternatives of or similar to Gophergameserver

Jstp
Fast RPC for browser and Node.js based on TCP, WebSocket, and MDSF
Stars: ✭ 132 (+116.39%)
Mutual labels:  api, json, server, websocket
Horaires Ratp Api
Webservice pour les horaires et trafic RATP en temps réel
Stars: ✭ 232 (+280.33%)
Mutual labels:  api, json, real-time
Actionhero
Actionhero is a realtime multi-transport nodejs API Server with integrated cluster capabilities and delayed tasks
Stars: ✭ 2,280 (+3637.7%)
Mutual labels:  api, server, websocket
Ejabberd
Robust, Ubiquitous and Massively Scalable Messaging Platform (XMPP, MQTT, SIP Server)
Stars: ✭ 5,077 (+8222.95%)
Mutual labels:  chat, voip, server
Rhubarb
A WebSocket library optimized for multiplayer JS games, works on WebWorkers with binary data.
Stars: ✭ 167 (+173.77%)
Mutual labels:  multiplayer, game-server, websocket
Smoke
💨 Simple yet powerful file-based mock server with recording abilities
Stars: ✭ 142 (+132.79%)
Mutual labels:  api, json, server
Centrifuge
Real-time messaging library for Go with scalability in mind
Stars: ✭ 446 (+631.15%)
Mutual labels:  json, websocket, real-time
haskell-tic-tac-toe
A multiplayer web real-time implementation of the famous Tic Tac Toe game in Haskell.
Stars: ✭ 51 (-16.39%)
Mutual labels:  real-time, multiplayer, game-server
Impress
Enterprise application server for Node.js and Metarhia private cloud ⚡
Stars: ✭ 634 (+939.34%)
Mutual labels:  api, server, websocket
Gameproject3
游戏服务器框架,网络层分别用SocketAPI、Boost Asio、Libuv三种方式实现, 框架内使用共享内存,无锁队列,对象池,内存池来提高服务器性能。还包含一个不断完善的Unity 3D客户端,客户端含大量完整资源,坐骑,宠物,伙伴,装备, 这些均己实现上阵和穿戴, 并可进入副本战斗,多人玩法也己实现, 持续开发中。
Stars: ✭ 655 (+973.77%)
Mutual labels:  multiplayer, game-server, server
Api
姬长信API For Docker 一个基于多种编程语言开源免费不限制提供生活常用,出行服务,开发工具,金融服务,通讯服务和公益大数据的平台.
Stars: ✭ 743 (+1118.03%)
Mutual labels:  api, json, voice
Tigase Server
Highly optimized, extremely modular and very flexible XMPP/Jabber server
Stars: ✭ 170 (+178.69%)
Mutual labels:  chat, voip, server
Rnl
RNL - Realtime Network Library - The opensource reliable UDP network library
Stars: ✭ 59 (-3.28%)
Mutual labels:  game-server, server, real-time
Autoserver
Create a full-featured REST/GraphQL API from a configuration file
Stars: ✭ 188 (+208.2%)
Mutual labels:  api, json, server
Ponzu
Headless CMS with automatic JSON API. Featuring auto-HTTPS from Let's Encrypt, HTTP/2 Server Push, and flexible server framework written in Go.
Stars: ✭ 5,373 (+8708.2%)
Mutual labels:  api, json, server
Realtime Newsapi
Financial News Aggregator - Real Time & Query API for Financial News
Stars: ✭ 34 (-44.26%)
Mutual labels:  api, json, real-time
Dito
Dito.js is a declarative and modern web framework with a focus on API driven development, based on Objection.js, Koa.js and Vue.js – Released in 2018 under the MIT license, with support by Lineto.com
Stars: ✭ 44 (-27.87%)
Mutual labels:  api, json, server
Django Channels React Multiplayer
turn based strategy game using django channels, redux, and react hooks
Stars: ✭ 52 (-14.75%)
Mutual labels:  chat, websocket
Sechub
SecHub - one central and easy way to use different security tools with one API/Client
Stars: ✭ 52 (-14.75%)
Mutual labels:  api, server
Channelstream
Channelstream is a websocket communication server for web applications
Stars: ✭ 52 (-14.75%)
Mutual labels:  chat, websocket


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.

⭐️ Main features

  • 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.

Upcoming features

  • 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!

Change Log

CHANGE_LOG.md


🎮 Client APIs

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 email me!

📁 Installing

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

📚 Usage

🔖 Wiki Home

Table of Contents

  1. Getting Started
  2. Rooms
  3. Users
  4. Custom Client Actions
  5. Saving & Restoring
  6. SQL Features

📜 Documentation

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

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 email me!

Please read the following articles before submitting any contributions or filing an Issue:


GopherGameServer and all of it's contents Copyright 2020 Dominique Debergue
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

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].