偷看valorant的网码

大家好!

我们是Matt Dewet,GamePlay技术领先valorant.和大卫中华人民共和国科技领先地位valorant.- 我们兴奋地兴奋地与大家一起分享我们在FPS流派的优势,糟糕登记和模拟发散的情况下对我们如何解决一些常见问题的一些技术细节。

从一开始valorant开发,我们为我们制造的所有决定进行了一个指导优先级 - 玩家想要什么,以及我们如何以一种感觉令人满意的方式提供?

第一人称射击者是我们称之为“红海”的机会空间。类型中有数十种现象游戏(许多我们长大的播放) - 任何由骚乱所亚博论坛做的射手提供,需要真正区分其他人,以达到我们的期望。我们已经做了很多大赌注valorant.为了实现这一目标,我们最大的一个是我们对竞争性诚信的持续投资。

我们采取竞争诚信意味着每场比赛的结果仅由游戏中的参与者的规划和执行来决定。互联网,游戏客户端性能,骚乱服务器和其他玩家的机器永远不应妨碍每场比赛中的级别播放领域的参与者。玩valorant.应该感觉像是球员的能力和技能的自然延伸。

本文首先探讨我们在建造时记住的设计目标valorant.然后是Netcode,然后潜入技术挑战以及我们如何解决这些问题,以与我们的设计目标保持一致。如果您想阅读其他技术主题,请在我们的文章中享受雄鹿反作弊APP亚博娱乐

一些Valorant设计目标

与软件开发中的许多挑战一样,建立一个竞争力的战术射击者涉及在许多(通常竞争)设计目标中进行权衡。让我们简要介绍一些与Netcode和竞争完整性相关的目标,之后我们将看看我们拥有的一些技术挑战,以及我们如何以放大这些目标的方式解决它们。

亚博论坛游戏是公平的。

我们希望任何选择花时间掌握的球员valorant.看到他们的投资回报。这意味着防止欺骗游戏的骗子亚博论坛最大限度地减少具有更好硬件或网络的玩家的不公平优势。

挑战:设计客户端/服务器通信,以限制骗子的攻击表面区域

注意:valorant.使用服务器权威网络模型来限制可能的秘籍类型。因此,我们的客户/服务器通信围绕服务器绝不能相信客户对世界的观点。

运动顺畅且高度响应。

顺利,可预测的运动对于能够在战斗中找到和跟踪敌人的球员至关重要。服务器是对每个人如何移动的权限,但我们不能只将您的输入发送到服务器并等待它以便告诉您您最终结束的位置。相反,您的客户始终在本地预测输入的结果并向您展示可能的结果。

挑战:预测客户端的移动允许对本地输入的清晰,低延迟响应,但如果您的本地模拟和服务器模拟有任何不同意,它可能会导致故障。如果服务器与客户的视图有不同意,则它会发出更正,以使客户端恢复到同步。这可能导致玩家的相机或其他玩家的角色跳跃或橡皮筋不正确,使它们难以追踪。我们的目标是防止这些分歧完全在合理的网络条件下,并在由于网络丢失或爆发延迟导致它们不可避免时最小化它们的影响。

枪手感觉有益。

建立一个可接近的武器系统,同时允许深度掌握只是制作枪战感到有益的第一步。这里的仿真和网络层需要确保每个炮弹的结果都很容易理解(清晰的视觉反馈),并且对所有参与者感到公平。

挑战:服务器需要尊重您降落的所有离合器镜头,并清楚地清除您的错过镜头实际降落。

让球员持有领土优势。

战术射击运动员中的核心宗旨是一个持有领土的持有人的想法,平均也有优势在占领领域的球员上。这被称为持有人的优势,并且对于激励战术射击者的一些关键游戏元素至关重要:信息收集和拒绝,协调的小队运动,角度清除,以及使用能力来获得上手。

挑战:攻击者在拐角处偷看的信息需要时间来通过互联网旅行并到达防御播放器。默认情况下,这使攻击者更多的时间来发现他们的对手并排队射门。这是任何在线竞争射击者面临的挑战,通常被称为Peeker的优势,这与我们的持有人的优势直接冲突。

支持各种设置。

我们希望玩家能够竞争valorant.即使他们的网络或计算机留下了需要的东西。

