设置游戏镜像
设置游戏镜像是使用 zeuz 服务器硬件编排工具设置项目的要素之一。如需设置 zeuz 编排的指导,请参阅 设置项目。
注意:关于 zeuz 编排的介绍,请参阅 入门 教程。该教程使用一个测试项目演示了 zeuz 服务器托管 编排、zeuz 控制面板、zeuz 扩容管理器 和 zeuz 命令行工具 (CLI) 如何使用,提供了 SDK 下载 页面并解释了 zeuz 的相关概念。完成该入门教程大概需要 60-90 分钟。
游戏程序集及游戏镜像
您的 游戏镜像 是 游戏程序集 的容器化版本。它包含了运行您 游戏服务器 所需的全部文件。
在您设置游戏使用 zeuz 编排时,您可使用 zeuz 命令行工具 (该工具包含在 SDK 下载中) 上传您的游戏程序集,然后创建该游戏程序集的容器化镜像,进而用该容器化镜像创建运行游戏的 负载 实例。
您可按相同流程上传更新的游戏程序集。zeuz 命令行工具仅将上传其中更新的文件,并生成新的容器化游戏镜像。
您可在 zeuz 控制面板中设置 zeuz 扩容管理器。扩容管理器会将负载部署到您编排设置的 机器 上。
更多信息,请参阅下列 概念 文档:
游戏镜像最佳实践
如需创建符合 zeuz 要求的游戏镜像,请遵循以下列最佳实践指南。
运行无头模式
zeuz 仅支持无头模式 (没有图形用户界面或音频) 的 Linux 游戏镜像。zeuz 用您的游戏镜像创建的容器中包含下列 Linux 软件包:
- gettext
- ca-certificates
- curl
- wget
- htop
- lib32z1
- libatomic1
- libsdl2-2.0-0
- libc6:i386
- libgcc1:i386
- libstdc++5:i386
- libstdc++6:i386
- python
- python3-pip
- rsync
使用单一的二进制文件
为了使游戏程序集的上传过程尽可能简单,请将您的游戏服务器可执行文件编译成一个二进制文件。该二进制文件需符合下列要求:
- 包含全部依赖项
- 无需包含启用脚本即可运行
- 无需定义环境变量
- 设置可执行权限
- 仅使用相对路径
注意:如果您不能将所有的依赖项都包含在一个可执行文件中,请确保静态地链接到依赖项或者动态地使用相对路径链接到依赖项,将全部依赖项和您的二进制文件一起上传。
使用启动脚本
当您设置游戏所需的特定环境变量,和 / 或转换 zeuz 提供的环境变量时,您可能需要使用启动脚本。详情请参阅 负载定义设置 中关于可选环境变量的部分。
规避空子目录误删
您可能需要为负载提供子目录,比如用于存储运行在虚幻引擎上的游戏的输出日志。
zeuz 在创建容器化的游戏镜像时,会删除由您的游戏可执行文件创建的空子目录。您可以通过下列几种方式避免这种情况:
- 在您的游戏程序集文件结构中创建一个子目录并在其中放入一个伪文件,以防止该子目录在游戏程序集的上传过程中被删除。
- 设置您的游戏可执行文件,使其在启动时创建子目录。
注意事项
为了避免上传过程中出现一些常见问题,请注意以下几点:
可做:
- 请确保您的游戏服务器使用 Linux 系统。
- 编译您的游戏服务器,使其运行所需的全部信息都包含在一个二进制文件中。如您不能将全部信息包含在一个二进制文件中,请参阅上文的 单一的二进制文件 部分。
- 请在 shell 脚本中使用 UNIX 语法 (LF) 的行尾,请勿使用 Windows 语法 (CRLF)。
- 请确保您的游戏程序集中不包含任何敏感信息或用户凭证。
不可做:
请勿包含对外部模块或系统范围库的依赖。
请勿在启动脚本中使用硬编码参数。
zeuz 负载运行器 无法覆盖它们,这会破坏上传过程。
请勿使用硬编码端口。
zeuz 动态分配端口,并使其作为配载配置中可访问的参数。关于 zeuz 用于端口和其他设置的变量信息,请参阅 负载定义。
小贴士:
- 请确保您游戏程序集的全部子目录中均有文件。
- 将游戏服务器的日志配置为标准输出,以便在 zeuz 控制面板中查看任意日志。
2021年8月24日 该文档已更新并通过审校
2021年5月19日 该文档已更新并通过审校:阐明 zeuz 术语
2021年2月5日 该文档已创建并通过审校