【开源】nakama 用于社交和实时游戏和应用程序的分布式服务器。

特征

  • 用户 - 通过社交网络、电子邮件或设备 ID 注册/登录新用户。
  • 存储 - 将用户记录、设置和其他对象存储在集合中。
  • 社交 - 用户可以与朋友联系并加入群组。内置社交图,用于查看如何连接用户。
  • 聊天 - 用户之间的 1 对 1、群组和全局聊天。保留聊天记录的消息。
  • 多人游戏 - 实时或回合制主动和被动多人游戏。
  • 排行榜 - 动态、季节性、获取顶级成员或用户周围的成员。您需要多少就有多少。
  • 锦标赛 - 邀请玩家一起竞争奖品。将许多链接在一起以创建联赛。
  • - 向游戏添加团队游戏。用户可以组建队伍并与队伍成员交流。
  • 购买验证 - 验证应用内购买和订阅。
  • 应用程序内通知 - 将消息和通知发送到连接的客户端套接字。
  • 运行时代码 - 使用以 Lua、TypeScript/JavaScript 或本机 Go 代码编写的自定义逻辑扩展服务器。
  • 对战构建器控制面板指标

使用生产就绪型服务器构建可扩展的游戏和应用程序,供世界各地的雄心勃勃的游戏工作室和应用程序开发人员使用。查看文档并加入开发人员社区以了解更多信息。

开始

该服务器易于设置和运行,可用于本地开发,并且可以部署到任何云提供商。有关如何部署项目以进行生产的建议,请参阅部署说明。Nakama 服务器需要 CockroachDB 或其他 Postgres 有线兼容服务器作为其数据库。
运行服务器和数据库的最快方法是使用 Docker。设置 Docker 并启动守护程序。

  1. 设置 docker-compose 文件并将其放在项目的文件夹中。
  2. Run 下载容器镜像并运行服务器。 docker-compose -f ./docker-compose.yml up

有关更详细的说明,请查看我们的 Docker 快速入门指南。

Nakama Docker 映像在 Docker Hub 上维护,偶尔会发布预发行映像,以实现服务器的尖端功能。

二进制文件

您可以使用适用于您的平台的本机二进制文件运行服务器。

  1. 从我们的发布页面和数据库下载服务器。
  2. 按照数据库说明启动它。
  3. 运行迁移,该迁移将设置或升级数据库架构:

nakama migrate up --database.address “root@127.0.0.1:26257”

  1. 启动 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 中。

  1. 下载源代码树。

git clone “https://github.com/heroiclabs/nakama” nakama cd nakama

  1. 从源构建项目。

go build -trimpath -mod=vendor ./nakama --version

完整源代码构建

代码库使用 Protocol Buffers、GRPC、GRPC-Gateway 和 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

  1. 如果您对嵌入式 Console 进行了更改。

cd console/ui ng serve

  1. 重新生成协议缓冲区、网关代码和控制台 UI。

env PATH="$HOME/go/bin:$PATH" go generate -x ./…

  1. 构建代码库。

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 和数据库实例的隔离环境,运行 所有测试,然后删除环境。

攻击防御技术交流群1 (4)

1赞

顶顶顶顶顶