挑战:给出了他们的网络,为每个玩家提供最佳体验APP亚博娱乐 。同样重要 - 我们希望防止网络或绩效问题,即一名球员遇到在游戏中影响九个其他玩家的经验。当你在玩valorant.,它应该觉得每个其他球员都在你旁边,在高端游戏机上玩。

技术细节

现在让我们讨论我们走近解决上述部分中列出的挑战的一些方式。

我们将介绍以下四个问题空间:缓解Peeker的优势,最大限度地降低模拟分歧,解决服务器上的战斗以及解决客户端问题。

缓解Peeker的优势

Peeker的优势是网络化游戏的文物,通常是围绕战术射击者竞争完整性的讨论的焦点。它是指一个有人在另一方面偷看一个角落偷看的优势。

让我们来看看帕克斯在行动中的一个剪辑(夸大了清晰度):

如果你仔细观察上面的剪辑,你会发现左边的球员围绕着角落有几个时间框架,发现他们的对手,他们的对手仍然不知道它们存在!这个网络desync对游戏玩法不好,直接核对我们的设计目标。

受影响的设计目标:游戏公平,流畅的运动,持有人的优势。

游戏公平:网络背后的网络优势

杀戮时间valorant.极低。大多数武器可以用一个良好的射击杀死。当一个玩家从角落后面偷看而且与敌人面对面,每毫秒计数。

让我们首先看看场景后面发生的事情,当耻骨绕角时,看到他们的对手拿着角度,然后火发。

偷看的球员一旦他们的电脑处理他们的输入,就可以看到控股球员并预测地将它们移到拐角处。

在以下事件发生之前,持有人不会看到帕克的运动:

  1. 移动输入从Peekers客户端传输到游戏服务器...

  2. 游戏服务器可以处理它的地方......

  3. 并将产生的运动传递给持有人的机器......

  4. 因此,持有人的客户可以应用该运动并在其新位置绘制耻骨。

同样,当帕克默击中杀戮射击时,持有人在信息遵循的那条路径遵循之前,持有人将不会看到它。当服务器处理致命的射击时,它将受害者标记为死亡,拒绝从该受害者那里的任何未来拍摄。对于持有球员赢得参与的,他们必须在有足够的时间发射拍摄,然后在从帕克尔的致命射击处理之前由服务器处理。这创造了一个短暂的窗口,受害者不知道他们被杀死,也可能会射击不会统计的。

在我们跳到数学之前,让我们谈谈那些小紫色箭头。

平滑运动:缓冲传入数据

在受控环境中,服务器和客户端可能能够在收到它时立即应用移动数据。可悲的是,互联网是一个非常不可靠的网络。数据包经常到达迟到或有时根本没有。如果模拟正在运行最新的可用数据,它会经常发现自己等待迟到或丢失的数据,并被强制预测发生的事情。错误预测使服务器和客户端仿真超出同步,这导致了字符弹出或幻灯片的视觉伪像以便重新同步模拟。

这种神器直接反对我们的设计目标的平稳运动,并且会使玩家难以跟踪移动目标。上面的紫色箭头代表了平滑不均匀传入数据流缓冲传入数据的公共解决方案。缓冲区可以随着数据来略微波动,同时向任何下游系统提供平滑的数据流。

像视频流服务等非交互式应用程序可以使这些缓冲区非常大,以隐藏相对大的网络延迟或中断。然而,对于实时游戏,缓冲是一亚博论坛种微妙的平衡行为。在缓冲传入的运动允许我们平滑网络问题时,当播放器会看到传入的移动并有效地用作额外的网络延迟时,它会延迟。

为简单起见,我们将说“缓冲”包括从从网络接收到的移动到正在处理和输出的移动的全部时间(呈现给客户端的屏幕或广播到服务器的客户端)。缓冲的持续时间直接依赖于模拟刻度率(并在客户端上呈现帧),因为:

  • 在滴定粒度下缓冲移动数据的帧

  • 移动可能会到达中帧,需要等待最多刻录到排队或处理

  • 处理的移动可能需要额外的帧以在客户端上呈现

这意味着提供高性能服务器并优化客户性能有助于减少缓冲,并让您看到世界的娇气视图!

持有人的优势:通过反应时间测量公平性

让我们回到该图表,这次专注于有助于Peeker优势的因素:

为了使这些战斗符合尽可能公平,我们的目标是最大限度地减少奇特对持有人的反应时间优势。事实上,一种表达Peeker的优势的一种方式是通过帕克尔的反应时间与持有者在被杀死之前反应的最长时间之间的关系。

