heroiclabs/nakama
GitHub: heroiclabs/nakama
开源分布式游戏后端服务器,为实时和多人游戏提供匹配、聊天、排行榜、社交等开箱即用的可扩展基础设施。
Stars: 12993 | Forks: 1451
## 功能
* **用户** - 通过社交网络、电子邮件或设备 ID 注册/登录新用户。
* **存储** - 在集合中存储用户记录、设置及其他对象。
* **社交** - 用户可以添加好友、加入群组。内置社交图谱以查看用户之间的关联方式。
* **聊天** - 用户之间的一对一、群组和全局聊天。持久化消息以保存聊天记录。
* **多人游戏** - 实时或回合制的主动与被动多人游戏。
* **排行榜** - 动态、赛季制,获取排名靠前的成员或用户附近的成员。数量不限。
* **锦标赛** - 邀请玩家一起争夺奖品。将多个锦标赛关联起来组建联赛。
* **队伍** - 为游戏添加团队协作功能。用户可以组建队伍并与队伍成员交流。
* **购买验证** - 验证应用内购买和订阅。
* **应用内通知** - 向已连接的客户端 socket 发送消息和通知。
* **Runtime 代码** - 使用 Lua、TypeScript/JavaScript 或原生 Go 代码编写的自定义逻辑来扩展服务器。
* **匹配器**、**仪表盘**、**指标**以及[更多功能](https://heroiclabs.com/docs)。
使用这款被全球[各地](https://heroiclabs.com/customers/)雄心勃勃的游戏工作室和应用开发者所采用的生产级服务器,构建具有可扩展性的游戏和应用。请查看[文档](https://heroiclabs.com/docs)并加入[开发者社区](https://forum.heroiclabs.com)以获取更多信息。
## 新手上路
该服务器易于配置并在本地开发环境中运行,可以部署到任何云服务商。请参阅[部署说明](#deployment)获取有关如何为生产环境部署项目的建议。Nakama 服务器需要 CockroachDB 或其他兼容 Postgres 协议的服务器作为其数据库。
### Docker
运行服务器和数据库最快的方式是使用 Docker。请安装 Docker 并启动守护进程。
1. 设置一个 [docker-compose 文件](https://heroiclabs.com/docs/nakama/getting-started/install/docker/#running-nakama) 并将其放置在您的项目文件夹中。
2. 运行 `docker-compose -f ./docker-compose.yml up` 以下载容器镜像并启动服务器。
如需更详细的说明,请查看我们的 [Docker 快速入门](https://heroiclabs.com/docs/nakama/getting-started/install/docker)指南。
Nakama Docker 镜像维护在 [Docker Hub](https://hub.docker.com/r/heroiclabs/nakama/tags) 上,并且偶尔会发布用于服务器前沿功能的 [预发布](https://hub.docker.com/r/heroiclabs/nakama-prerelease/tags)镜像。
### 二进制文件
您可以使用适合您平台的原生二进制文件运行服务器。
1. 从我们的 [发布](https://github.com/heroiclabs/nakama/releases)页面下载服务器以及 [数据库](https://www.cockroachlabs.com/docs/stable/install-cockroachdb.html)。
2. 按照数据库[说明](https://www.cockroachlabs.com/docs/stable/start-a-local-cluster.html#before-you-begin)启动它。
3. 运行迁移以设置或升级数据库 schema:
nakama migrate up --database.address "root@127.0.0.1:26257"
4. 启动 Nakama 并连接到数据库:
nakama --database.address "root@127.0.0.1:26257"
连接成功后,您将看到描述服务器所使用的所有[配置](https://heroiclabs.com/docs/nakama/getting-started/configuration)设置的服务器输出。
## 用法
Nakama 支持多种针对不同游戏玩法或应用场景优化的协议。对于请求/响应,它可以使用 GRPC 或 HTTP1.1+JSON 回退(REST)。对于实时通信,您可以使用 WebSockets 或 rUDP。
例如,使用 REST API 通过设备标识符对用户账户进行身份验证。
```
curl "127.0.0.1:7350/v2/account/authenticate/device?create=true" \
--user "defaultkey:" \
--data '{"id": "someuniqueidentifier"}'
```
响应:
GitHub 上提供了许多带有[文档](https://heroiclabs.com/docs)的官方[客户端库](https://github.com/heroiclabs)。目前支持的平台/语言包括:.NET(使用 C#)、Unity 引擎、JavaScript、Java(含 Android)、Unreal 引擎、Godot、Defold 以及 Swift(含 iOS)。如果您想贡献客户端或提出请求,请告诉我们。
## Nakama 控制台
服务器提供了一个 Web UI,团队可以使用它来检查通过服务器 API 存储的各种数据、查看轻量级服务指标、管理玩家数据、更新存储对象、通过权限配置文件限制对生产环境的访问,以及了解实时功能(如活跃的多人对战)的可见性。无需单独安装,因为它已作为单一服务器二进制文件的一部分嵌入其中。
您可以在浏览器中访问 [http://127.0.0.1:7351](http://127.0.0.1:7351)。
## 部署
Nakama 可以部署到任何云提供商,例如 Google Cloud、Azure、AWS、Digital Ocean、Heroku 或您自己的私有云。您应该为 Nakama 和 CockroachDB 设置并配置独立的节点。
CockroachDB 推荐的最低生产基础设施在[这些文档](https://www.cockroachlabs.com/docs/stable/recommended-production-settings.html#basic-hardware-recommendations)中有所概述,Nakama 可以在 Google Cloud 上小至 "g1-small" 的实例类型上运行,尽管我们建议在生产环境中至少使用 "n1-standard-1"。具体的硬件要求将取决于所使用的服务器功能。如需有关运行何种服务器的帮助和建议,请联系我们。
### Heroic Cloud
### 简易构建
构建所需的所有依赖项都已作为 Go 项目的一部分进行 vendor 处理。我们推荐使用现代版本的 Go 工具链,并且不要将代码库存储在旧的 GOPATH 中。
1. 下载源码树。
git clone "https://github.com/heroiclabs/nakama" nakama
cd nakama
2. 从源码构建项目。
go build -trimpath -mod=vendor
./nakama --version
### 完整源码构建
代码库在项目中使用了 Protocol Buffers、GRPC、GRPC-Gateway、buf 和 OpenAPI 规范。这些依赖项作为源代码生成并提交到代码库中,以简化贡献者的构建过程。
要构建代码库并生成所有源码,请按照以下步骤操作。
1. 安装工具链。
go install \
"google.golang.org/protobuf/cmd/protoc-gen-go" \
"google.golang.org/grpc/cmd/protoc-gen-go-grpc" \
"github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway" \
"github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2"
2. 安装 [buf](https://buf.build/docs/cli/installation/)。
3. 重新生成 Protocol Buffers 和 gateway 代码。
# 运行 shell 脚本:
./buf.sh
4. 构建代码库。
go build -trimpath -mod=vendor
### 测试
为了运行所有单元测试和集成测试,请运行:
```
docker-compose -f ./docker-compose-tests.yml up --build --abort-on-container-exit; docker-compose -f ./docker-compose-tests.yml down -v
```
这将创建一个包含 Nakama 和数据库实例的隔离环境,运行
所有测试,并在之后销毁该环境。
### 许可证
本项目基于 [Apache-2 许可证](https://github.com/heroiclabs/nakama/blob/master/LICENSE) 授权。
View Screenshots
标签:EVTX分析, Python工具, rizin, 匹配系统, 即时聊天, 多人游戏, 实时通信, 排行榜, 日志审计, 服务器, 游戏后端, 请求拦截