我制作了《Monkeys Go Bananas》,这是近20年来我的第一款游戏。它有点像《文明》的微缩版,不过主角是猴子——算是《Polytopia》的搞笑变体。我用Fable和Astra开发了这款游戏,想分享一些让游戏成功上架手机背后不那么光鲜的工作。

技术栈包括TypeScript游戏逻辑、React用户界面、Canvas2D渲染和Capacitor的iOS外壳。曾考虑用Unity重写,但最终搁置了,因为那意味着放弃现有的TypeScript工作。如果将来需要更换引擎,Godot会与Unity一同评估。PixiJS曾是早期渲染的候选方案,但游戏最终使用了纯Canvas2D。

性能挑战远比看似小巧的棋盘大得多。一次卡顿涉及精灵标识和缩放值导致光栅缓存反复失效。即使静止的棋盘也会重复绘制昂贵的图形,而非复用它们。有效的修复方法是解决缓存失效的原因,而不是单纯减少重绘频率。早期的棋盘探测也未能捕捉到比赛中后期出现的条件,因此测试场景与实际优化同等重要。

平衡性则存在另一种陷阱。规则是确定性的,因此种子化的电脑对战能重复相同的场景以验证改动效果。这有助于暴露经济体系和对手倾向问题,但无法判断人类玩家是否能理解下一步行动或是否愿意再来一局。我试图分离这两个问题:规则改动用自动对战测试,清晰度和娱乐性则交给真实玩家。

这是我在AI辅助开发中想交流的部分:你如何验证一个看似合理的修复确实解决了实际问题?在这个项目中,可复现的游戏状态和能抵达故障点的测试至关重要。

如果游戏画面有助于理解背景:https://monkeysgo.app 提供浏览器试玩和iPhone App Store链接。