对于任何一个玩家赢得参与,他们的镜头必须在另一个人之前在服务器上处理。图像中的黄色路径显示了帕克默进入视图,发现对手,并将射击输入发送到服务器。蓝色路径显示与持有人发送到持有人的运动和他们在被杀死之前发射镜头的机会。

以等式形式表示,为了在被杀害之前要处理持有人的镜头,必须是真实的:

重新排列术语和解决反应时间(持有人):

换句话说,您可以通过掌握Peeker的反应时间并将持有人的往返网络延迟减去到服务器和两侧的网络缓冲来定义持有人的持续效果如何对生存的速度。

插入数字

现在我们有一个等式来量化狂欢的时间优势,让奇怪的时间得到,让我们插入一些值以了解这一延迟实际上有多大的意义。

缓冲术语可以变得复杂,所以我们需要在此处挥动我们的手来将本文保留到合理的尺寸。As mentioned in the previous section, to keep things simple, we’ll define the “buffering” term to include all time between a move being received from the network and being output (rendered to screen for clients or being broadcast out to clients for the server).

在此简化模型中,我们将假设两个服务器缓冲帧,包括:

  • 0.5框架- 传入数据必须等到帧中放入队列中的点的平均时间

  • 0.5框架- 服务器目标实际网络缓冲,这是传入数据应该在队列(平均值)中的长度(平均)(以平滑网络不一致)

  • 1帧- 将移动和输出的全帧(广播到客户端)

对于客户端缓冲,我们将假设三个缓冲框架。除了以下情况之外,这与服务器缓冲相同的方式分解

  • 我们用于网络缓冲的客户端目标是一个完整的帧,而不是半帧

  • 客户端必须将结果呈现给屏幕,延迟GPU和交换链延迟输出。这可能会因0-2帧而变化,具体取决于大量因素,但是0.5帧延迟是合理的估计。

好吧,让我们插上这些数字:

这意味着奇怪的人比防守者更长时间〜141毫秒。考虑到人类的反应时间往往落入300ms的范围内,这是一个巨大的优势!

那么,我们可以作为开发人员尽量减少原始Peeker的优势什么?

简而言之:

  1. 我们建立了防暴直接,我们自己的互联网骨干,以最大限度地减少网络路由延迟和互联网处理时间。

  2. 我们站起来了valorant.世界各地的服务器,最终旨在向70%的球员基地提供35毫升。

  3. 我们优化了我们的服务器,为所有玩家提供了平滑的128个服务器。

  4. 我们优化了valorant.游戏客户端在大多数机器上运行60fps,从这十年和高刷新率监视器的玩家更高的帧。

  5. 我们运行使用最小缓冲的客户端和服务器,针对客户端的一个缓冲的移动数据帧,平均服务器上的一半移动数据帧。

填写128个刻度端服务器的等式,35毫秒往返网络延迟,以及以60fps运行的客户端:

通过投资降低玩家的延迟并优化我们的服务器,我们可以刮掉〜40ms(28%)我们的基线奇迹优势。

通过优化客户端性能,我们可以进一步为具有高刷新率监视器的播放器提供此功能。在更高帧率上运行的玩家将更快地看到更新。例如,在144个FPS运行将使敌人奇怪的总体优势降至约71毫秒(减少49%)!

为了帮助可视化改进,让我们来看看一名完全在封面后面的球员能够在他们的对手看到运动之前偷看。我们假设Peeker正在以最大速度运行,因破坏者而跑。

这是相当差异的,但它如何影响战斗结果?

对玩家体验的影响

早期发展valorant.,我们需要向自己证明,值得投资怜悯的优势。我们从骚乱直接和128次刻度服务器瞄准的40ms改善对游戏如何扮演有意义的影响?

为了帮助回答这个问题,我们跑了一些实验。我们通过几天的偷看情景运行了几对最高技能,均匀匹配的球员。控股球员秘密地挑选了一个位置,而偷看的球员(在他们选择的时候)从一个已知的角落偷看了开始战斗。

