下载 App
开发日志 #2:墓碑、波次和压力循环
修改于前天 07:2410 浏览
上一篇说到,基础射击跑通之后,游戏缺一个持续的压力来源。我试过几种方案:让敌人越来越快、让敌人越来越多、让敌人从不同方向出现。但这些都只是线性加难度,玩家很容易适应。
后来我决定换一个思路:让击杀本身产生新的威胁。具体做法是,敌人被击杀后不会完全消失,而是在原地留下一个墓碑。墓碑本身不攻击,但会周期性生成新的敌人。这样一来,玩家杀得越多,场上的墓碑就越多,后续敌人刷新点也越多。压力不是来自“敌人变强”,而是来自“玩家自己的清场行为改变了战场”。
这个机制在实现上分两层。敌人脚本里有一个受伤函数,当生命值归零时,不是直接 queue_free(),而是把当前坐标写入一个全局的墓碑队列。游戏主循环每帧检查队列,在对应位置生成墓碑场景。墓碑再按照自己的计时器,周期性生成新的敌人。整个链路是:击杀 → 墓碑 → 新敌人 → 更多击杀 → 更多墓碑。
这样做有一个很直接的结果:游戏前期很轻松,玩家可以慢慢瞄;中期墓碑开始堆积,屏幕上的敌人密度明显上升;后期如果不清墓碑,基本会被淹没。于是玩家的目标从“杀敌人”变成了“在杀敌人和清墓碑之间做选择”。这就是我想要的压力循环。
波次系统也围绕这个循环重新调了一遍。我原本用的是固定队列,一波一波刷。后来改成按类型分流:快速敌人、清洁者、摆动者各自有独立的刷新队列。游戏主循环根据当前波次和场上墓碑数量,动态决定从哪个队列取敌人。这样后期波次不会突然爆炸,而是随着墓碑数量平滑上升。
顺带一提,墓碑和敌人的美术资源用了同一个 shader 做溶解效果。敌人死亡时播放溶解,墓碑生成时反向播放,视觉上能看出“这个墓碑是刚死的敌人变的”。这个细节不大,但对理解战场状态很有帮助。
到这一步,Finger Blast 的核心循环才算真正成立:移动、射击、击杀、墓碑、更多敌人、继续射击。下一篇会讲 buff 系统——也就是在这个循环上再加一层变量。












