前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nakama 云原生游戏服务器入门指南

Nakama 云原生游戏服务器入门指南

作者头像
为少
发布2021-05-27 19:08:04
8K1
发布2021-05-27 19:08:04
举报
文章被收录于专栏:黑客下午茶黑客下午茶

要开始使用 Nakama 进行开发,首先需要将它安装在开发机器上。这很简单,只需要几分钟。在本指南中,我们将重点介绍如何使用 Docker 安装 Nakama 开发实例。

"推荐的方法" Docker 是下载并开始使用 Nakama 进行开发的最快方法。对于生产环境设置,我们建议您将 Nakama 安装为 binary,以确保 Nakama 可以使用所有系统资源。

有一个单一的,最小的 Nakama 镜像包含 Nakama 二进制。基本格式为:

代码语言:javascript
复制
docker run heroiclabs/nakama <command> [options]

"数据库服务器" Nakama 需要一个数据库服务器运行。确保在 Nakama 之前启动数据库,或者使用 docker-compose 来运行两者。

使用 Docker 安装 Nakama 是理想的,原因有以下几点:

  • 您安装到一个纯净的环境
  • 您可以一次性获得所需的一切,包括 CockroachDB
  • 您可以进行快照、重新安装和删除 Nakama,而不会影响您的主要操作系统。
  • 这也意味着无论开发机器运行 Windows、MacOS 还是 Linux,安装指令都是相同的。

什么是 Docker?

Docker 是一个开源的容器化工具,它可以让你创建多个不同的 Linux 环境,每个环境都是独立的。

在 Docker 容器中,你可以运行一套工具来完成特定的工作;在本例中,我们将让一个容器运行 Nakama,另一个运行 CockroachDB。您可以将 Docker 容器视为轻量级虚拟机。

  • 如果你想在 Mac、Linux 和 Windows 10 Pro 版上安装 Docker,请遵循本指南。
  • 如果您正在 Windows 7、8 或 10 家庭(非专业版)版本上安装 Docker,则需要 Docker Toolbox。
  • 使用 Docker Store 查找适合您环境的 Docker Community Edition 的正确版本。

运行 Nakama

有两种方法来运行Nakama和Cockroach:

  1. 不用 Docker Compose
  2. 用 Docker Compose

不使用 Docker Compose 运行 Nakama

您可以运行 Nakama 和 Cockroach 而不使用 Docker-Compose。这意味着你可以更好地控制它们的启动方式和不同的数据卷选项,但话说回来,你必须配置两个容器:

=== "Shell" shell # 拉取并启动 CockroachDB docker run --name=db -p 26257 -p 8080 cockroachdb/cockroach start --insecure # 拉取并迁移数据库 docker run --link=db heroiclabs/nakama migrate up --database.address root@db:26257 # 启动 Nakama 服务器 docker run --link=db -p 7350:7350 -p 7351:7351 heroiclabs/nakama --database.address root@db:26257

使用以下命令连接到数据库 SQL shell

代码语言:javascript
复制
docker exec -it "db" /cockroach/cockroach sql --insecure -d nakama

您还可以通过编辑最后一行更改 Nakama 配置选项。例如:

代码语言:javascript
复制
docker run --link=db -p 7350:7350 -p 7351:7351 heroiclabs/nakama --database.address root@db:26257 --config /path/to/config.yml --socket.server_key "mynewkey"

使用 Docker Compose 运行 Nakama

Docker Compose 简化了同时运行多个 Docker 容器。对于 Nakama,我们需要两个容器:一个用于 Nakama 本身,另一个用于它所依赖的数据库 CockroachDB。

您可以选择在不使用 Docker Compose 的情况下配置 Nakama 和 CockroachDB 容器,但是我们不建议您在开始时使用它。

Docker Compose 使用 YAML 配置文件来声明要使用的容器以及它们如何协同工作。

1. 首先创建 Nakama Docker-Compose 文件:

创建一个名为 docker-compose.yml 的文件,并在您喜欢的文本编辑器中对其进行编辑:

"docker-compose.yml"

代码语言:javascript
复制
version: '3'
services:
  cockroachdb:
    container_name: cockroachdb
    image: cockroachdb/cockroach:v19.2.5
    command: start --insecure --store=attrs=ssd,path=/var/lib/cockroach/
    restart: always
    volumes:
      - data:/var/lib/cockroach
    expose:
      - "8080"
      - "26257"
    ports:
      - "26257:26257"
      - "8080:8080"
  nakama:
    container_name: nakama
    image: heroiclabs/nakama:2.12.0
    entrypoint:
      - "/bin/sh"
      - "-ecx"
      - >
          /nakama/nakama migrate up --database.address root@cockroachdb:26257 &&
          exec /nakama/nakama --name nakama1 --database.address root@cockroachdb:26257
    restart: always
    links:
      - "cockroachdb:db"
    depends_on:
      - cockroachdb
    volumes:
      - ./:/nakama/data
    expose:
      - "7349"
      - "7350"
      - "7351"
    ports:
      - "7349:7349"
      - "7350:7350"
      - "7351:7351"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:7350/"]
      interval: 10s
      timeout: 5s
      retries: 5