我们在不同的服务器标准,网络延迟,客户帧和武器的矩阵上进行了测试。我们找到了这是:

  • 在竞争竞争的最高层次,玩家反应时间之间的差异变得剃刀。在我们的实验中获胜和失去枪战之间的差异往往降低到20-50ms。

  • 即使剧本是盲目的(玩家没有被告知每轮正在运行的条件),熟练的球员都能够准确地识别小型变化(〜10ms)到奇迹的优势。20ms的差异对这些球员感到非常有影响。

  • 对于均匀匹配的球员,10毫米的奇特的戏友优势在一个与运营商的球员持有一定角度的球员和90%的人的对手用步枪偷看的播放器之间的差异。

换句话说 - 在竞争的竞争水平,反应时间的非常小的优势可以有意义地改变战斗的结果。

接近零

最小化偷看球员的原始反应时间优势对于达到我们持续的持有人的优势至关重要。骚乱正在投入大量投资于暴动直接和全球基础设施,以帮助为全球运动员带来延迟号码。同时,valorant.开发团队将继续投资进一步优化客户和服务器性能,即使新内容和功能被添加到游戏中。

渴望,我们希望融合帕克默的原始优势,但在实践中,这是一个无法到达的目标。幸运的是,在战术射击传播中,有许多设计杠杆有助于我们实现真正的持有人的优势。战斗中valorant.旨在让球员以直观的方式为略带边缘保留一个位置。

  1. 地图设计在这里起着很大的作用。作为示例,攻击者通常必须从单个入口点窥视到站点,而持有者可以选择从多个角度观察。平均而言,它将采取奇怪的时间更长,找到持有人并放置他们的十字架。

  2. 当偷窥者在角落里移动时,他们的肩膀出现在他们的头之前(更重要的是,他们的观点)。这会购买持有人几毫秒才能做出反应。

  3. 武器火灾是不准确的,而玩家正在搬家,强迫耻骨在射击或火灾前来到停靠,而不准确(并且希望最好)。完整停止需要一些时间,在此期间,持有人可以反应。

  4. 点击标记valorant.简要放缓与非致命射击击中的球员的运动。这使得持有人更容易在偷偷摸摸的球员身上获得杀戮。

这不是一个详尽的清单,但希望它说明了设计和技术的一些方式亚搏网站valorant.聚集在一起将优势朝向持有人。

让我们继续攻击另一个有趣的挑战。

最小化模拟分歧

服务器模拟与客户预测模拟之间的一些不同是不可避免的。一些丢弃的数据包或两名球员试图进入同一空间,突然,您对世界的客户的看法已经远离服务器的权威仿真。

我们的目标是开发人员可以在可能的情况下限制模拟分歧的发生和严重程度,并尽量减少对通过将两个回到线引起的玩家经验的影响。

设计目标影响:流畅的运动,支持各种设置

平稳运动:固定时间

此处的第一步是确保客户端和服务器的差异符合不导致模拟发散。运行两个5ms的物理更新返回回来产生的结果不同于运行单个10ms更新。这是由于在每次更新期间都有数量的数量集成(累积和应用)的方式。

重要的是,这意味着运行30Hz物理模拟的客户端将从在128Hz运行其物理的服务器慢慢漂移,并且需要经常纠正。为防止这一点,我们将我们的模拟更新与游戏滴答(渲染帧)分离。无论呈现帧,客户端和服务器,始终更新移动,物理和其他相关系统,使用固定的时间为:恰好每秒128次。

