特征
- 用户 - 通过社交网络、电子邮件或设备 ID 注册/登录新用户。
- 存储 - 将用户记录、设置和其他对象存储在集合中。
- 社交 - 用户可以与朋友联系并加入群组。内置社交图,用于查看如何连接用户。
- 聊天 - 用户之间的 1 对 1、群组和全局聊天。保留聊天记录的消息。
- 多人游戏 - 实时或回合制主动和被动多人游戏。
- 排行榜 - 动态、季节性、获取顶级成员或用户周围的成员。您需要多少就有多少。
- 锦标赛 - 邀请玩家一起竞争奖品。将许多链接在一起以创建联赛。
- 群 - 向游戏添加团队游戏。用户可以组建队伍并与队伍成员交流。
- 购买验证 - 验证应用内购买和订阅。
- 应用程序内通知 - 将消息和通知发送到连接的客户端套接字。
- 运行时代码 - 使用以 Lua、TypeScript/JavaScript 或本机 Go 代码编写的自定义逻辑扩展服务器。
- 对战构建器 、 控制面板 、 指标 等。
使用生产就绪型服务器构建可扩展的游戏和应用程序,供世界各地的雄心勃勃的游戏工作室和应用程序开发人员使用。查看文档并加入开发人员社区以了解更多信息。
开始
该服务器易于设置和运行,可用于本地开发,并且可以部署到任何云提供商。有关如何部署项目以进行生产的建议,请参阅部署说明。Nakama 服务器需要 CockroachDB 或其他 Postgres 有线兼容服务器作为其数据库。
运行服务器和数据库的最快方法是使用 Docker。设置 Docker 并启动守护程序。
- 设置 docker-compose 文件并将其放在项目的文件夹中。
- Run 下载容器镜像并运行服务器。
docker-compose -f ./docker-compose.yml up
有关更详细的说明,请查看我们的 Docker 快速入门指南。
Nakama Docker 映像在 Docker Hub 上维护,偶尔会发布预发行映像,以实现服务器的尖端功能。
二进制文件
您可以使用适用于您的平台的本机二进制文件运行服务器。
nakama migrate up --database.address “root@127.0.0.1:26257”
- 启动 Nakama 并连接到数据库:
nakama --database.address “root@127.0.0.1:26257”
连接后,您将看到 server output(服务器输出),其中描述了 server 用于配置的所有设置。
{“level”:“info”,“ts”:“2018-04-29T10:14:41.249+0100”,“msg”:“节点”,“name”:“nakama”,“version”:“2.0.0+7e18b09”,“runtime”:“go1.10.1”,“cpu”:4}
{“level”:“info”,“ts”:“2018-04-29T10:14:41.249+0100”,“msg”:“数据库连接”,“dsns”:[“root@127.0.0.1:26257”]}
… 用法
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”}’
响应:
{
“token”:“eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1MjQ5OTU2NDksInVpZCI6Ijk5Y2Q1YzUyLWE5ODgtNGI2NC04YThhLTVmMTM5YTg4MTgxMiIsInVzbiI6InhBb1RxTUVSdFgifQ.-3_rXNYx3Q4jKuS7RkxeMWBzMNAm0vl93QxzRI8p_IY”
}
GitHub 上提供了许多带有文档的官方客户端库。当前平台/语言支持包括:.NET(C# 格式)、Unity 引擎、JavaScript、Java(Android 格式)、Unreal 引擎、Godot、Defold 和 Swift(iOS 格式)。如果您想提供客户或请求客户,请告诉我们。
Nakama 控制台
服务器提供了一个 Web UI,团队可以使用它来检查通过服务器 API 存储的各种数据、查看轻量级服务指标、管理玩家数据、更新存储对象、使用权限配置文件限制对生产的访问,以及了解实时功能(如活跃的多人游戏比赛)。不需要单独安装,因为它是作为单个服务器二进制文件的一部分嵌入的。
部署
Nakama 可以部署到任何云提供商,例如 Google Cloud、Azure、AWS、Digital Ocean、Heroku 或您自己的私有云。您应该为 Nakama 和 CockroachDB 设置和预置单独的节点。
这些文档概述了 CockroachDB 的建议最低生产基础设施,Nakama 可以在 Google Cloud 上小至“g1-small”的实例类型上运行,但我们建议在生产中至少使用“n1-standard-1”。具体的硬件要求将取决于所使用的服务器功能。联系我们以获取有关运行哪些服务器的帮助和建议。
英雄云
您可以通过使用 Heroic Labs 的 Heroic Cloud 进行部署来支持服务器的开发、新功能和维护。此服务处理正常运行时间、复制、备份、日志、数据升级以及与生产服务器环境相关的所有其他任务。
简单构建
构建所需的所有依赖项都作为 Go 项目的一部分提供。我们建议使用 Go 工具链的现代版本,并且不要将代码库存储在旧的 GOPATH 中。
- 下载源代码树。
git clone “https://github.com/heroiclabs/nakama” nakama cd nakama
- 从源构建项目。
go build -trimpath -mod=vendor ./nakama --version
完整源代码构建
代码库使用 Protocol Buffers、GRPC、GRPC-Gateway 和 OpenAPI 规范作为项目的一部分。这些依赖项作为源生成并提交到存储库,以简化贡献者的构建。
要构建代码库并生成所有源代码,请执行以下步骤。
- 安装工具链。
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”
- 如果您对嵌入式 Console 进行了更改。
cd console/ui ng serve
- 重新生成协议缓冲区、网关代码和控制台 UI。
env PATH="$HOME/go/bin:$PATH" go generate -x ./…
- 构建代码库。
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 和数据库实例的隔离环境,运行 所有测试,然后删除环境。
