Sobre o projeto

Nakama é um servidor de backend de jogo de código aberto projetado para jogos e aplicativos sociais e em tempo real. De acordo com seu README, ele oferece usuários integrados (registro/login via redes sociais, e-mail ou ID do dispositivo), armazenamento para registros e configurações de usuários, um gráfico social com amigos e grupos, chat 1-on-1/grupo/global com histórico persistente, multiplayer em tempo real e por turnos, tabelas de classificação, torneios, festas, validação de compra e notificações no aplicativo. O servidor pode ser estendido com código de tempo de execução personalizado escrito em Lua, TypeScript/JavaScript ou Go nativo. Ele também inclui um matchmaker, dashboard, métricas e outros recursos descritos na documentação oficial. Nakama se comunica via gRPC ou um fallback HTTP/JSON REST para request/response, e WebSockets ou rUDP para tráfego em tempo real. Ele requer CockroachDB ou outro banco de dados compatível com o protocolo Postgres. O desenvolvimento local pode ser iniciado rapidamente com Docker Compose, ou executando binários nativos. A configuração binária envolve iniciar o banco de dados, executar nakama migrate up --database.address ..., e então lançar nakama --database.address .... O servidor gera logs JSON descrevendo sua configuração. Um console web do Nakama está incorporado no único binário do servidor. Ele pode ser usado para inspecionar dados armazenados pelas APIs do servidor, visualizar métricas de serviço, gerenciar dados de jogadores, atualizar objetos de armazenamento, restringir acesso com perfis de permissão e ver recursos em tempo real, como partidas de multiplayer ativas. O console está disponível em http://127.0.0.1:7351 por padrão. Existem bibliotecas de cliente oficiais para .NET (C#), Unity, JavaScript, Java (com Android), Unreal, Godot, Defold e Swift (com iOS). O projeto pode ser implantado em provedores de nuvem como Google Cloud, Azure, AWS, Digital Ocean, Heroku, ou uma nuvem privada; o README recomenda nós separados para Nakama e CockroachDB. A Heroic Cloud é oferecida como uma opção de implantação gerenciada. Contribuidores podem construir a partir do código-fonte com Go. O repositório fornece dependências e suporta builds simples com go build -trimpath -mod=vendor. Builds completos do código-fonte envolvem instalar Protocol Buffers, gRPC, grpc-gateway e ferramentas buf, e então regenerar o código com ./buf.sh. Testes de unidade e integração são executados através de docker-compose-tests.yml. O projeto é licenciado sob Apache-2.0.