NEKOPARTY STUDIO

视频脚本:034GameJam复盘,以及关于Godot引擎以及游戏视效的一些看法

字数统计: 1.8k阅读时长: 5 min
2026/03/15
loading

我的忏悔

最近参加了034 GameJam,这是我开始打GameJam以来对成品最不满意的一次。当然了,其中有不小的一部分原因是因为杀戮尖塔2刚好在比赛开始的时候发售了,这一个星期没忍住玩了50个小时。不过这个不提,把问题总是归咎于外部因素是不对的。

简单说明一下034 GameJam,简单概括一下就是这是一个只让用基本几何体(圆形,矩形,三角形,圆柱,球体,立方体,四面体)来创作游戏的GameJam。然后提供了一个“连接”作为主题。

我虽然玩了很多游戏,但落实到制作上我一直都是技术优先的路线,平时空闲时间也都是玩引擎研究图形技术或者什么其他技术。由于在技术上我几乎不存在什么困难,搭建游戏也效率很高,所以之前GameJam基本会选择一个已有的游戏类型或者成功范本,对它做GameJam的精简压缩化,然后添加一些小创新之类的。

不过这次反而没参考。根据034精神,只能使用原始几何体,不能由开发者对它的形状进行组合。不过比赛本身没有严格的限制,不遵守规则不影响你做。我一开始直接就想做个UltraHand,对于这种难度很大的编程挑战我跃跃欲试到爆炸,但我无法想到它的使用场景,单纯拼装几何体估计没什么乐趣,对于一个需要7天做完的东西,模仿王国之泪的解密方向去做更加不可能,如果能做到的话我就不是一个在B站发视频的大学生了。我能想到的最有可能的玩法就是王国之泪的初始空岛究极手神庙那个拼装物体钻各种形状的格子的玩法,但这样游戏看上去也太土了。

出于对UltraHand实现难度的畏惧(当然了我之后肯定就会尝试来搓这个究极手),以及我自己对这方面缺乏的灵感,最后这个方案就否了。后来在翻自己已经做过的东西的时候,看到了之前自己搓的一个星球大气渲染的解决方案。这个是拿4.3之后的那个Compositor功能做的,总体上比那种单纯拿个球做Fensel或者用Spatial Shader做全屏后处理的复杂一些。就联想到能否将星球连起来,于是就有了现在这个项目的想法。

最初的设想是这样的,假设我这里有一个恒星,远处有一个行星,我就能用一个连接给它们连起来。这样行星的公转角速度就直接和恒星同步了。然后假设这里有个行星,这里有个行星,我再拿根东西给它连接起来,这样这个行星就能以这个行星的角速度开始围绕它公转。利用这个特性整点小解密啥的。

主要是着急玩杀戮尖塔2,这个想法也没怎么细想,其实确实不太经得起推敲。首先是这个运动计算是否需要基于物理?假如我并不基于物理,那难免手动处理许多难题。首先这个相对公转的想法就不是很好成立。一个物体围绕另一个物体,以那个物体的角速度公转,那你这个连接是不是就必须区分连接的和被连接的?因为一个是固定连接,另一个是相当于连接到它的“轴承”,也许你会说都连接到轴承不行吗?那行星的自转参数就完全没有任何作用了,但是是一个简化的方式。然后就是另一个问题,这个多层连接后,要是形成了回路怎么计算?假如形成了三角形,那这三个顶点就被固定了,被连接的物体的自转参数也就失效了,游戏立即就不自洽了。我觉得这大概率是我想不明白的玩意。

也许你可能会说,那你不让连接成环路不就行了?确实有道理,但我当时觉得不太好,在游戏都主张交互自由的情况下,这种生硬的限制可能会让人觉得我不太有本事。

最后就摆烂了,全部交给物理引擎得了。但这是个挺灾难的决定,因为虽然我对Godot引擎理解还不错,但是几乎没怎么动过物理引擎。首先我很清楚物理引擎每步都是离散的,导致它大概率没法通过用非常牛顿的方式让物体圆周运动。那我只能将行星分为两个状态,连接态和自由态,自由态的行星运动根据公转半径计算角速度参数,然后程序控制转动。行星被连接后,继承之前的速度,之后物理引擎立即接管其动作。解除连接后慢慢根据当前位置回到圆周运动状态。

到这边都非常顺利,但是涉及连接的时候灾难的部分就来了。我发现无法实现我之前设想的连接方式,因为它完全不物理。物理的连接将两个物体连接上之后,两个物体的相对运动应该就立即消失了,所以想有自己的自转速度就直接不可能。

我想了一些办法来Work around,但是都失败了。也许你会想,我去链接物体的“轴”,然后物体绕着轴转动,确实是这回事,但是物体的实际位移由轴控制,但物体被碰撞的时候应当产生运动,这就应该反过来影响轴的位移,变成了一个左脚踩右脚的问题。而且直接去操作Rigidbody的位置一般都没什么好下场,所以这边又无解了。

而且实际上由于迭代求解的问题,你用Joint去锁两个物体,在运动速度过快或者两个物体质量差距过大的时候很容易迭代不收敛导致结果爆炸物体开始乱飞。这边又解决了好久。

于是最后决定摆烂,游戏就这么做呗,锁死就锁死。

由于是物理引擎算的,所以物体在连接之后,运动的结果是相当Chaos的,我自己都无法对关卡的演化有任何控制的话,自然没法做出什么像人关卡。最后体验我自己都觉得很不好,成功成为了我自己目前为止最不满意的一个Demo。

CATALOG
  1. 1. 我的忏悔