如上所示,以60 fps运行的客户端将模拟每帧的多个移动滴答,而较高的Frameright客户端可能会在多个帧中混合单个模拟更新。我们根据需要略微模拟未来(例如移动#408),以确保我们确切知道客户端将在帧边界处知道。然后,我们在移动更新中线性地插入世界的状态,以在渲染帧时完全绘制它们应该的位置。

现在,通过固定的移动时间步,客户端和服务器可以使苹果对苹果的模拟结果进行比较。当客户告诉游戏服务器“我只是模拟了移动#408时,游戏服务器知道究竟客户谈论的移动。

移动队列和调度

将运动分成一贯大小的块允许我们轻松传递给不同的机器。每个客户端将其输入和移动结果发送到服务器,该服务器运行自己的仿真版本,如果它与结果不同意,则会向玩家发送校正。

当服务器从客户端开始接收数据时,它建立了该客户端的时间线和自己的基础(客户端A的更新#239地图到服务器更新#400)。当每个更新从客户到达时,服务器将其插入到其队列中的相应插槽中。

还记得我们在Peeker的优势讨论中提到的网络缓冲吗?这是它进来的地方。服务器设置其基础(并根据需要调整),以维持即将到来的移动的健康队列。如上所述,我们尽可能短地保留此队列以最小化延迟,但足够长,以平滑更新到达的不均匀速率。

随着服务器前进自己的模拟,它执行每个客户端发送的队列移动,并将得到的模拟状态返回给所有客户端。但是,有时,如上所述的移动#401所示,服务器在需要时尚未收到客户端更新。在这些情况下,服务器将预测客户端将完成的内容。通常,我们猜他们继续按住在最后收到的更新中持有的任何键,因为只有几毫秒已经过去。

但嘿,有时我们会错了。偶尔客户端/服务器分歧是不可避免的。

支持各种设置:解决分歧

当服务器和客户端脱离同步时我们会怎么做?

当一个客户不同意时,我们的首要任务是最大限度地减少对其他九名球员的影响。服务器将其预测作为真理,并且该客户端被告知要调整其仿真状态返回以匹配服务器。这通常意味着立即将错误预定的字符的位置或状态调整回到应的位置。这些矫正略有,幅度小,并且仅被遇到潜在网络问题和误需的玩家看到。其他九名球员继续看到平稳的运动。

解决服务器上的战斗

在实时网络游戏中,您所看到的世界总是略有淡出。亚博论坛这会影响我们必须制作游戏的许多决策valorant.,但在本文中,让我们专注于这对战斗的意思。

受影响的设计目标:枪手感觉有奖励。

枪手感觉有奖励:确认命中注册

服务器需要时间为您发送其他玩家的信息。当它到达屏幕时,他们已经搬到了一个新的位置。当你在移动目标时发射时,你就会在他们过去的位置开火。此外,当您的输入返回服务器进行处理时,它们将进一步移动。

由于网络延迟,您将总是在服务器认为您的位置略微看到自己,您将看到其他玩家略微落后于其当前的服务器位置。当服务器听到您解雇了一击时,当您拉动触发器时,它需要将世界状态倒回到您正在查看的状态,以便准确地确定您的镜头是否降落。

亚博论坛无法解决此问题的游戏强制播放器以可变金额(基于服务器的单向网络延迟)在移动目标上引导他们的镜头。这对玩家来说是不行性的,我们的目标是我们奖励枪战的目标。

幸运的是,正如我们在上一节所述的那样,客户端和服务器知道它们的移动时间表是如何同步的。这使客户可以在射击射击时确切地发送他们正在查看的模拟中的时间。

在合理的网络条件下,这允许近乎完美的命中注册。也就是说,客户的预测几乎总是同意服务器关于射击降落的地方。钉钉这对枪战感到清脆和有益至关重要。

对服务器愿意倒带的仿真速度进行速度进行速度的速度来说也很重要。没有限制,一个有500ms延迟的玩家可以在你搬到封面后半秒杀死你。我们调整了这些限制以防止滥用,同时允许每个地区的绝大多数玩家与近乎完美的命中登记一起玩。

解决客户端问题

我们已经表示,我们希望避免让一名球员允许一个糟糕的网络设置或硬件影响其他玩家的经验,但这并不意味着我们将这些球员留在高干燥!

受影响的设计目标:支持各种设置

支持各种设置:性能监控

我们无法从我们身边解决玩家的硬件问题或网络问题,但我们可以帮助他们自己识别和解决这些问题。为此,我们将性能监控工具直接建立在游戏中,以及检测到网络或性能问题时出现的警告指示灯:

我们的希望是,武装参与者提供有关导致游戏内问题的更多信息,使他们能够更轻松地帮助自己(例如,切换到有线连接以减少数据包丢失)。

我们还提供具有选项来更改客户端网络缓冲量的选项,以使更短潜行的运动与降低延迟之间的权衡,这取决于其本地网络条件可以支持的内容。

期待

我们希望这篇文章一直是一个有趣的窥视在建立一个竞争战术射手的一些技术。

我们对游戏降落的地方感到满意,但我们刚刚开始。在近期,我们继续投资于改善游戏绩效并在世界各地的服务器上站立,以向更多球员提供35毫米的延迟承诺。我们还提供了改进,以澄清周围的目视返回登记,以便玩家可以更容易地理解他们的镜头在打击热量的地方。我们的整个开发团队致力于改进valorant.随着我们的球员,多年来推动竞争诚信的界限。

谢谢你的阅读,而GLHF在那里!随意发表评论下面。

由Matt Devet和David发布