客户端预测和带时序输入的服务器对帐

时间:2016-08-14 14:21:43

标签: javascript client-server real-time game-physics prediction

我有一个关于客户端预测和服务器协调的问题。 这个家伙的第一个解释很好地解释了这一点: Client-side prediction & server reconciliation

我在游戏中为简单的动作做了很好的实现:

第1帧:

  1. 客户应用 输入并将其推送到 selfInputs 数组
  2. 更新他的州
  3. 呈现他的状态(预测
  4. 第50帧:

    1. 客户端从服务器收到旧的更新状态(从过去的100毫秒)。此状态包含服务器
    2. 上次处理的输入
    3. 更新他的州(权威服务器
    4. 客户删除 selfInputs 数组中服务器处理的所有输入
    5. 客户重新服务器尚未处理的所有输入 selfInputs 数组。
    6. 现在,我对需要冷却时间的输入有疑问。我希望玩家不能移动'使用' 技能'时持续1秒。

      让我们举个例子:保持'移动'在3秒内,然后应用技能'。对帐在500毫秒后结束

      我试过了:

      1)使用全局var' usingSkill = true'和' lastSkill =新日期()'在步骤1(!usingSkill是移动的条件)。这无法进行对帐,因为它需要重新应用'移动'输入。

      2)使用' usingSkill = true'和' lastSkill =新日期()'作为步骤1中更新状态的成员。'移动'已完成对帐,但重新应用了冷却时间 - > 1.5秒的冷却时间 - > ' lastSkill =新日期()'无法重新申请

      解决方案?

      谢谢!

1 个答案:

答案 0 :(得分:0)

变量timeUntilAllowingMovement(或沿着这些线的东西),每一帧,消除从它传递的毫秒,当它是<= 0时,你可以允许移动,当它是{{1}时},不允许移动。