Web应用 活跃维护

nakama

heroiclabs/nakama

可扩展的开源游戏后端服务器:为游戏提供多人游戏、匹配、排行榜、聊天和社交功能。

13434
Stars 标星
1500
Forks 分支
211
Watchers 关注
119
Open Issues
Go
主要语言
Apache-2.0
开源协议
170.9 MB
仓库大小
1 天前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:heroiclabs/nakama
git clone https://github.com/heroiclabs/nakama.git
git clone git@github.com:heroiclabs/nakama.git
README.md master

机器翻译正文由机器翻译自项目原始文档(英文),排版经程序统一处理,可能存在偏差,请以原项目仓库为准。

功能

  • 用户 - 通过社交网络、电子邮件或设备ID注册/登录新用户。
  • 存储 - 在集合中存储用户记录、设置和其他对象。
  • 社交 - 用户可以与朋友连接,并加入群组。内置社交图谱以查看用户之间的连接方式。
  • 聊天 - 用户之间的一对一、群组和全球聊天。保存消息以便查看聊天历史。
  • 多人游戏 - 实时或回合制的主动和被动多人游戏。
  • 排行榜 - 动态排行榜、赛季排行榜,可获取顶尖成员或某用户周围的成员。可以创建任意数量的排行榜。
  • 比赛 - 邀请玩家共同竞争奖品。将多个比赛连接在一起以创建联赛。
  • 队伍 - 为游戏添加团队玩法。用户可以组队并与队伍成员交流。
  • 购买验证 - 验证应用内购买和订阅。
  • 应用内通知 - 向连接的客户端套接字发送信息和通知。
  • 运行时代码 - 使用 Lua、TypeScript/JavaScript 或原生 Go 代码编写自定义逻辑来扩展服务器。
  • 匹配系统、仪表盘、指标 和 更多。

Build scalable games and apps with a production ready server used by ambitious game studios and app developers all around the world. Have a look at the documentation and join the developer community for more info.

入门

该服务器易于设置和运行,适用于本地开发,并且可以部署到任何云提供商。请查看部署说明以获取关于如何将项目部署到生产环境的建议。Nakama 服务器需要 CockroachDB 或其他与 Postgres 协议兼容的服务器作为其数据库。

Docker

运行服务器和数据库的最快方法是使用 Docker。安装 Docker 并启动守护进程。

  1. 设置一个 docker-compose 文件 并将其放置在你的项目文件夹中。

  2. 运行 docker-compose -f ./docker-compose.yml up 以下载容器镜像并启动服务器。

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

Nakama Docker 镜像维护在 Docker Hub,偶尔会发布 prerelease 镜像,以提供服务器的最新功能。

二进制文件

你可以使用适合你平台的本地二进制文件来运行服务器。

  1. 从我们的 发布 页面下载服务器和 数据库。

  2. 按照数据库的 说明 启动它。

  3. 运行迁移,这将设置或升级数据库模式:

    nakama migrate up --database.address "root@127.0.0.1:26257"
  4. 启动Nakama并连接到数据库:

    nakama --database.address "root@127.0.0.1:26257"

连接后,您将看到服务器输出,其中描述了服务器用于 配置 的所有设置。

{"level":"信息","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 控制台

服务器提供了一个网页 UI,团队可以使用它来检查通过服务器 API 存储的各种数据,查看轻量级服务指标,管理玩家数据,更新存储对象,通过权限配置限制对生产环境的访问,并查看实时功能,如活跃的多人游戏匹配。无需单独安装,因为它作为单一服务器二进制文件的一部分嵌入。

你可以在浏览器中通过 http://127.0.0.1:7351 访问它。

View Screenshots

部署

Nakama 可以部署到任何云提供商,例如 Google Cloud、Azure、AWS、Digital Ocean、Heroku 或您自己的私有云。您应该为 Nakama 和 CockroachDB 设置并配置独立的节点。

CockroachDB 的推荐最低生产基础设施在 这些文档 中有说明,而 Nakama 可以在 Google Cloud 上使用最小为 “g1-small” 的实例类型运行,虽然我们在生产环境中建议使用至少为 “n1-standard-1” 的实例类型。具体的硬件要求将取决于服务器使用的功能。请联系我们获取关于要运行的服务器的帮助和建议。

英雄云

您可以通过使用 Heroic Labs 的 Heroic Cloud 进行部署来支持服务器的开发、新功能和维护。此服务处理运行时间、复制、备份、日志、数据升级以及生产服务器环境中涉及的所有其他任务。

请查看我们的 Heroic Cloud 服务以获取更多详细信息。

贡献

开发路线图以 GitHub 问题和拉取请求的形式管理,欢迎提交拉取请求。如果您有兴趣添加问题跟踪器中未提及的功能,请创建一个问题以进行讨论,或者直接在社区论坛中讨论。

简单构建

构建所需的所有依赖项都作为 Go 项目的一部分进行管理。我们推荐使用 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. Install buf.

  3. 重新生成协议缓冲区和网关代码。

    # Run the shell script:
    ./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 许可证 许可。

本站来源与版权声明
  • 本文标题:nakama - 可扩展的开源游戏后端服务器:为游戏提供多人游戏
  • 本文链接:https://www.cn121.com/webapp/heroiclabs-nakama.html
  • 原项目:heroiclabs/nakama 版权归原作者 heroiclabs 及贡献者所有
  • 收录信息:本站于 2026-09-29 收录本项目,本页所列协议与仓库指标均为收录当时的状态;该日期之后原项目的版本更新与协议变更,本页不作同步。
  • 开源协议:收录时本项目采用 Apache-2.0(查看 LICENSE 原文),本站译文为其衍生内容;使用、修改、分发请以该仓库 LICENSE 原文为准。本站对原文仅作排版与图片地址适配, 并保留原项目的 NOTICE 与署名要求。
  • 站点出处:本文首发于 OneTwoOne,收录自 GitHub 开源项目 heroiclabs/nakama。
  • 翻译说明:本页正文为人工智能生成内容——由机器翻译对原项目 README 初译、经程序校验排版,可能存在错漏,请以原项目文档为准。
  • 引用声明:商业转载、第三方聚合或 AI 检索训练引用时,请务必保留以上来源出处、本文永久链接,以及原项目的版权声明与许可信息。
  • 下架通道:若原项目此后变更或收紧了许可协议、或作者/权利人认为本站的收录方式(译文、排版适配、简介翻译等)超出其授权范围,请通过 xyd3302001@163.com 发送下架通知,并附上项目地址与本页链接。本站核实后将第一时间删除本页内容,或改为不复制原文的目录性收录;署名更正等其他要求可一并提出。