浅谈独游一帆风顺的开发成果

浅谈独游一帆风顺的开发成果

一、简介

Solo Tour的发展绝对不是一帆风顺的。仅仅是战斗技能的碰撞,就让笔者踩了不少坑。幸运的是,这段时间的努力终于得到了回报。今天,我来总结一下这个阶段的成果。

2. 探索计划

和大多数人一样,在做这件事之前,先研究一下是否有直接可用的计划,使用它可以大大节省时间(毕竟一个人旅行有很多重要的事情要做,你可以节省一些时间。时间是其中之一'钟)。

先说要求:

碰撞逻辑是独立的,可以同时应用到服务端和客户端,以后需要同步;支持定点计算,减少误差;仅需2d碰撞,优化好,可支持扇形、多边形、矩形、圆形等常用技能形状;具有良好的可视化编辑界面,方便调试。

接下来,探索成熟的解决方案。

2.1 Unity自带物理引擎

首先当然要考虑Unity自带的物理引擎,但是因为不能应用到服务器端,性能也不是很好,所以碰撞体会有点卡死,作者无法对其进行优化表现,但也只能过关。

c 游戏开发书籍_游戏开发碰撞检测书籍_node开发游戏书籍

2.2 成熟的物理引擎

接下来,我们来看看github上比较有名的物理引擎。在网上搜索后,我找到了两个合适的物理引擎贴图笔刷,一个是处理2d碰撞的Box2D,另一个是处理3d碰撞的Bullet。链接如下:

由于作者的碰撞类似于moba类型,是自顶向下的平面,所以不需要考虑3维游戏开发碰撞检测书籍,所以只尝试了Box2d。如果我想跑,还有很多问题需要解决。笔者参考以下链接,成功运行Box2d小demo,感觉很好,很强大,功能真的很强大,不过转念一想,作者的技能释放系统不需要那么多特殊的物理效果,只是用来检测是否有碰撞,而且这个方案有点矫枉过正,转化为定点碰撞还是需要改很多东西,而且不支持很多我想要的形状,比如扇形,空心扇形和圆形,所以我暂时搁置了这个计划,但是因为它真的很强大,

2.3 自定义碰撞检测解决方案

客户端和服务器之间的计算往往会受到精度的影响,从而导致数据不一致。因此,在同步时,往往将浮点数转换为定点数,这样误差会大大降低。这也是无数老板总结的经验。另外,作者想实现复杂的技能形态检测和自我优化的需求,所以决定自己实现一套。

通过一系列的研究和思考游戏素材下载 免费,作者最终确定了以下解决方案:

首先游戏开发碰撞检测书籍,碰撞检测分为粗检测和细检测。但是,当游戏中有大量物体需要碰撞检测时,对每个物体进行精细碰撞检测的性能开销无疑是非常巨大的。因此,需要通过空间划分将世界分成几个小块,对可能发生碰撞的物体进行初步筛选,这样可以大大降低计算复杂度。由于技能碰撞检测,目标单位往往会更频繁地移动,目标所在的空间也需要经常变化。笔者觉得将世界划分成均匀网格的空间划分方法比较合适,划分算法也比较多。,您可以参考下面的链接。(笔记:这篇文章的重点其实是后续的精细碰撞和aabb粗检测。关于这部分,如果以后有特别的想法,会单独介绍)。

c 游戏开发书籍_游戏开发碰撞检测书籍_node开发游戏书籍

其次,空间划分之后,需要判断碰撞的物体大大减少了,但是精细碰撞还是很费钱的,所以在这一步,我们需要先检测bounding box的碰撞。边界框可以是圆形或 AABB。作者选择AABB,因为它的操作更简单;(注意空间划分也是用物体的AABB边界框划分的);

同样,当AABB边界框检测到对象时,需要对其进行精细检测。对于这部分,作者主要使用分离轴算法来实现,效率还不错。对于GJK算法等更多算法,作者后续会进行深入研究,大家可以继续关注。算法介绍请参考以下链接。值得注意的是,作者还在下面对其他算法进行了说明。如果你有兴趣,你可以了解更多。

最后,关于可视化编辑调试界面,笔者决定使用odin插件和scene gui来实现。

3、效果展示

首先让大家看看大致的效果,继续了解后续内容!作者的界面效果其实是指下面链接中github库的界面效果,并在此基础上做了一些调整,在此表示深深的感谢!

3.1 2D 碰撞编辑界面介绍

碰撞编辑界面如图1所示,分为以下两部分:

node开发游戏书籍_游戏开发碰撞检测书籍_c 游戏开发书籍

1.基本设置:

画线管理器:编辑后的碰撞体将在该物体的坐标系中绘制;对撞机类型:目前有 3 个简单的对撞机。该模式下只有一个碰撞数据,可以是圆形、多边形、矩形、线段;复杂对撞机,该模式支持多个简单对撞机的组合;hollow complex collider,基于complex colliders,支持hollow area,这部分有点不切实际,实现起来有点困难,还没处理,先把思路列在这里;collider 数据文件,碰撞数据的二进制流数据。

2. 碰撞数据:

简单的collider数据:与collider类型一一对应,存储collider数据,在sceneui中辅助绘制collider;是否受角色方向影响:如果为true,则碰撞器的位置受角色局部坐标系影响,否则只与世界坐标系关联;Collider type:当前collider类型,以下是每个具体collider的参数。

c 游戏开发书籍_游戏开发碰撞检测书籍_node开发游戏书籍

图1 Collider 编辑界面 3.2 Collider 具体数据配置

1.线段

游戏开发碰撞检测书籍_node开发游戏书籍_c 游戏开发书籍

线段碰撞体的编辑方法如图2所示。

c 游戏开发书籍_node开发游戏书籍_游戏开发碰撞检测书籍

图2 线段碰撞体编辑

2.矩形

游戏开发碰撞检测书籍_c 游戏开发书籍_node开发游戏书籍

图3 矩形碰撞体编辑

3.多边形

c 游戏开发书籍_node开发游戏书籍_游戏开发碰撞检测书籍

node开发游戏书籍_游戏开发碰撞检测书籍_c 游戏开发书籍

图4 多边形碰撞体编辑

四、圆和扇形

node开发游戏书籍_c 游戏开发书籍_游戏开发碰撞检测书籍

图 5 圆形对撞机编辑 3.3 对撞机检测界面

为了更好的测试各种碰撞情况,作者开发了如下碰撞检测接口,下面是多边形和空心扇区的碰撞检测案例。

游戏开发碰撞检测书籍_node开发游戏书籍_c 游戏开发书籍

图 6 Collider 检测测试界面 四.结论

空间有限。在这篇文章中,作者介绍了大致的思路和效果。在下一篇文章中,作者将深入分析具体的碰撞思路和作者踩过的坑。有兴趣的朋友可以关注!