木偶大师——银河破裂者的AI系统


银河破裂者是一款动感十足的游戏。在探索你发现自己所在的外星星球时,你永远不会真正安全。即使你躲在基地的墙后面等待漫长又危险的夜晚,依然挡不住成千上万想把你开膛破肚的敌人。生成成群的外星生物问题不打,难的是让它们以真实可信的方式活动。我们想向您展示开发人员必须采取哪些步骤才能使他们的游戏世界真实而生动。

本文也以视频博客形式提供。你可以在这里观看:


即使你的目标是让成千上万的敌人同时攻击玩家,你也必须少数几个敌人开始设计。下面介绍的是银河破裂者的首批原型之一。原型非常简单,甚至物体的比例也是错误的,但对于原型设计足够了。黄色立方体代表敌人,你可以看到他们正试图找到并追随玩家。当时,我们试图使用我们在僵尸车车中使用过的的生物碰撞检测系统。每个敌人在碰撞体前方都有3条raycast检测碰撞体,以避开其他实体和建筑。

它可能不漂亮,但这就是木偶大师在2018年初的样子。

好吧,即使它似乎工作得很好,算法也有点过时了。这根本不够好。我们希望我们的生物快速而愤怒,而不是笨拙。我们去除了所有的raycast,开始使用引力和斥力。这给了我们更好的运动,这是我们未来工作的第一步。在那段时间里,我们尝试可能的数学和物理算法,并测试我们所有的想法。在这个例子中,几十个敌人正在追逐玩家,而他们在墙壁之间回旋。敌人穿过狭窄的通道,一旦到达空地,就会再次扩散开来。整洁,一切似乎都很好,但这只是一个开始。

别想抓住我!


任何游戏如果只有一种类型的敌方单位,都会很快变得无聊。即使在吃豆人中,每个鬼魂的行为方式也独一无二。(真的!查看此文章)。加拉蒂亚37号星球是多个物种的家园,它们彼此不同。
还有一条重要的规则。如果一个系统可以处理一件事,那么它也必须能处理许多事。我们需要测试算法如何处理大小和速度不同的生物。他们会互相粘在一起吗?他们能够避开所有世界物体吗?这时需要测试许多问题。唯一的办法就是把每一个想法和解决方案都实现。看!我们向您介绍 ultimate Canoptrix, Arachnoid and Hammerroceros rush!(它们一点也不慢,只是慢动作)
 

在几何测试之前,学生噩梦的准确可视化。

现在是第一次测试战斗能力的时候了。在这一点上,我们有点厌倦了看着彩色的立方体在灰色空间中奔跑,所以我们用僵尸车手中狗的模型替换了橙色立方体。在这个片段中,你可以看到狗试图攻击玩家,但是,有一些防御塔挡在路上。怪物和塔进行的攻击以红色和绿色的立方体为象征,您可以看到它们飞来飞去。这不仅是对寻路的考验,也是对攻击优先级的考验。我们可以命令敌人首先攻击玩家,能源建筑,防御工事或其他建筑物。玩家是这里的首要任务,但如果有什么东西挡路,它也会被摧毁。

这是银河破裂者中众多史诗战役中的第一场。


到目前为止,我们向您展示的所有内容在规模上都非常小。这并不能使我们满意。我们希望您在玩银河破裂者时能感受到星际飞船部队的感觉 —— 一次攻击数千个敌人。我们设置这个场景是为了检查各类生物在地图各处位置生成时的行为。红色方块表示将它们推开的流场,这是解决碰撞问题的一种非常快速的方法。他们都有一个共同的目标——摧毁人类基地。这些单位将不可避免地在途中相遇 -——让我们看看会发生什么。

这些单位在前往共同目标的路上融合在一起,尽管起点不同


尽管这些单位受到悬崖和坑状地形障碍物的限制,但单位设法融合在一起,并没有阻挡彼此通往目标的道路。当他们遇到极其狭窄的位置时,他们仍然会抖动并试图将自己定位最佳位置。这就是最终使外星部落变得既可怕又美丽的原因 ——模拟一群生物体,而不是机器人,等待轮到他们穿过通道。

随着模型和动画的更新,一切都开始变得有意义。

目前一切都还不错。不过还有一件事没做。如何达到类似星际争霸的单位水平的炫酷移动?在星际争霸中,一切都移动得如此平稳和快速,没有延迟。好吧,我们尝试了很多东西。祈祷,看电视,看漫画书。你猜怎么着,这对我们没有多大帮助:(但有一天,我们的程序员在和他儿子一起玩时找到了解决方案。他们把小球放在一个桶里,摇晃它们。每一次球都能自动填满桶里所有的空隙。这是什么神奇的力量在起作用?答案是重力。通过将每个生物的独特重力与其非常简单的软体模拟相结合,我们最终获得了类似于星际争霸的东西。通过添加适当的外观和动画,这突然变成了一个游戏!

生物们拼命地试图到达中间的机甲。


我们之前提到过,对我们来说,让生物以可信的方式表现是很重要的。我们最不希望玩家看到的是一群狂热的太空狗站在场上无所事事,仅仅是因为它们无法找到到达目标的路。这对我们来说还不够狂热。相反,这些生物聚集在目标周围,填补了空白,表现得好像它们被外星母脑控制了一样。单位只有一个目标,并且不择手段的冲上去。老实说,这真的看起来像一个活的细胞!

基地中的虫子骚扰。Quelver被和其他单位相同的系统控制。

我们在银河破裂者中处理单位行为的系统既可以支持侵略性生物,也可以支持中立生物。我们的计划是用各种"环境"生物填满加拉蒂亚37号星球——游戏故事发生的地方。他们的工作非常简单 - 只是去你的一天,寻找食物和水,从一个地方移动到另一个地方。这一切背后的原因,都是为了让世界更加身临其境,更加自然。其中一种生物是Quelver——一种小型拾荒者,在加拉蒂亚的大部分环境上都有它们的影子。

对我们来说幸运的是,Quelvers害怕玩家和他们的行为,所以很容易摆脱他们。


Quelvers的动作由与其他单位相同的AI系统控制。为了不给CPU带来太大的压力,这些生物只出现在战斗之外。如果游戏检测到已超过"攻击"模式下的单位数量阈值,Quelvers将立即停止生成。这并不是这些生物的唯一性能优化。游戏会检查Quelvers的位置,并仅在设定半径之外生成它们,以避免将它们聚集在一起。游戏中不会出现间歇性的单位聚集和数量爆发。虽然如果你真想的话,有可能在将来实现...

这些虫子在加拉蒂亚37号的食物链中起着重要作用,清理着残骸。

 
这些小动物也使用与攻击性单位相同的分组机制,但原因略有不同。他们聚集在尸体周围,在银河破裂者中有很多在攻击波之后。一旦战斗结束,侵略性生物的数量再次低于阈值,Quelvers将再次开始生成并寻找可以食用的尸体。经过一段时间后,我们将尸体淡出,但是虫子的加入使遗骸看起来好像真的被它们吃掉了。

这些生物在追逐玩家时会尽最大努力避开障碍物。

最后,是时候推出重型火炮了。开发复杂系统和算法的一年,数千行代码,无数杯咖啡之后,我们让数千个单元流畅的运动。话不多说,直接上图。




我们是否捕捉到了星际飞船骑兵的感觉? 请在评论和我们的Discord服务器上告诉我们! 还有很多新的和令人兴奋的东西在开发中,我们等不及要展示他们!
其他社交媒体

Comments

Popular posts from this blog

活在当下-从尾巴摇狗的荒谬中解放自我

Metroidvania银河恶魔城游戏开发指南(一)

折衷主义建筑