现在是 2 月 6 号的凌晨 0:26,我开始写这篇日记,大致交代一下这几天我的工作(虽然是白忙活)。不然好像我一直在当鸽子,实则这几天牢的要死。
2 月 3 号我开了新符卡的工作,大概在下午完成。但问题是之前表现一直很好的搜索型避弹 AI 面对这张符卡表现很差,后面所做的一切工作其实只有这一点:全避这张符。
然后呢,然后走上了一条不归路并开始坐牢…
Before Reading#
很早就红心了的曲子,前几天网易云随机播红心歌单,播到这首时意外触动到了,有许多莫名的感受。经常一段时间没听过某首歌,忽然再认真听一遍,会感受到有些强烈的震颤,好像在怀念什么。
我之前还把这首和永啼鸟弄混过来着。然而这首是风神少女,永啼鸟好像是不死组的几首来着,按理说不应该弄混。不过由于是粽子,好像也听不出什么原曲😂(我把这首跟风神少女同时放,才能听出来副歌部分有点像…)
鳥よ#
这次弹幕的主题也是源于这首歌吧,像鸟一样,想要去强调 “飞行感” 与 “自由感” ,但是又不完全是这种飞行幻想。这首歌所属的专辑《娶》想要讲述的是人与妖之间的羁绊吧,所以我对这张符卡的最后一个关键词是 “思恋” 。这也是为什么我用了很多自机狙,为什么第三阶段 Boss 要锁定自机的位置俯冲,我希望这张符卡能够体现这种命运的牵连感。
然而很大的问题在于,之前的避弹逻辑在处理自机狙的时候,表现是相对较差的,它不会有引弹的意识。最后我用了非常抽象的方式来解决这个问题,这里暂且按下不表。
弹幕分成三个阶段:第一阶段 Boss 扇动翅膀(做的不是很像扇动)发射弹幕,第二阶段 Boss 下压,发射撞到边界会反弹并产生大量龙鳞弹的自机狙。第三阶段 Boss 俯冲并在过程中散射飞羽,飞羽会减速到停止,在下一次俯冲时消弹。
最终效果见 传送门 。
RL 从入门到入土(???)#
我们说到:之前的避弹逻辑在面对这张符的表现比较差,具体体现在这几点上:
会莫名奇妙的撞第一阶段的中玉。明明密度不大,但就是会撞。
不会引第二阶段的狙。这其实是一个很麻烦的问题,第二阶段的
water_drop弹幕第一次碰到墙壁时会发生反弹,并且产生大量龙鳞弹向周围散射。
final scene 里面是用两个底角引狙,散射产生的龙鳞弹轨迹很集中,也不影响引弹的路线。然而如果你像dogger一样不会引:
其实这张还不算散的,如果狙的时候贴近 Boss ,让自机狙的子弹先散开,最后出来的龙鳞弹会糊满整个屏幕。不会躲第三阶段 Boss 的俯冲。如果处在俯冲的轨道上,靠 Boss 的斥力来躲撞击是来不及的。但是自机在飞羽静止后也会感到危险,于是倾向于留在原地(下一波被创亖)。
我当时觉得后面两个问题都是搜索式本身很难克服的弊端,那干脆我们不做搜索式了吧。于是让 copilot 写了个训练避弹 AI 的计划书,在不懂原理的情况下就开干了,先采样就采了 20 分钟,之后又是用 PPO 又是蒸馏压缩,最后一看结果只会上下乱斗(蒸馏蒸得都不会左右移动了)。把学习轮次开大,后续才看的出来像是在避弹。以上是 2 月 4 号的成果, 5 号接着搞,想着怎么提高训练效果。第一轮训练出来的结果都活不过 100 帧,那后续的迭代自然也是泡汤了。搞了大半天完全没有效果,最后还是选择了放弃。
半自动飞机#
最后还是只能转会搜索型 AI ,先是新加了功能:分析有没有自机狙,影响后续风险的判断。加了这条后第一阶段就没什么问题了,主要还是第二阶段不会引弹和第三阶段站着不动被创亖。这时候想到的解决方案是:给一个引导的接口,让人类来决定“大方向”,也就是引导 AI 朝某个点走。最后落地的方案是用键盘上的 1~6 来表示画面左右两侧的上中下共 $6$ 个点,按下按键 AI 就会倾向于往那个点靠近。之后修了修再调调参,就是 final scene 了。那里面第二阶段就是交替向两个底角引导,连带狙一起,反弹产生的龙鳞弹就很规则了。
第三阶段其实也是靠这个引导功能, AI 会探查能去到引导的目标点的安全通道,所以最后能够在停止的弹幕中做移动,调整位置躲开俯冲。不过即使如此,还是试了不少次才出了一发全避。
人工队大胜利#
然而增加引导功能后,我先是发现第一阶段的弹幕通过引狙也能引得很干净,这样手动过这张符的难度就集中在第三阶段了。一开始我是想在下面穿静止弹幕层,凭运气出一发。后来发现顶层其实不会被飞羽打到,只要不被体术就很安全,后来就一直尝试上避第三阶段。只要抓好第二阶段到第三阶段的那个消弹时间,就可以在第一波俯冲的同时拉到最上方了。
这样看的话,这张符其实纯姿势。但是我做的时候本意是让 AI 来打,所以加了好几次弹幕量,看来也是不影响了。
开始做符卡后,也是因为我收不了自己做的符才开始做 Bullet-Dodger 的,结果这张符反而是人工队表现更好,也算是可喜可贺了。
Next Dream…#
这个避弹的项目估计也就到这里为止了,后续如果我有好好搞懂机器学习这一块的话,或许会重启这个项目。不过现在我已经做了三天牢了,我先需要睡个好觉,然后好好玩一天。
后面做些什么呢,那是睡醒之后才该去考虑的事。