Skip to main content

如何在进程模式下使用 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 示例。
请确保正确更新 MultiplayerSettings.json 中的以下字段以在进程模式下运行 LMA。
  • 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,或者在防火墙中启用该端口。
LMA 将等待来自与游戏服务器集成的 GSDK 的心跳。 如果 GSDK 集成正确,LMA 将按以下顺序打印输出:
  1. CurrentGameState - Initializing
    (如果你的游戏服务器直接调用 GSDK::ReadyForPlayers 而不调用 GSDK::Start,则可能不会显示)
  2. CurrentGameState - StandingBy
  3. CurrentGameState - Active
  4. CurrentGameState - Terminating
若要详细了解游戏服务器的状态,请参阅 PlayFab Multiplayer Server 的游戏服务器生命周期是什么 如果关闭回调设置正确,则在状态设为 terminating 后不久,你的游戏服务器将退出。 验证游戏服务器是否退出很重要,以避免在 PlayFab 平台上出现不正常的关闭。 LMA 也应随游戏一起终止。

测试与游戏的连接

一旦 LMA 打印 CurrentGameState - Active,你就可以使用 IP 地址 127.0.0.1 和你的游戏服务器监听的端口 NodePort 连接到游戏服务器。 如果你使用 Wrapper 示例,可以通过在浏览器中输入地址 http://127.0.0.1:56100/Hello 来测试 GET 请求。 有关详细信息,请查看 Wrapper 示例。 你还可以更新 MultiplayerSettings.json 中的 NumHeartBeatsForActivateResponseNumHeartBeatsForTerminateResponse 的值,以调整 standing-by/active 状态的持续时间。
最后修改于 2026年8月25日