如何在进程模式下使用 LocalMultiplayerAgent 运行游戏服务器
本教程介绍如何:- 使用 Wrapper 示例创建生成
- 配置 MultiplayerSettings.json
- 运行 LocalMultiplayerAgent
- 测试游戏连接
创建游戏生成
若要使用 LocalMultiplayerAgent(LMA)测试游戏服务器,你需要创建游戏生成并保存为存档格式。 为了方便你,我们提供了 Wrapper 示例以及说明和 PowerShell 脚本。 接下来,按照”使用 wrapper 应用包装现有游戏服务器”步骤准备好本教程使用的游戏服务器。配置 MultiplayerSettings.json
导航到解压 LMA 工具集的文件夹并打开 MultiplayerSettings.json 文件。此文件是一个生成配置模拟文件,用于模拟 MPS 上的生成。 你可以使用 LMA MultiplayerSettings.json Generator 填充 json。 Generator 是一个简单的网页,它根据你的选项创建 json。你可以在 LMA 的解压文件夹下找到 Generator。 下面是在进程模式下运行 LMA 时 Wrapper 示例的 MultiplayerSettings.json 示例。-
LocalFilePath— 之前创建的游戏服务器资产 zip 文件的完整本地路径(在你的工作站上),例如:D:\MyAmazingGame\asset.zip(注意反斜杠需要为 JSON 格式进行转义)。 -
StartGameCommand— 进程的 StartGameCommand 路径是一个相对路径。工作目录将是游戏资产解压的位置。 -
PortMappingsList— 这些是游戏运行时可用的端口。-
NodePort是在你的工作站上打开的端口 -
GamePort.Number在进程模式下不需要。当游戏服务器运行时,端口号将通过 GSDK 绑定到 Node Port。在实际场景中,MPS 会为每个基于进程的游戏会话动态绑定端口。 -
将
GamePort.Name设为与游戏服务器中定义的相同值。你可以在运行时通过键 GamePort.Name 检查 GSDK 配置来获取该值。如果你使用 Wrapper 示例,端口名称已定义为 “game_port”,因此此处应设为相同的值。 -
GamePort.Protocol— 指定协议类型:TCP 或 UDP
-
-
OutputFolder— 用于生成输出和配置文件的驱动器或文件夹路径。请确保有足够的可用空间,因为游戏服务器将在此路径下解压。如果未指定,则使用代理文件夹。 -
AgentListeningPort— 这是 LMA 与游戏服务器通信的端口。任何开放的端口都可以,56001 是默认值。如果有其他进程绑定到 56001,你必须更改此值或终止占用 56001 端口的其他进程。 -
ResourceLimits— 进程模式下不需要。 -
MountPath— 进程模式下不需要。 -
SessionCookie(可选)— 作为 RequestMultiplayerServer API 调用一部分传递给游戏服务器的任何会话 Cookie。在 MPS 的实际场景中,建立连接后,服务器将通知客户端从 SessionCookie 加载对应的资源。
运行 LocalMultiplayerAgent
现在你可以准备运行 LocalMultiplayerAgent。-
在 PowerShell 窗口中:
导航到 LMA 下包含 LocalMultiplayerAgent.exe 的目录。 -
运行
LocalMultiplayerAgent.exe。 此时,LMA 设置 http 侦听器,解压游戏资产,并在单独的进程中启动游戏服务器。如果你以进程方式运行游戏服务器,Windows 防火墙可能会弹出,询问你是否允许流量通过所指定的 NodePort。如果想避免这种情况,你可以以管理员模式运行 LocalMultiplayerAgent,或者在防火墙中启用该端口。
CurrentGameState - Initializing
(如果你的游戏服务器直接调用 GSDK::ReadyForPlayers 而不调用 GSDK::Start,则可能不会显示)CurrentGameState - StandingByCurrentGameState - ActiveCurrentGameState - Terminating
