到了开发后期,核心玩法、buff、多命、UI 和音频都已经就位,剩下的是把游戏“交出去”之前必须做的事:本地化和排行榜。本地化我用了 Godot 标准的 .pot / .po 工作流。先导出英文模板,再逐条翻译。中文和德文是第一批完成的语言。所有 UI 文本,包括标题界面的 “Just Move! & Shoot!”、排行榜标题、设置里的屏幕和声音选项,都通过 tr() 函数接入。buff 名称
加入多命机制之前,Finger Blast 的失败体验很干脆:被敌人碰到,游戏结束,回标题。测试的时候我发现一个问题——玩家第一次失败时,往往还没理解敌人的行为模式,直接被踢出局,学习成本太高。所以我加了一个很朴素的设计:三条命。不是五条,也不是两条。三条命刚好够玩家在第一次失败后继续观察敌人,但不至于让失败完全失去代价。生命值显示在 UI 上,每被敌人碰到一次扣一格,扣完才结束。这个改动和墓
核心循环跑通之后,我开始想怎么让每一局有变化。如果每局都是同样的射击节奏,玩家很快就会进入机械操作。于是有了 buff 系统。我一共做了四种 buff:近战、迅捷、精准、散射。名字听起来很普通,但每一种在代码层面的实现方式完全不同,手感也差异很大。近战(MELEE) 的效果不是缩短射程,而是延长子弹的存活时间。普通子弹在生命周期结束后会直接销毁,但近战状态下,子弹会多飞一段距离。实际手感是“子
上一篇说到,基础射击跑通之后,游戏缺一个持续的压力来源。我试过几种方案:让敌人越来越快、让敌人越来越多、让敌人从不同方向出现。但这些都只是线性加难度,玩家很容易适应。后来我决定换一个思路:让击杀本身产生新的威胁。具体做法是,敌人被击杀后不会完全消失,而是在原地留下一个墓碑。墓碑本身不攻击,但会周期性生成新的敌人。这样一来,玩家杀得越多,场上的墓碑就越多,后续敌人刷新点也越多。压力不是来自“敌人变
做 Finger Blast 的起点很简单:我想做一个操作极其直白、但节奏会越来越紧的射击游戏。标题界面那句话 “Just Move! & Shoot!” 基本就是全部规则——移动,射击,没有别的按钮。引擎选了 Godot 4。原因不复杂:2D 工作流顺,GDScript 改起来快,场景系统适合这种小规模、高迭代的项目。最开始我搭了一个很粗糙的原型:屏幕底部放一个“手”节点,玩家控制它左右移动,