gpt4 book ai didi

actionscript-3 - 有什么方法可以在 AS3 中实现确定性物理?

转载 作者:行者123 更新时间:2023-12-04 06:37:39 25 4
gpt4 key购买 nike

似乎 Box2D for actionscript 3 不是确定性的,这意味着,在多人游戏中,物理学在决定谁赢/输方面起着重要作用,如果每个用户的微处理器来自不同的技术(例如英特尔和 AMD)。

那么,有没有办法在 AS3 中实现确定性物理?以前实现过吗?

谢谢。

最佳答案

我曾经遇到过这个问题。

我们在 Shockwave Director 中使用 Havok 引擎来模拟逼真的 2 人 3D 撞球游戏。

为了准确性和安全性,最好在服务器上进行处理。但是,我负担不起任何服务器端物理处理,即使启动参数相同,客户端处理也会为不同的客户端提供不同的结果。

我们的案例并非 100% 适用于任何多人游戏,但可以进行调整。这是一款回合制游戏,每个玩家都进行一次击球,球由 Havok 处理,并且两个玩家都必须看到相同的最终结果。

所以,我们做了以下事情:

  1. 轮到他的玩家是领头玩家。他进行罢工。他的击球数据(击球力、球杆位置和旋转)被发送到服务器,并从服务器发送到第二个玩家。
  2. 两个玩家都在本地进行模拟。它们都具有相同的罢工数据,因此结果将大致相同。
  3. 领先玩家的模拟停止后,他将最终的球位置发送到服务器,然后服务器将它们发送给第二位玩家。一旦第二个玩家模拟停止,他就会使用领先玩家的数据调整最终球的位置。这看起来就像球已经停止,然后跳到稍微不同的位置。

总的来说,这看起来不太顺利,但它会确保玩家在每个回合开始时看到相同的游戏配置。

将此方法应用于更通用的多人游戏(例如,没有回合的连续 Action ,超过 2 个玩家)可以完成类似的事情:

  1. 选择(可能是随机的,也可能是基于一些特定的数据,如延迟等)一个领导者。
  2. 收集所有玩家的所有 Action 数据,在本地运行他们的模拟。
  3. 不时为领先玩家制作数据快照,并通过服务器更新将其发送给其他玩家。其他玩家必须根据接收到的数据调整他们的模拟(改变物体的位置以及它们的角度、脉冲等)。更频繁地进行快照会导致更流畅的模拟,但会增加流量。

关于actionscript-3 - 有什么方法可以在 AS3 中实现确定性物理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24591975/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com