volumes:
  data:

!!! warning "Windows 用户" 如果您尝试在 Windows 上通过 Docker-Compose 运行 Nakama,则需要对下载的 docker-compose.yml 文件进行少量更改。请按照以下说明绑定正确的路径。

代码语言:javascript
复制
	如果日志输出未立即显示在 stdout 中,则将 `tty: true` 添加到 `docker-compose.yml` 文件中的 nakama service。

2. 接下来,我们将要求 Docker Compose 按照我们刚刚下载的文件中的说明进行操作:

代码语言:javascript
复制
docker-compose -f docker-compose.yml up

Docker Compose 将下载在 Docker Hub 上发布的最新 CockroachDB 和 Nakama 映像。

3. 现在,您的计算机上同时运行了 CockroachDB 和 Nakama,分别在127.0.0.1:26257127.0.0.1:7350 上可用。

数据

Docker 容器在设计上是 ephemeral(短暂的):删除容器时,您将丢失存储在其中的数据。

出于开发目的,我们建议您将本地计算机文件系统中的文件夹绑定到 Docker 文件系统。实现此目的的最简单方法是编辑 docker-compose.yml 文件:

"docker-compose.yml"

代码语言:javascript
复制
...
  nakama:
    volumes:
      - ./nakama/data:/nakama/data # Edit this line
...
  • 在 Mac 和 Linux 系统上,上面突出显示的路径将在与运行 docker-compose 相同的目录中创建一个名为 nakama 的文件夹。
  • 在 Windows 上,您需要更新上面的路径,以便 Docker 可以正确地绑定该文件夹。一个有效值可以是这样的: /c/Users/<username>/projects/docker:/nakama/data.

!!! warning "Windows上的驱动器绑定" 如果以上路径未更改或不可用,Docker 将告诉你未共享的驱动器。错误看起来像这样:

代码语言:javascript
复制
`ERROR: for bin_nakama_1 Cannot create container for service nakama: Drive has not been shared`

	请确保将上面高亮显示的行更改为正确的路径,并重新启动 Nakama。

您可以将 Lua 脚本放在 /modules 目录中,并使用 docker-compose restart 重新启动Nakama。

配置

当通过 Docker-compose 运行时,你有两个选项来覆盖 Nakama 的配置:

  • 添加单独的命令行标志:

"docker-compose.yml"

代码语言:javascript
复制
...
  nakama:
    entrypoint:
      - "/bin/sh"
      - "-ecx"
      - >
          /nakama/nakama migrate up --database.address root@cockroachdb:26257 &&
          /nakama/nakama --name nakama1 --database.address root@cockroachdb:26257 --socket.server_key "mynewkey"
...
  • 添加配置文件

将您的配置文件放在我们上面设置的 data 卷中,并引用到 Nakama:

"docker-compose.yml"

代码语言:javascript
复制
...
  nakama:
    entrypoint:
      - "/bin/sh"
      - "-ecx"
      - >
          /nakama/nakama migrate up --database.address root@cockroachdb:26257 &&
          /nakama/nakama --config /nakama/data/config.yml
...

日志

容器内生成的日志作为 docker-compose 输出的一部分打印到控制台,您可以在与 docker-compose.yml 文件相同的目录中使用 docker-compose logs 访问它们。

打开 SQL Shell

如果愿意,可以打开数据库的 SQL shell 来直接检查和操作数据。

如果你通过 Docker-Compose 运行 Nakama,尝试以下命令:

代码语言:javascript
复制
docker ps

获取与上面描述相匹配的运行容器的名称,然后运行以下命令:

代码语言:javascript
复制
docker exec -it "cockroachdb" /cockroach/cockroach sql --insecure -d nakama

其中 cockroachdb 是从第一个命令获取的容器名。

停止容器

如果您需要临时暂停 Docker 容器而不丢失这些容器的状态,则有两种选择:

  • 在当前运行 docker-compose 的终端中,按 CTRL-C。
  • 或者在与 docker-compose.yml 相同的目录中运行 docker-compose stop,所有容器将正常关闭。

您可以通过运行 docker-compose up 重新激活它们。

要停止容器并清除所有存储的数据,请运行 docker-compose down

连接 Nakama 客户端

通过 Docker 运行 Nakama 之后,请使用以下连接详细信息来配置您的客户端以连接到服务器:

Host: 127.0.0.1 (or localhost) Port : 7350 SSL: False Server Key: defaultkey

在 JavaScript 客户端中,您可以创建一个 client,如下所示:

代码语言:javascript
复制
var client = new nakamajs.Client("defaultkey", "127.0.0.1", 7350);
client.ssl = false;
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-12-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 黑客下午茶 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是 Docker?
  • 运行 Nakama
    • 不使用 Docker Compose 运行 Nakama
      • 使用 Docker Compose 运行 Nakama
        • 数据
        • 配置
        • 日志
        • 打开 SQL Shell
        • 停止容器
      • 连接 Nakama 客户端
      相关产品与服务
      容器镜像服务
      容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档