网络模拟器 是一个Studio测试工具,它在游戏测试客户端和服务器之间的连接中添加延迟、抖动和数据包丢失。使用它可以重现玩家在有线、Wi-Fi和移动连接中遇到的条件,而无需配置外部网络限速工具。
在受限条件下进行测试可以揭示在快速开发连接上看似响应迅速的交互,但对于某些玩家来说却变得延迟、混乱或不可靠。使用网络模拟器评估服务器确认的操作、复制状态、流媒体行为、预测和纠正,以及您的体验如何容忍偶尔的数据包丢失。
网络模拟器仅影响Studio游戏测试。它不会更改您发布的体验或实时玩家的连接。

网络模拟器的工作原理
模拟器在每个方向上独立应用条件:
- 入站 流量从服务器传输到客户端。它包括复制的服务器状态和服务器到客户端的远程通信。
- 出站 流量从客户端传输到服务器。它包括客户端请求和客户端到服务器的远程通信。

每个方向都有以下控制:
| 控制 | 模拟内容 | 观察内容 |
|---|---|---|
| 延迟 | 添加到每个数据包的最小单向延迟。 | 服务器确认缓慢、状态更新延迟,以及在等待时看起来卡住的用户界面。 |
| 抖动 | 在最小延迟的基础上添加的变化。 | 不均匀的更新时机、可见的修正、动画或运动不稳定,以及排序假设。 |
| 数据包丢失 | 单个数据包被丢弃的概率。 | 可靠流量的重传延迟和为容忍丢失而设计的流量的缺失更新。 |
网络延迟是一个往返测量,因此添加的入站和出站延迟都会贡献。例如,10毫秒的入站延迟和10毫秒的出站延迟大约会将连接的现有往返时间增加20毫秒。
配置的值会添加到连接的真实条件中。这在团队测试期间尤其重要,因为地理位置和公共互联网已经贡献了延迟和数据包丢失。
打开网络模拟器
要打开该工具:
- 从测试菜单中启用设备模拟器。
- 在3D视口上方的工具栏中,选择网络标签。
该标签总结了已分阶段或应用的连接类型和质量。打开它以查看确切的预设和所有六个方向值。
应用预设
内置预设提供了常见连接类型的可重复起始点。以下表中的值以延迟 / 抖动 / 数据包丢失列出。
| 预设 | 标签 | 入站 | 出站 |
|---|---|---|---|
| 理想光纤 | 局域网 | 8毫秒 / 0毫秒 / 0.00% | 8毫秒 / 0毫秒 / 0.00% |
| 有线宽带 | 局域网 | 25毫秒 / 3毫秒 / 0.00% | 25毫秒 / 3毫秒 / 0.00% |
| 家庭Wi-Fi | Wi-Fi | 30毫秒 / 12毫秒 / 0.20% | 30毫秒 / 15毫秒 / 0.30% |
| 标准移动(4G/LTE) | 4G | 45毫秒 / 20毫秒 / 0.40% | 55毫秒 / 30毫秒 / 0.50% |
| 糟糕的连接(3G) | 3G | 150毫秒 / 70毫秒 / 0.50% | 180毫秒 / 90毫秒 / 0.50% |
这些预设代表有用的测试条件,而不是对每种类型连接的保证。真实网络因设备、位置、提供商、拥塞和时间而异。
要应用预设:
- 从预设中选择一个预设。
- 查看预览的入站和出站值。标签也会更新以预览选择。
- 选择应用。
- 启动或继续进行游戏测试,并进行客户端与服务器的交互。
选择预设仅会分阶段其值。活动的游戏测试连接在您选择应用之前不会更改。如果您先关闭弹出窗口,网络模拟器将丢弃分阶段的更改,并将其控件和标签返回到应用状态。
在您选择应用后,活动的游戏测试会立即使用新值。您无需重新启动会话。
配置自定义条件
展开入站或出站以更改一个方向而不更改另一个方向。这对于将客户端到服务器请求路径中的问题与服务器到客户端响应路径中的问题分开非常有用。
| 控制 | 范围 | 显示精度 |
|---|---|---|
| 延迟 | 0–1000毫秒 | 0.1毫秒 |
| 抖动 | 0–1000毫秒 | 0.1毫秒 |
| 数据包丢失 | 0.00–0.50% | 0.01% |
数据包丢失以百分比显示。值为0.50%意味着千分之五,而不是50%。
编辑任何数值会将预设更改为自定义。编辑保持分阶段,直到您选择应用。
网络模拟器使用与Studio设置的网络选项卡相同的底层仿真设置。如果在模拟器有分阶段编辑的情况下,其他地方的设置发生变化,则外部值优先,分阶段的事务将被丢弃。
保存自定义预设
要重用自定义配置:
- 编辑一个或多个值。
- 选择保存。
- 输入一个唯一的预设名称。
- 选择保存并应用。

