All Projects → sydnash → lotou

sydnash / lotou

Licence: other
a go game server framework

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to lotou

Ejercicios-Practicos
Mejora tu lógica de programación y aprende mucho más resolviendo estos ejercicios.
Stars: ✭ 316 (+321.33%)
Mutual labels:  practice
Daemon
适用于 MCSManager 的守护进程,用于与面板端进行分离直接控制和管理程序
Stars: ✭ 72 (-4%)
Mutual labels:  game-server
fargate-game-servers
This repository contains an example solution on how to scale a fleet of game servers on AWS Fargate on Elastic Container Service and route players to game sessions using a Serverless backend. Game Server data is stored in ElastiCache Redis. All resources are deployed with Infrastructure as Code using CloudFormation, Serverless Application Model,…
Stars: ✭ 30 (-60%)
Mutual labels:  game-server
Crystalshire
Legacy VB6 open-source ORPG
Stars: ✭ 24 (-68%)
Mutual labels:  game-server
web-practices
This project aims to hold a list of exercises for beginner frontend developer to practice their skills and create a path to solve some minor problems.
Stars: ✭ 48 (-36%)
Mutual labels:  practice
Practice
HTML+CSS 静态网页项目
Stars: ✭ 69 (-8%)
Mutual labels:  practice
litchi
这是一款分布式的java游戏服务器框架
Stars: ✭ 97 (+29.33%)
Mutual labels:  game-server
tensorflow-practice
Learning tensorflow by just one example for beginners
Stars: ✭ 43 (-42.67%)
Mutual labels:  practice
gameServer
A gameServer for car racing game which based on leaf game server
Stars: ✭ 23 (-69.33%)
Mutual labels:  game-server
nakama-java
Android optimized Java client for Nakama server.
Stars: ✭ 26 (-65.33%)
Mutual labels:  game-server
little-python
little python projects, 一些小的python项目.
Stars: ✭ 18 (-76%)
Mutual labels:  practice
README.1ST
The starting point of Laclede’s LAN on GitHub.
Stars: ✭ 48 (-36%)
Mutual labels:  game-server
source-server-manager
Manage CSGO and other source dedicated servers
Stars: ✭ 44 (-41.33%)
Mutual labels:  game-server
L2jBrasil
L2jBrasil Project
Stars: ✭ 20 (-73.33%)
Mutual labels:  game-server
fretboarder
🎸 A web app to visualize scales, chords and arpeggios on all kinds of fretboards.
Stars: ✭ 34 (-54.67%)
Mutual labels:  practice
anki-canvas
🖌️ Drawing area widget for Anki to practice Kanji writing
Stars: ✭ 25 (-66.67%)
Mutual labels:  practice
obozrenie
Simple and easy to use game server browser.
Stars: ✭ 25 (-66.67%)
Mutual labels:  game-server
algorithms-in-python
Some famous algorithms implemented in Python
Stars: ✭ 21 (-72%)
Mutual labels:  practice
haskell-tic-tac-toe
A multiplayer web real-time implementation of the famous Tic Tac Toe game in Haskell.
Stars: ✭ 51 (-32%)
Mutual labels:  game-server
server
The servercode for the Forged Alliance Forever lobby
Stars: ✭ 55 (-26.67%)
Mutual labels:  game-server

Lotou is a lightweight framework for game server implemented in golang. It utilizes the communication between nodes by abstracting exchangings of messages so that the multi-nodes and multi-services can be easily achieved.

中文博客

lotou

Lotou is inspired by the framework SKYNET written by cloudwu. Within this framework, all services communicates each other by messaging. Functions supplied by services are not exposed by API calling. In current version, module core is responsible for routing messages, and every service has its own message chan for receiving and sending.

features

  1. message based on communication between service(idea from share memory through communication in golang)
  2. multicore support
  3. cluster support
  4. extremely simple user interface

main functional package

core

core supplies the communication between services. All services are registered to core, and send message to others by core.send.

binary

binary encodes data into binary stream for communication between servers and clients. Usage of this encoding convention is somewhat like the usage of json marshalling.

gob(not gob in golang's own lib) Gob encoding aims to sustain nodes' communication. Communication of services can be trans-nodes, so the encoding messages into binary stream is necessary. Message switching within nodes do not need to be encoded for better performance.

All primitive types in golang can be encoded. Any combination of parameters is easily supported as long as the sender and the receiver complies with the same signature

self-defined struct can also be supported, but the struct must be registered in advanced. If different nodes need to use the same struct, the registration of those structs must be registered in a fixed and unique sequence.

At present, encoding performances for slice and map are not so good. In order to encode type of []interface{}, each elements of which are encoded separately. To be more specific, type info for each elements are all marshalled. So if there are elements of one certain same type, type info are marshalled redundantly.

Marshalling of gob(Lotou) is achieved by reflect.

log

Module of log is for printing debug and error information. Currently, log is Synchronized mode, if we have too many log which needs to wirte to file, it may block the main logic. (it may be changed to asynchronized mode some day)

network

network implements the routes between nodes in TCP. Roles of server and client work as what they are called. Heartbeat is not implemented yet. client establishes connection to its server at the first time of sending message.

topology

Multi-node servers are based on topoloy. There are two types of nodes in Lotou and different types of nodes are clusted into the same network. Within a certain network there is only one master node and serveral slave nodes. Services can be run in any type of node and there are two types of services: Local service and global service. Local service are ones within the same node known to each other by name. Global service are ones run by different nodes and they are exposed to all services of all nodes by being registered to master.

contact us

If you are interested in developing Lotou, feel free to contact me via

QQ 157621271

Wechat ID daijun_1234.

QQ group is also available 362112175. (Fill verification message with Lotou)

twitter @sydnash1

Advices and geeks are always welcomed.

next

use etcd as service discover.

use nats as node message diliver.

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