热门
《Chasing the Unseen》用分形数学生成环境
Strange Shift Studio是一家个人独立游戏工作室,由Matthieu Fiorilli于2022年在蒙特利尔成立。
《Chasing the Unseen》是一款关于攀爬巨型生物并探索异世界环境的游戏。游戏中的环境都是用分形数学生成的。作为一名个体游戏开发者,我知道开发这样一个野心勃勃的项目需要合适的工具。在这篇技术博文中,我将概述自己是如何应对《Chasing the Unseen》中的这些挑战的。
过去几年,那些赋予独立开发者强大能力的工具取得了长足的进步,最近,实现这类项目终于成为了可能。感谢Epic和SideFX等公司的不懈努力,让任何人都能取得这些强大的工具,这个项目也因此得以实现。
为了完成这个雄心勃勃的项目,我知道合适的工具是必不可少的,而我正是在虚幻引擎和Houdini相辅相成的关系中找到了我所需要的东西。
生物
首先,我们来看看生物和攀爬系统。
我的生物是在Houdini中使用各种工具制作而成的。以章鱼为例,我使用了Houdini的传统工具,以程序化方式为它建模,然后使用Houdini最近推出的多解算器Vellum进行模拟。模拟为我带来了非常自然和流畅的变形。接下来的挑战就是将它导入虚幻引擎,并添加可攀爬功能。为了完成这项任务,我使用了Dem Bones这款强大的工具。我在Houdini中的章鱼模拟太过复杂,几何体的每个点都有自己的动画,所以此时,我不能简单地将它放到游戏引擎中。Dem Bones的作用是以程序化方式生成一组骨骼和皮肤,以便使用对游戏引擎友好的数据重建模拟。这样一来,章鱼的128000个顶点/点就不需要都具备动画了,我只需确保大约600根骨骼拥有动画即可。
使用Dem Bones烘焙的Vellum模拟
然后,我可以将这只生物导入虚幻引擎,并实时回放。我在这里使用状态机混合了不同的动画。基于通过Dem Bones生成的皮肤信息,我能够以程序化方式生成用于碰撞的凸包,然后通过自定义工具将其导入虚幻引擎。
虚幻引擎中的碰撞网格体
我生成了较低分辨率的网格体,将它导入虚幻引擎,实现攀爬功能。为了将角色连接到生物身上,我结合使用蓝图和C++,让攀爬系统能够使用较低分辨率的网格体。
使用蓝图和C++的攀爬系统
环境
在环境方面,我使用了分形数学和其他程序化技术。分形是一些简短的数学公式,能够生成无限自我重复的形状。其中最著名的是曼德博集合。
曼德博集合是以本华·曼德博的姓氏命名的2D分形。在它被发现的数年后,人们又发现了一个类似的3D版本:曼德尔球。
这就引出了一个问题,如何将分形添加到游戏中?通过将Houdini和虚幻引擎结合起来,我成功地解决了这个问题。在Houdini中,我使用Juraj Tomori的毕业项目“视效分形工具包”生成分形,然后围绕它开发了一套几何体制备管线,为在虚幻引擎中添加分形做好准备。这套管线可用在分形和其他程序化网格体的生成方法中(取决于关卡)。
为游戏关卡生成的分形网格体
为了做好准备,将分形添加到虚幻引擎中,我必须完成许多不同的任务:去掉非常小的细节;创建平坦的可行走斜面;将网格体分割成块,以便在UE中实现正确的遮蔽;简化网格体;生成LOD、UV和光照贴图;等等。这个过程是完全自动化的,并且经过定制,符合虚幻引擎的要求。
最后,在完成所有这些过程之后,我会在虚幻引擎中构建关卡,并使用光照系统烘焙光照贴图。由于关卡被分成了多个部分,虚幻引擎的遮蔽系统只会绘制我们在摄像机中看到的网格体,这样很好。而虚幻引擎的LOD系统会根据与摄像机的距离,以我所需的密度绘制网格体。对于碰撞,我生成了单独的低分辨率网格体。
结束语
我在这里概述了我如何处理游戏中的生物、攀爬和关卡。以上就是我在整个游戏开发中所使用的核心工作流程,在需要时,我也可以为每个生物或关卡引入不同的变体。
为这些项目挑战想出解决方案非常不容易,但是作为一名独立开发者,我可以自由、灵活地使用最新工具实现我的目标。我希望这篇文章至少能够在总体上帮助大家了解这个项目的技术流程,并对大家有所启发,让大家认识到现有工具的能力范围。
本文转自虚幻引擎官网~
电话:010-50951355 传真:010-50951352 邮箱:sales@souvr.com ;点击查看区域负责人电话
手机:13811546370 / 13720091697 / 13720096040 / 13811548270 /
13811981522 / 18600440988 /13810279720 /13581546145