游戏技巧的技巧,以避免处理网络滞后补偿?


20

实施网络滞后补偿很难,如何避免呢?

也许可以使用技巧并建立游戏机制,从而将滞后视为非关键甚至是游戏的自然组成部分?

这些技术是什么,是否有使用这些技术的现有游戏(MMORPG,策略等)?

更新:

回合制游戏不需要时滞补偿,但是有趣的是可以看到实时的方法(或者仅仅是实时的印象,这是重要的部分-不应阻止用户并强迫其等待)。

我避免滞后补偿的主要原因是简单性。



6
如果您要开发一款不会引起延迟的游戏;考虑建造一些可以回合的东西,可以接受几秒钟。
沃恩·希茨(Faughan Hilts)2013年

3
Valve链接全都涉及实现网络滞后补偿的相当复杂的方法-因此,这与问题的提出恰恰相反。
Kylotan

@JohnMcDonald Yep,我知道Valve的那篇文章,正如我提到的那样-这与我要问的相反:)
Alexey Petrushin

您可能还想看看GGPO:ggpo.net
Decency

Answers:


16

客户通常会实施某种反馈以使玩家立即知道他们选择的动作已被注册,例如:

  • 界面声音(例如,单击按钮)
  • 声音(例如,一个角色说“立即,指挥官”)
  • 动画(例如开始挥剑)

这些可能在信息传输到服务器时发生,因此播放器尚未意识到其动作尚未开始。只要服务器迅速答复并且操作确实很快开始,播放器就可能不会注意到延迟。

这些技巧在游戏中很少有玩家输入的游戏中起作用,因此等待输入生效的时间只占游戏总时间的很小一部分。因此,您可能想找到构造游戏的方法,以便玩家减少输入。这可能意味着使玩家的动作更加抽象,并使游戏实现低级的行为。例子:

  • 用路径力学代替转向力学
  • 用目标选择机制代替瞄准机制
  • 用更多的战术或战略计划代替全面的作战指示
  • 用基于离散/回合的系统代替实时/连续游戏

1
谢谢,您使我被问到的问题形式化了-使用玩家不常出现的延迟输入。看到使用它的实际游戏会很有趣。
Alexey Petrushin

2
数以百计的游戏以某种方式使用了此类功能,但最有可能是由于其他原因而进行的,但存在滞后效应。
Kylotan

7

随意的想法:

  1. 作弊:使用火箭。火箭爆炸成半径,掩盖了任何怪异之处。
  2. 作弊:预先确定结果并强迫情况以视觉方式发生
  3. 作弊:攻击要花时间,在atk + anim + result不连续中隐藏延迟
  4. 作弊:断开本地反馈与网络连接
  5. 作弊:大量的视觉特效或屏幕活动,涵盖了所有怪异之处。
  6. 使用需要解决的动作-反应设计,然后再继续

是的,骗了很多。


4

答案很简单-制作没有时间要求严格的游戏。您出于某种特定原因而希望避免实施这些类型的插值,这意味着您不必担心抽动和快速玩法。这对于包括《文明》(这是一种战略游戏)在内的许多游戏都是完全可以胜任的。但是,请理解这对于实时策略游戏是不可接受的,在实时游戏中,您需要在可变的时间通过网络传递大量数据。如果您想围绕高延迟网络设计游戏,请考虑以下事项:

  1. 建立回合制游戏。在这些类型的游戏中,不需要实时输入状态,其他玩家只需在轮到他们时将游戏状态推入其客户端即可。这样可以减少网络上的压力,并且如果需要的话,甚至可以延迟几秒钟。文明是一种基于回合制的游戏,在策略上非常受欢迎。
  2. 将其他参与者的决策影响降到最低。如果您的游戏具有策略性且不能玩回合制游戏,请考虑减少延迟数据包的影响。客户可以进行大部分模拟吗?一个示例游戏是一个策略游戏,该游戏单独玩了一段时间,然后说了16分钟,然后与另一名玩家进行了模拟(也许是格斗游戏,其中玩家每隔x个间隔派遣部队并每隔y个间隔报告一次)。

我希望这至少可以有所帮助;不知道您确切的游戏想法很难。我认为您有理由围绕这种模式创建游戏(简单性,节省带宽,降低网络复杂性)


4

您也可以出于“现实主义”的考虑而将滞后作为游戏玩法的一部分。假设您的播放器是要从远处控制某些机器人,则可以强制将时滞至少为500ms或1s(您必须实现一些动态的时滞填充系统)。


这是一个很好的扭曲
O0' 。

0

简单地隐藏玩家的动作也是一个不错的技巧。许多FPS游戏正是这样做的。它们不会显示大多数子弹的任何视觉效果,只会播放声音,您会以对玩家造成伤害的形式得到结果。

我玩过一些FPS游戏,其中高精度武器(狙击手等)具有非常清晰的视觉效果,您实际上可以看到其他玩家在您身后开枪,但是由于滞后补偿,您被杀了。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.