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

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

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

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

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


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


docker exec -it "db" /cockroach/cockroach sql --insecure -d nakama


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


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"


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 文件进行少量更改。请按照以下说明绑定正确的路径。


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


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


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"


...
  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 将告诉你未共享的驱动器。错误看起来像这样:


`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"


...
  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"


...
  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,尝试以下命令:


docker ps


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


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 : 7350SSL: FalseServer Key: defaultkey

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


var client = new nakamajs.Client("defaultkey", "127.0.0.1", 7350);
client.ssl = false;


相关文章
|
2月前
|
弹性计算 数据可视化 Ubuntu
《Palworld/幻兽帕鲁》阿里云专用服务器搭建部署从入门到精通:2024年最新教程!
随着《幻兽帕鲁》的风靡,越来越多的玩家希望拥有属于自己的游戏服务器,以获得更加稳定和私密的游戏体验。今天,就为大家带来一份详细的新手教程,教您如何在阿里云上轻松搭建《幻兽帕鲁》专用服务器。 首先,您需要一台服务器。在这里,我们推荐使用阿里云服务器。它不仅稳定可靠,而且提供了丰富的幻兽帕鲁服务器搭建模板,让您轻松上手。
61 0
|
3月前
|
网络协议
网络编程【TCP单向通信、TCP双向通信、一对多应用、一对多聊天服务器】(二)-全面详解(学习总结---从入门到深化)(下)
网络编程【TCP单向通信、TCP双向通信、一对多应用、一对多聊天服务器】(二)-全面详解(学习总结---从入门到深化)
35 2
|
1月前
|
弹性计算 运维 安全
手把手教你入门部署幻兽帕鲁服务器:2024年阿里云搭建幻兽帕鲁Palworld联机服务器新手教程
手把手教你入门部署幻兽帕鲁服务器:2024年阿里云搭建幻兽帕鲁Palworld联机服务器新手教程。对于热衷《幻兽帕鲁》这款开放世界生存制作游戏的粉丝而言,拥有个人游戏服务器无疑是令人心动的。这款由Pocketpair开发的游戏,在2024年1月18日推出了其抢先体验版,它凭借广阔的游戏世界和丰富的玩法——如收集神奇的生物“帕鲁”,让它们参与战斗、建造、农耕和工业生产等——赢得了大量玩家的喜爱。现在,我将为大家详细指导如何在阿里云服务器上轻松一键部署《幻兽帕鲁》的联机服务器。
1090 2
|
2月前
|
数据采集 网络协议 搜索推荐
网络编程【TCP单向通信、TCP双向通信、一对多应用、一对多聊天服务器】(二)-全面详解(学习总结---从入门到深化)
网络编程【TCP单向通信、TCP双向通信、一对多应用、一对多聊天服务器】(二)-全面详解(学习总结---从入门到深化)
58 0
|
3月前
|
云安全 弹性计算 Linux
【玩转幻兽帕鲁部署】阿里云幻兽帕鲁服务器搭建1分钟搞定:从入门到精通
【玩转幻兽帕鲁部署】阿里云幻兽帕鲁服务器搭建1分钟搞定:从入门到精通。
|
8月前
|
Sentinel 微服务
微服务组件(高并发带来的问题 服务器雪崩效应 Sentinel入门)2
微服务组件(高并发带来的问题 服务器雪崩效应 Sentinel入门)2
64 0
|
9月前
|
Web App开发 存储 C#
C# 10分钟入门基于WebOffice实现在线编辑文档,实时保存到服务器(所有office,兼容WPS)
C# 10分钟入门基于WebOffice实现在线编辑文档,实时保存到服务器(所有office,兼容WPS)
|
6月前
|
JavaScript 前端开发 中间件
python web 开发与 Node.js + Express 创建web服务器入门
python web 开发与 Node.js + Express 创建web服务器入门
78 0
|
8月前
|
Linux 数据安全/隐私保护
阿里云服务器入门使用流程 新手学习教程
阿里云根据个人需要选合适的云服务器,选好cpu、内存、带宽,地域,这四个是主要的。其他可以默认选择。
2235 0
|
8月前
|
消息中间件 监控 Java
微服务组件(高并发带来的问题 服务器雪崩效应 Sentinel入门)1
微服务组件(高并发带来的问题 服务器雪崩效应 Sentinel入门)1
101 0