保存的预设在不同的地方和后续的Studio会话中可用。如果您输入一个已存在的保存预设的名称,操作将更改为替换并应用。内置预设名称和自定义是保留的。
当选择一个保存的预设时,删除将替换重置。删除它会移除保存的预设并立即应用理想光纤。应用的网络值在完全重新启动Studio后不会被保留。
使用脚本配置网络设置
每个网络模拟器控制对应于NetworkSettings属性,因此您可以通过插件或自动化测试驱动相同的条件,而不是通过工具栏。
| 控制 | 属性 | 描述 |
|---|---|---|
| 入站延迟 | InboundNetworkMinDelayMs | 在服务器到客户端的方向上为游戏测试连接添加延迟。 |
| 出站延迟 | OutboundNetworkMinDelayMs | 在客户端到服务器的方向上为游戏测试连接添加延迟。 |
| 入站抖动 | InboundNetworkJitterMs | 在服务器到客户端的方向上为游戏测试连接添加抖动。 |
| 出站抖动 | OutboundNetworkJitterMs | 在客户端到服务器的方向上为游戏测试连接添加抖动。 |
| 入站数据包丢失 | InboundNetworkLossPercent | 设置从服务器到客户端的游戏测试连接中数据包被丢弃的概率。 |
| 出站数据包丢失 | OutboundNetworkLossPercent | 设置从客户端到服务器的游戏测试连接中数据包被丢弃的概率。 |
直接设置这些属性会保持网络模拟器的工具栏和标签同步,因为两者都读取相同的底层设置。
测试网络敏感的工作流程
在几种条件下使用相同的可重复交互,以便差异可以归因于网络,而不是不同的代码路径或场景。
- 选择一个跨越客户端和服务器边界的玩家旅程,例如激活服务器授权的能力、接收库存更新或观察复制的移动。
- 定义成功的标准。记录响应时间、可见反馈、超时行为、修正、重复请求和恢复。
- 应用理想光纤并运行该旅程作为基线。
- 应用一个代表性的条件,例如家庭Wi-Fi或标准移动(4G/LTE),并重复相同的操作。
- 应用**糟糕的连接(3G)**作为弹性测试。确认即使更新延迟或不均匀,体验仍然可以理解。
- 仅更改入站或出站值,以隔离哪个方向暴露了问题。
- 在修复后,重复相同的运行并比较结果。
有用的问题包括:
- 玩家在等待服务器确认时是否收到即时的本地反馈?
- 重复输入是否可以提交相同的操作多次?
- 加载和进度状态是否区分缓慢工作与失败?
- 超时是否提供安全的重试路径?
- 当更新不均匀到达时,复制的移动是否仍然可以理解?
- 不可靠的更新是否可以跳过而不在屏幕上留下过时的状态?
- 在恢复到更好的连接后,体验是否能够恢复?
对于大规模比较,在开始交互之前应用条件。在运行测试期间的大幅延迟变化可能会影响拥塞控制,因此新的运行提供了更清晰的比较。
测量和诊断结果
网络模拟器改变了测试条件;其他工具有助于解释结果:
- 开发者控制台显示平均延迟和日志,可以确认连接已更改并揭示重试或超时代码中的错误。
- MicroProfiler网络捕获显示每帧发送和接收的引擎流量。使用它来识别流量峰值并确定受影响的流量是由复制、物理还是其他网络数据主导。
- MicroProfiler可以帮助区分网络敏感的延迟与同时的帧时间问题。
在比较捕获时,保持场景、游戏测试模式和观察方法一致。在糟糕连接下的单次运行可能会揭示症状,但重复的基线和受损运行更有助于测量更改是否有帮助。