Unity帧同步的探索之路二 不靠谱的Unity物理引擎

本文探讨了Unity帧同步中使用内置物理引擎可能导致的不同步问题,由于浮点数计算在不同平台产生差异,使得碰撞结果不稳定。测试表明,即使在严格同步条件下,Unity物理引擎仍可能造成浮动误差。因此,建议在帧同步场景下使用定点数物理库以确保各平台一致性,或者在关键碰撞检测中采用定点计算。
摘要由CSDN通过智能技术生成

作者介绍:铸梦xy。IT公司技术合伙人,IT高级讲师,资深Unity架构师,铸梦之路系列课程创始人。

Unity帧同步的探索之路二 不靠谱的Unity物理引擎

1.为何不靠谱?

众所周知,在使用帧同步的情况下最好不要使用Unity自带的物理引擎。

具体为什么不同步,网上给出的答案全都是会造成不同步。

因为Unity自带的物理引擎内部是由浮点数参与计算的,而浮点数在不同平台产生的结果也不一样,就导致了结果有所浮动,且不一致,所以就造成了不同步。

因此就衍生出了定点数

而帧同步为了保证各平台同步的情况下,则必须使用定点数。

虽然说网上都说要使用定点物理库来保各平台的一致性。

但肯定会有不少人会去巧妙的构想:在使用定点数保证两名玩家位置一致,旋转一直,操作一致(在同一帧)的情况下,也就是绝对同步的情况下,使用Unity自带的物理引擎,进行碰撞,会不会得到相同的结果。

带着这个思想,咱们就去探究一番Unity物理系统的计算会不会造成不同步。

2.测试环境

1.首先保证两个客户端:

  • 位置一致
  • 旋转一致
  • 输入一致

2.然后在角色的武器上添加Unity的BoxCollider,在角色身上添加刚体,达成碰撞条件。

3.攻击时通过武器碰撞敌方玩家的回调,来播放对方玩家的受击动画。目的就是为了测试碰撞算法的准确率。

3.碰撞演示

下面是测试效果:
在这里插入图片描述

在这里插入图片描述

4.测试结果

在同一台电脑的模拟器上 进行了多次测试,保证两个玩家位置、旋转、输入、一致的情况下,碰撞算法得到的结果却不稳定,有不小的浮动性。有时结果一致,有时结果不同,甚至在一致结果的情况下会出现两种不同的表现结果。
猜测是物理系统内部浮点数导致计算结果具有上下浮动值,从而产生了在一台设备上的结果不同。

所以帧同步最好还是要使用定点数物理库,否则游戏过程中出现一个不同步,就会影响后续的计算。

或者在击中判定采取定点物理计算的方式,来保证不同不平台下的结果一致性。

所以在帧同步中,还是要避免掉一切有关于float浮点数相关的计算,否则会造成不同步问题。

下一篇:案例视屏地址:帧同步卡牌放置手游案例

文章来自于铸梦老师,铸梦之路系列课程。
想了解更多框架、帧同步技术、UGUI优化相关技术可在企鹅kt搜索 铸梦xy。

### 回答1: Unity帧同步插件是一种用于在Unity游戏引擎中实现帧同步的工具。帧同步是为了保持多个客户端之间的游戏状态同步而存在的技术。在多人游戏中,为了让不同玩家在不同的设备上有相同的游戏体验,需要确保每个客户端上的游戏状态保持一致。 Unity帧同步插件为开发人员提供了一套易于使用的方法和工具来管理游戏状态的同步。通过使用这些插件,开发人员可以在不同的设备上实现帧同步,保持所有玩家的游戏状态同步。这包括玩家的位置、动作、碰撞等。插件还提供了一些额外的功能,例如控制网络延迟、处理断线重连等。 使用Unity帧同步插件有几个步骤。首先,开发人员需要在游戏中定义同步的对象和属性。然后,他们可以使用插件提供的方法来处理同步逻辑,例如发送和接收同步消息。最后,他们可以使用插件提供的工具来测试和调试帧同步的性能和稳定性。 Unity帧同步插件的优势在于它减少了开发人员的工作量,并提供了一套完整的解决方案来处理帧同步问题。它还提供了一些性能和稳定性的优化,以确保游戏在不同设备上都能正常运行。总之,Unity帧同步插件是一种非常有用的工具,可以帮助开发人员轻松实现游戏状态的同步。 ### 回答2: Unity帧同步插件是一种在Unity游戏开发中使用的工具,用于实现多个玩家在不同设备上的实时同步。它主要解决了在多人游戏中的网络延迟和同步问题。 通过Unity帧同步插件,游戏中多个玩家的行动和动画能够在各个设备上同步进行,保证了游戏的整体一致性和公平性。它采用了一种基于服务器的架构,通过将玩家的操作输入发送到服务器,然后在每个设备上进行处理和渲染,实现了实时的游戏同步。 在使用Unity帧同步插件时,需要先设置服务器和客户端之间的通信。服务器负责接收和处理玩家的输入,然后将结果发送给客户端进行渲染。为了保证游戏的流畅性和准确性,插件会对延迟进行预测和校正,确保所有玩家在游戏中的操作都能够及时生效。 除了同步玩家的操作之外,Unity帧同步插件还可以同步游戏中的其他数据,例如位置、速度、状态等。这些数据也会通过服务器进行传输和同步,保证了游戏的整体一致性。 总之,Unity帧同步插件是一种非常有用的工具,可以解决多人游戏中的网络延迟和同步问题。它能够确保游戏中的多个玩家在不同设备上可以实时同步,提供了更好的游戏体验和公平性。它在Unity游戏开发中的应用非常广泛,是开发多人游戏的重要工具之一。 ### 回答3: Unity帧同步插件是一种用于实现多人游戏中玩家间行为同步的工具。当多个玩家同时参与游戏时,每个玩家都需要在自己的设备上独立计算游戏逻辑,并将自己的操作结果同步给其他玩家,以实现游戏的正常进行。 Unity帧同步插件通过在每帧开始时,将每个玩家的操作发送给服务器,并由服务器中立地计算得到每帧的游戏状态。然后服务器将这些计算结果发送给每个玩家,以保证每个玩家都能够在自己的设备上以相同的帧同步进行游戏。 Unity帧同步插件的实现过程中通常会使用到各种同步技术,如状态同步、输入同步、事件同步等,以保证每个玩家在游戏中的行为能够同步到其他玩家的设备上,从而实现游戏的公平性和可玩性。 使用Unity帧同步插件可以方便地实现多人游戏的开发,减少开发者在网络同步方面的工作量。同时,Unity帧同步插件还可以提供一定程度的防作弊机制,保证游戏的公平性。 总而言之,Unity帧同步插件在多人游戏开发中起到了重要的作用,它能够方便地实现玩家之间的行为同步,提高游戏的可玩性和公平性。开发者可以根据自己的需求选择适合的帧同步插件,并结合其他技术手段来实现更优秀的多人游戏体验。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

铸梦xy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值