网路游戏之物理模拟

笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,已出版书籍:《手把手教你架构3D游戏引擎》电子工业出版社和《Unity3D实战核心技术详解》电子工业出版社等。

CSDN视频网址:http://edu.csdn.net/lecturer/144

目前市面上的网络游戏,竞技游戏逐渐成为主流,这样也就出现了大家经常热议的帧同步策略,本博客将做一个系列文章分别介绍:帧同步,快速插值,状态同步等。游戏中的物理模拟一直是同步中的难点,本篇博客先给读者介绍几个物理碰撞的案例,然后在后面的系列文章中给读者提供解决方案。

为了能让读者更好的理解同步策略,我们将花点时间探索一下网络的物理模拟,在这里我已经在开源物理引擎ODE(官方网站:http://www.ode.org)中设置了一个立方体的简单模拟, 玩家通过在其质心中施加力量来移动, 物理模拟采用这种线性运动,并且当立方体与地面碰撞时计算摩擦力,引起滚动和翻滚运动,这些运动我们在后面的系列文章中会用不同的同步策略去模拟它的物理表现。先看如下的效果图:

网路游戏之物理模拟_第1张图片

这就是为什么我选择一个立方体而不是一个球体我想要这种复杂的,不可预测的动作,因为刚体通常根据其形状方式移动。

当玩家与其他物理模拟对象进行交互时,特别是当这些物体推回并影响运动时,网络物理学将变得非常有趣。所以让我们添加一些更多的立方体进行模拟:

网路游戏之物理模拟_第2张图片

当玩家与立方体集进行交互时,会变成红色当这个立方体停止时,它变成灰色(不相互作用)。再给读者看一幅图:

网路游戏之物理模拟_第3张图片

你可以看到,互动不仅仅是直接的, 由玩家推送的红色立方体也会转动其他立方体,通过这种方式,互动可以覆盖所有受影响的立方体对象。

我也想要一个非常复杂的运动,在玩家和非玩家的立方体之间,它们成为一个系统:一组刚体通过约束连接在一起。为了实现这一点,

我认为如果玩家可以滚动并创建一个立方体的球,效果如下所示:

网路游戏之物理模拟_第4张图片

玩家的一定距离内的立方体具有向立方体中心施加力以使这些立方体保持一个物理模拟。

       如果在网络中模拟这些物理效果是有一定困难的,但是我们可以使用不同的网络同步方式模拟出上面的物理效果并且做到不同玩家的同步。我们将在后面的系列文章中给读者介绍网络物理模拟实现方案。。。。。。。。






你可能感兴趣的:(3D引擎)