• Stars
    star
    2,339
  • Rank 19,670 (Top 0.4 %)
  • Language
    Go
  • License
    MIT License
  • Created over 6 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

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

pitaya Build Status Coverage Status GoDoc Docs Go Report Card MIT licensed

WARNING: The version v1.x of pitaya is deprecated, complete guide of the new version v2.x can be found here. The current README is for version v2.x, make sure you look at branch v1 if you'd like to see the documentation for the older version.


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 [email protected]

Resources

More Repositories

1

apm

APM is a process manager for Golang applications.
Go
166
star
2

maestro

Maestro: Game Room Scheduler
Go
114
star
3

libpitaya

a client sdk for pitaya game server framework
C
65
star
4

podium

A leaderboard backend using redis
Go
48
star
5

pusher

A fast massive push platform for APNs and FCM
Go
37
star
6

khan

khan will drive all your enemies to the sea (and also take care of your game's clans)!
Go
30
star
7

marathon

Marathon is a push notification platform.
Go
25
star
8

libpitaya-cluster

This repo contains a c++ lib with pitaya's cluster logic for creating backend pitaya servers in other programming languages
HTML
21
star
9

pitaya-cli

a cli repl client for pitaya, great for testing servers during development
Go
20
star
10

pitaya-bot

Testing framework for Pitaya, providing automated tests
Go
19
star
11

mqttbot

A bot that provides programmable plugins and persistence/history for mqtt
Go
16
star
12

extensions

This package contains the common extensions we use in our projects.
Go
16
star
13

flux-gitlab-controller

Flux k8s controller to sync gitlab deploy keys
Go
14
star
14

kubernetes-kops-operator

Manage Kubernetes clusters using Kops.
Go
11
star
15

pitaya-admin

Management, monitoring and testing interface for pitaya servers using http and web socket endpoints
Go
10
star
16

maestro-client

maestro-client is maestro's framework that should be included in game rooms
C++
8
star
17

helm-generate

Helm-generate is a generator command to be used with FluxCD. It recursively generates several Helm charts by rendering the Charts to STDOUT.
Go
8
star
18

arkadiko

A simple bridge from HTTP to MQTT developed in Go
Go
7
star
19

unity-template

Unity template for game jams
6
star
20

go-etl

Go ETL using Ratchet
Go
6
star
21

kaas-management-api

Management API for Kubernetes as a Service
Go
5
star
22

maestro-cli

Maestro command line interface
Go
5
star
23

mqtt-history

Go
5
star
24

pitaya-protos

this repository contains the proto files for pitaya projects
5
star
25

bike-race-issues

4
star
26

codeowners-verifier

Small binary to verify if a path has a CODEOWNER.
Go
4
star
27

santiago

Santiago is a horizontal-scale server that handles webhooks with delivery guarantee.
Go
4
star
28

eventsgateway

Receive events and send them encoded as avro to kafka
Go
4
star
29

crossplane-provider-vault

This is a native crossplane provider for Hashicorp's Vault
Go
4
star
30

iac-docker-image

Docker image to be used for infrastructure deployments in CI/CD
Dockerfile
3
star
31

jaeger-tracer-node

Node Jaeger client extended with context propagation and external libs patches
JavaScript
3
star
32

pomelo-graceful-shutdown

A pomelo component that handles graceful shutdown logics
JavaScript
3
star
33

vernemq_redis_auth_plugin

Elixir
3
star
34

kubernetes-crossplane-infrastructure-operator

Operator to manage Kubernetes Clusters Network
Go
3
star
35

resources-check

Check if controllers on Kubernetes have limit and requests setted
Go
3
star
36

protos

This package contains the common .proto files and related generated code we use in our projects.
Go
3
star
37

mystack-controller

Mystack creates a personal stack of predefined services on kubernetes
Go
3
star
38

emq_throttle_plugin

A throttle plugin for EMQ
Elixir
2
star
39

go-extensions-http

Wrapper over go's http with OpenTracing support
Go
2
star
40

mystack-router

The router for mystack
Go
2
star
41

mqtt-monitor

Python
2
star
42

offers

Offers is a service meant to handle offers/promotions in your games.
Go
2
star
43

mystack-cli

The CLI for mystack
Go
2
star
44

pitaya-protocol-js

an implementation of pitaya protocol written in javascript
JavaScript
1
star
45

mystack

Mystack creates a personal stack of predefined services on kubernetes
Makefile
1
star
46

doctor-kafka

Shell
1
star
47

gobblin

Java
1
star
48

homebrew-python2

Support for deprecated Python 2
Ruby
1
star
49

mystack-logger

The logger components of mystack
Go
1
star
50

go-extensions-tracing

Common functions to our go-extensions-* with OpenTracing support
Go
1
star
51

xk6-pitaya

Go
1
star
52

go-extensions-k8s-client-go

Wrapper over k8s.io/client-go that implements some niceties, like OpenTracing support
Go
1
star
53

emq-redis-auth-plugin

Emqtt redis auth plugin based on mosquitto auth plugin
Elixir
1
star
54

wildlogstash

Custom build for logstash
Makefile
1
star
55

koa-datadog-middleware

A koa middleware for reporting metrics to datadog
JavaScript
1
star
56

OpenSSL

C
1
star