服务质量
Use Quality of Service results to match players in regions with acceptable connection quality.
阅读时间4 分钟最后更新于 15 天前
服务质量 (QoS) 服务有助于动态确定客户端能够实现出色在线会话连接的地区。 Matchmaker 支持游戏客户端为匹配工单中的每名玩家提供 QoS 结果信息。QoS 结果包含客户端与 QoS 服务器(位于可能托管游戏的服务器附近)的连接质量信息。QoS 结果取决于玩家所处地区,其中包含延迟和丢包率值。Matchmaker 依据这些结果来匹配所处地区的连接质量达标的玩家。
QoS 规则
QoS 规则依据工单上的 QoS 结果来定义匹配的良好连接标准。 请查看以下示例,在此示例的匹配中,所有玩家的延迟必须低于 100:"MatchRules": [ { "Name": "QoS", "Type": "LessThanEqual", "Source": "Players.QosResults.Latency", "Reference": 100, "Not": false, "EnableRule": true }]
放宽
使用 QoS 规则时,请务必适当进行放宽,这可以确保在一个地区中的玩家群体较小时成功实现匹配。 请查看以下示例,此示例在 30 秒后放宽延迟规则:"MatchRules": [ { "Name": "QoS", "Type": "LessThanEqual", "Source": "Players.QosResults.Latency", "Reference": 100, "Not": false, "EnableRule": true, "Relaxations": [ { "Type": "ReferenceControl.Replace", "AgeType": "Oldest", "Value": 150, "AtSeconds": 30 } ] }]
使用 Unity QoS SDK
Unity 为机群提供 SDK,使 QoS 计算更加简便。以下代码片段展示了如何检索游戏客户端的 QoS 结果。HttpClient client = new HttpClient();client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", AuthenticationService.Instance.AccessToken);var fleetId = "Multiplay fleet id"; // Replace this with the fleet Id;// Fetch QoS result for the fleetvar qosResult = await GetSortedMultiplayQosResultsAsync(new List<string>{fleetId});
QoS 注意事项
队伍匹配和 QoS
对于工单上有多个玩家的队伍而言,可以通过以下策略来提供 QoS 信息。- 由队伍中的不同客户端提供 QoS 结果,然后将这些值添加到工单。
- 由队伍中的不同客户端提供 QoS 结果,取平均值,然后将这些值添加到工单。
- 提供领队的 QoS 结果。
确定可接受的 QoS 限值
大部分实时游戏都有延迟和丢包阈值,高于该阈值则可认为游戏质量降级(指游戏质量降低但技术上仍然可玩)或不可玩(指玩家无法保持连接,或游戏逻辑运行不正常)。在匹配中使用 QoS 结果可避免玩家在 QoS 较差的地区玩游戏。 在确定这些限值时,既要考虑连接质量差的玩家的体验,也要考虑和这些玩家一起玩游戏的其他玩家的体验。例如,有些游戏引擎可为延迟高或丢包严重的玩家提供相当好的体验,但这些玩家在其他玩家看来可能会处于闪现状态,导致整个游戏无法进行下去。在实际情况中,这意味着您需要处理客户端收集的各地区 QoS 结果,然后过滤掉对于玩家来说不可接受或完全不可玩的地区。- 如果玩家的最佳 QoS 结果超出游戏可接受的延迟或丢包范围,但仍在技术上可行,您可以考虑过滤掉除玩家最佳结果之外的所有结果。这样,即使匹配的连接质量不佳,也至少可以让玩家匹配到其他人。在这些情况下,对玩家进行连接质量警告有助于玩家对于游戏过程中可能遇到的问题做好心理准备。
- 如果玩家的最佳 QoS 结果超出不可玩阈值,建议您对玩家显示适当的错误消息,避免玩家进入游戏。
QoS 最佳实践
在使用 Multiplay Hosting QoS 协议时,请采用考虑以下最佳实践。- 工单中包含的每个地区的延迟和丢包值通常应为该地区内建立联系的所有 QoS 服务器响应的平均值或均摊值。在计算加权平均结果时,为最近的结果赋予更大的权重,可能会更准确地反映出当前的网络质量。
- 查看丢包和延迟的比值。例如,就实时游戏而言,超低延迟的连接通常能够实现标准游戏会话,但即便是最小的丢包率,也会对该会话产生影响。