大家好。我的同事们都叫我“大脑”或“布莱纳斯”。白天我是全职水管工兼暖通空调技术员,但业余时间一直致力于开发一个名为《霓虹黄昏》(Neon Twilight)的热情项目,以及配套的引擎——“黄昏引擎”(Twilight Engine)。

这款游戏的灵感源于对PS2版《蜘蛛侠2》中摆荡机制的怀旧遐想。最初的原型是一个用HTML/JavaScript编写的在虚空多面体岛屿群中摆荡的小球。后来我将其打磨成了一个不错的原型——一座广袤大都市瞬间生成,成为可供摆荡的游乐场,并加入了翼装以实现更动态的穿梭机制。我还添加了几种不同的游戏模式,避免只有空旷的自由漫游。第一种是“逃亡”(Escape)模式:简单来说,玩家需要逃离大都市中心(即出生点)不可避免会发生的核爆。高分取决于爆炸波及玩家时的距离——爆炸以音速扩散,最终总会追上玩家,死亡无可避免。

我实现的第二种模式是竞速类游戏模式,其高分由三个变量决定。首先是一个倒计时,归零时比赛结束;每个检查点会为玩家增加时间,并根据通过时的速度给予额外奖励。第二个计分变量是比赛结束时收集的检查点数量。第三个变量是自比赛开始以来的总耗时。随着时间增加,检查点之间的时间间隔缩短,生成距离增大,因此玩家必须尽可能快地收集更多检查点,因为比赛总会终结。

我为游戏创建的第三种模式是“猎杀无人机”(Hunter Drones)。这相当于一场捉迷藏:玩家需要躲避追踪自己的、建模逼真的导弹。这些导弹有短暂的燃料爆发,速度可达3马赫以上,之后仅受阻力和重力影响。它们带有尾翼,可在飞行中调整姿态以追踪玩家。随着时间推移,会有更多无人机加入猎杀。每架无人机需要2秒的视线锁定才会发射导弹弹幕。无人机会记住玩家最后已知位置,并在该区域搜索,直到任意无人机重新获得视线。该模式的得分根据闪避的导弹数量计算,同时结合玩家击败导弹时的高度倍数。这激励玩家保持在高层建筑稀疏的高空区域,但同时也大大增加了被导弹击中的风险。

这些游戏模式就位并运行后,我决定将游戏从HTML/JS移植到Godot引擎。这一尝试还算成功,我学到了很多,并使游戏达到了一个有趣且相当精良的玩法里程碑。但问题在于,Godot引擎本身并非为运行我所追求的无损渲染距离和物体数量的游戏而设计。在构建世界时,Godot存在巨大的实例化限制。当玩家移动时,新建筑区块需要由GPU创建,但这些区块必须先经过CPU处理才能返回GPU渲染,这会导致明显的帧时间卡顿。而游戏的数学计算和生成本身并无此限制——在需要生成新世界区块之前,它一直能以150帧以上的速度运行。

经过对游戏引擎的研究,我做出了一个疯狂的决定:干脆从零开始自己构建引擎。这一决定暂停了游戏本身的开发,转而搭建框架,以便在没有现成引擎限制和问题的情况下实现我真正的愿景。这条路有时漫长且令人沮丧,但如今进展已远超当初小球摆绳原型时的梦想。还有大量工作要做。最近,在将Godot中大部分游戏内容移植到自定义引擎后,我开始进行自定义素材创作。我首先从游戏中的载具入手,以锻炼自己的建模技能——这对我是个新领域。

我想听听你的想法,也乐意回答任何问题。

如果你想看一些开发进度视频,我的YouTube开发项目频道是 TheBrainusProject