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;


相关文章
|
26天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
84 2
|
2月前
|
Kubernetes Cloud Native 云计算
云原生入门:从Docker到Kubernetes的旅程
【10月更文挑战第2天】本文将带你走进云原生的世界,从基础的Docker容器技术开始,逐步深入到Kubernetes集群管理。我们将通过实际代码示例,探索如何利用这些工具构建、部署和管理现代云应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的知识和技能,让你在云原生领域迈出坚实的一步。
89 5
|
24天前
|
运维 Kubernetes Cloud Native
云原生技术入门及实践
【10月更文挑战第39天】在数字化浪潮的推动下,云原生技术应运而生,它不仅仅是一种技术趋势,更是企业数字化转型的关键。本文将带你走进云原生的世界,从基础概念到实际操作,一步步揭示云原生的魅力和价值。通过实例分析,我们将深入探讨如何利用云原生技术提升业务灵活性、降低成本并加速创新。无论你是云原生技术的初学者还是希望深化理解的开发者,这篇文章都将为你提供宝贵的知识和启示。
|
6天前
|
Kubernetes Cloud Native API
云原生入门:从理论到实践的探索之旅
本文旨在为初学者提供一个关于云原生技术的全面介绍,包括其定义、核心原则、关键技术组件以及如何将这些概念应用于实际项目中。我们将通过一个简易的代码示例,展示如何在云原生环境下部署一个简单的应用,从而帮助读者更好地理解云原生技术的实践意义和应用价值。
|
8天前
|
运维 Cloud Native 开发者
云原生技术入门与实践
在云计算的浪潮中,云原生技术以其独特的优势和魅力吸引了越来越多的开发者和企业。本文将从云原生技术的基本概念、核心组件以及实际应用三个方面进行详细介绍,帮助读者更好地理解和掌握这一新兴技术。同时,文章还将分享一些实际案例和经验教训,让读者能够更深入地了解云原生技术的应用场景和发展趋势。
24 5
|
13天前
|
Kubernetes Cloud Native 开发者
云原生入门:从容器到微服务
本文将带你走进云原生的世界,从容器技术开始,逐步深入到微服务架构。我们将通过实际代码示例,展示如何利用云原生技术构建和部署应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息和启示。
|
15天前
|
Kubernetes Cloud Native 微服务
云原生入门与实践:Kubernetes的简易部署
云原生技术正改变着现代应用的开发和部署方式。本文将引导你了解云原生的基础概念,并重点介绍如何使用Kubernetes进行容器编排。我们将通过一个简易的示例来展示如何快速启动一个Kubernetes集群,并在其上运行一个简单的应用。无论你是云原生新手还是希望扩展现有知识,本文都将为你提供实用的信息和启发性的见解。
|
22天前
|
Kubernetes Cloud Native 开发者
云原生入门:Kubernetes的简易指南
【10月更文挑战第41天】本文将带你进入云原生的世界,特别是Kubernetes——一个强大的容器编排平台。我们将一起探索它的基本概念和操作,让你能够轻松管理和部署应用。无论你是新手还是有经验的开发者,这篇文章都能让你对Kubernetes有更深入的理解。
|
20天前
|
运维 Kubernetes Cloud Native
云原生技术入门:Kubernetes和Docker的协同工作
【10月更文挑战第43天】在云计算时代,云原生技术成为推动现代软件部署和运行的关键力量。本篇文章将带你了解云原生的基本概念,重点探讨Kubernetes和Docker如何协同工作以支持容器化应用的生命周期管理。通过实际代码示例,我们将展示如何在Kubernetes集群中部署和管理Docker容器,从而为初学者提供一条清晰的学习路径。
|
26天前
|
Cloud Native 持续交付 云计算
云原生技术入门与实践
【10月更文挑战第37天】本文旨在为初学者提供云原生技术的基础知识和实践指南。我们将从云原生的概念出发,探讨其在现代软件开发中的重要性,并介绍相关的核心技术。通过实际的代码示例,我们展示了如何在云平台上部署和管理应用,以及如何利用云原生架构提高系统的可伸缩性、弹性和可靠性。无论你是云原生领域的新手,还是希望深化理解的开发者,这篇文章都将为你打开一扇通往云原生世界的大门。