下载 App
【归真葫芦】开发者日志03:一张棋盘,三个数字
修改于昨天 15:102 浏览综合

大家好,这里是高速星星工作室,今天请程序老师们出场!
这一阶段程序组主要完成了:
- Godot 正式版框架
- 棋盘演化与阵形识别
- 母体攻击与命中预判
- 关卡搭建工具
【一张棋盘,三个数字】
整张棋盘在代码里其实就是一串数字,每个格子只有三种状态:0 是空,1 是红秽,2 是金秽。
每一拍,程序会数一遍每个格子周围 8 格里有几个红、几个金:已有细胞周围总共 2 或 3 个就活下来,空格周围正好 3 个就出生,3 个邻居里金的有 2 个以上,生出来的就是金秽,否则是红秽。
整张棋盘的下一代是先算在一份新的数字里,算完再整体替换,所以所有格子是同时变化的,不会出现左边先长、右边后长的情况。
墙体比较特殊:计算前先把墙格清空,算完再清空一次。墙既不能当活邻居,也不能在墙里长出东西。(不然肉会长进墙里……)
【阵形是怎么认出来的】
先把同一种颜色、上下左右和斜向相连的格子找出来,归成一组。然后拿这一组去和阵形库比对:眼、茧、蛊、梭、壳、饕餮……每种阵形都存了一份形状。
比对时,程序会把标准形状旋转 4 次、再镜像一次,一共 8 种朝向都试一遍。会动的阵形,比如蛊,还会先在一张小草稿棋盘上把它演化几拍,把每一拍的样子都存下来,所以蛊不管飞到哪一步、朝哪个方向,都认得出来。

【预判:先在副本里算一遍】
「提前显示下一拍」和「吐出前的命中预判」,用的都是同一个办法:把当前棋盘复制一份,在副本上演化,原棋盘一个格子都不动。
吐出金秽之前,程序会在副本里往后算最多 3 拍,看这团金秽会不会在母体格子里长出来、能造成几点伤害,再把结果画在棋盘上。(策划组:所以我们一开始到底为什么想让 AI 来算)
【母体打你,也讲规矩】
- 母体伤害只认「真实新生」:演化前那一格必须是空的,演化后长出了金秽才算。原来就有细胞的,演化后还是金色也不算;
- 母体吐秽前会先在你周围 2 格里找位置,整个形状都放得下才行,找不到就一圈一圈往外扩;
- 新的战斗关会提前两拍锁定落点,攻击那一拍不会再换位置,所以你看到的预警框就是它真正要吐的地方;
- 多个母体同时选位时,不会挑到同一组格子;
- 母体的随机数用了固定种子,同一关每次都能复现,方便测试!
【给策划的搭关工具】
策划老师们在 Godot 编辑器里就能搭关:用「图案印章」盖下红秽、金秽,用「墙印章」画墙,再放上玩家起点、出口和母体标记。母体的血量、攻击周期、攻击形状都直接在标记上调就好啦。
编辑器里还能直接点「演化一拍」「检查连通组」看效果。另外有一个关卡检查器,会自动找出常见错误,比如没选图案、母体血量小于 1、无出口的关卡却放了出口……省得进游戏才发现。
【演化的手感】
逻辑上一拍是瞬间算完的,但画面上用了大约 0.6 秒做渐变,只有变化的格子会过渡,过渡期间输入是锁住的。这样玩家能看清每一拍发生了什么,不会在一眨眼之间局面就全变了。
下一篇轮到美术老师们,敬请期待!











