topfreegames
pitaya
Go

Scalable game server framework with clustering support and client libraries for iOS, Android, Unity and others through the C SDK.

Last updated Jul 7, 2026
2.8k
Stars
536
Forks
66
Issues
+6
Stars/day
Attention Score
95
Language breakdown
Go 99.0%
Makefile 0.8%
JavaScript 0.2%
Dockerfile 0.1%
โ–ธ Files click to expand
README

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 repo
git 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

#TODO

Authors

  • TFG Co - Initial work

License

MIT License

Acknowledgements

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

Resources

  • Other pitaya-related projects
+ libpitaya-cluster + libpitaya + pitaya-admin + pitaya-bot + pitaya-cli + pitaya-protos
  • Documents
+ API Reference + In-depth documentation
  • Demo
+ Implement a chat room in ~100 lines with pitaya and WebSocket (adapted from nano's example) + Pitaya cluster mode example + Pitaya cluster mode with protobuf protocol example

ยฉ 2026 GitRepoTrend ยท topfreegames/pitaya ยท Updated daily from GitHub