Scalable game server framework with clustering support and client libraries for iOS, Android, Unity and others through the C SDK.
pitaya [![Build Status][7]][8] [![Coverage Status][9]][10] [![GoDoc][1]][2] [![Docs][11]][12] [![Go Report Card][3]][4] [![MIT licensed][5]][6]
[1]: https://godoc.org/github.com/topfreegames/pitaya?status.svg [2]: https://godoc.org/github.com/topfreegames/pitaya [3]: https://goreportcard.com/badge/github.com/topfreegames/pitaya [4]: https://goreportcard.com/report/github.com/topfreegames/pitaya [5]: https://img.shields.io/badge/license-MIT-blue.svg [6]: LICENSE [7]: https://github.com/topfreegames/pitaya/actions/workflows/tests.yaml/badge.svg [8]: https://github.com/topfreegames/pitaya/actions/workflows/tests.yaml [9]: https://coveralls.io/repos/github/topfreegames/pitaya/badge.svg?branch=master [10]: https://coveralls.io/github/topfreegames/pitaya?branch=master [11]: https://readthedocs.org/projects/pitaya/badge/?version=latest [12]: https://pitaya.readthedocs.io/en/latest/?badge=latest
Pitaya is an simple, fast and lightweight game server framework with clustering support and client libraries for iOS, Android, Unity and others through the C SDK. It provides a basic development framework for distributed multiplayer games and server-side applications.
Getting Started
Prerequisites
- Go >= 1.16
- etcd (optional, used for service discovery)
- nats (optional, used for sending and receiving rpc)
- docker (optional, used for running etcd and nats dependencies on containers)
Installing
clone the repogit clone https://github.com/topfreegames/pitaya.git
setup pitaya dependencies
make setup
Hacking pitaya
Here's one example of running Pitaya:
Start etcd (This command requires docker-compose and will run an etcd container locally. An etcd may be run without docker if preferred.)
cd ./examples/testing && docker compose up -d etcd run the connector frontend server from cluster_grpc example make run-cluster-grpc-example-connector run the room backend server from the cluster_grpc example make run-cluster-grpc-example-room
Now there should be 2 pitaya servers running, a frontend connector and a backend room. To send requests, use a REPL client for pitaya pitaya-cli.
$ pitaya-cli
Pitaya REPL Client
>>> connect localhost:3250
connected!
>>> request room.room.entry
>>> sv-> {"code":0,"result":"ok"}
Running the tests
make test
This command will run both unit and e2e tests.
Contributing
#TODOAuthors
- TFG Co - Initial work
License
MIT LicenseAcknowledgements
- nano authors for building the framework pitaya is based on.
- pomelo authors for the inspiration on the distributed design and protocol
Security
If you have found a security vulnerability, please email security@tfgco.comResources
- Other pitaya-related projects
- Documents
- Demo