AI还原《坦克大战》3D重制版深度评测
上一篇文章介绍了利用 Claude Fable 与 Codex,成功将经典游戏《坦克大战》移植到 3D 场景——网页端与桌面端均可流畅运行,效果令人满意。
实际体验几轮后,发现仍有明显缺陷。以 Fable 自动生成的 2D 版本为例,问题暴露得尤为直接。
以下是 AI 生成的地图截图:
为进行对比,特意启动模拟器,加载了《坦克大战》NES 原始版本。
截图获取原版第一关地图布局如下:
对比之下,两大硬伤立即显现:地图布局与原版不符,子弹对砖墙的破坏机制也存在差异。
具体而言,原版中攻击基地周围的砖墙需要两发子弹才能摧毁一整块;而当前版本一枪即碎,导致基地防御形同虚设,游戏难度大幅提升。
坦白讲,不修正这两处问题,游戏仍可正常游玩并获得乐趣。但既然已有良好的基础,不如更进一步,追求更高的还原度。
因此,本次任务拆解为三个目标:第一,将第一关地图精准还原至原版样式;第二,修正砖墙的射击破坏逻辑;第三,开发一个地图编辑器以方便后续调整。
完成这三项工作又耗费了一整天时间。细节调整极为繁琐,但最终收获的都是切实可用的经验。
游戏体验地址与在线链接见文末,以下是改造过程的详细记录。
1. 地图精准还原:解决布局偏差
修改地图的核心挑战只有一个——如何让 AI 准确理解你的意图。
起初以为只需提供一张游戏截图和原版平面图,AI 便能自行完成还原。事实证明,难度远超预期。
需求描述大致如下:
AI 的回应看似理解到位,但实际生成结果仍与预期存在明显差距。
地图虽有所调整,但细节差异仍然很大。尝试通过绘制红框指定修改区域,结果反而越改越偏离目标。
Opus4.8 在处理常规网页修改时表现出色,但面对这张 3D 地图却显得力不从心。反复尝试几次后,5 小时使用额度全部耗尽。此路不通。
遇到阻碍,及时调整策略。转而要求 AI 先分析地图的底层数据结构。
最终发现地图以如下网格字符串形式存储:
row0.............row1.b.b.b.b.b.b.row2.b.b.b.b.b.b.row3.b.b.bsb.b.b.← 中央 2×2 钢板,上方预留凹槽入口row4.b.b.b.b.b.b.row5.....b.b.....← 中央两块独立小砖row6ss.bbb.bbb.ss← 左右边墙嵌入钢板 + 中部横墙row7.............row8.b.b.bbb.b.b.← 下半部柱子 + 中央 H 形横梁row9.b.b.b.b.b.b.row10.b.b.b.b.b.b.row11......b......← 基地正上方引导墙row12.............← 基地及护墙由 ringTiles 生成
默认地图采用 13×13 网格。原版第一关的布局中钢板与砖墙各占一半,为实现精确还原,将网格升级至 26×26,复杂度成倍增加。
既然地图基于网格,必然存在坐标系统。于是要求 Opus 将全部坐标标注在地图上,依据坐标进行精准定位修改。
仅将 3D 视图对齐就花费了大量时间——初次尝试由于透视偏差,坐标标注全部偏移。经过调整修正后,终于实现完美贴合。
随后直接对坐标系统下达指令,明确指定“将第 X 号格子修改为 Y”。至此,终于能够精确控制每一处修改。
但坐标图信息量极大,截图体积达 6 MB,压缩后仍有 2 MB。长时间查看令人目眩。
2. 射击逻辑修正:还原子弹伤害机制
地图问题解决后,紧接着处理第二个核心问题。
经仔细研究原版:基地周围的砖墙厚度约为普通砖块的一半,单发子弹仅能摧毁四分之一的墙体——即需要四发子弹才能完全击碎一块砖墙。
当前版本却完全不同——一发子弹直接摧毁一半墙体,基地砖墙仅能承受一次攻击,与原版机制差距显著。
要修复此问题,需将整个系统进一步升级:从 26×26 网格提升至 52×52,复杂度呈指数级增长。
更棘手的是,如何向 Opus4.8 清晰准确地传达这一需求。
试探性地询问了实现可行性:
AI 分析后列出了需要修改的模块,并提供了两种方案:
两种实现思路:方案A:仅对砖块引入 2×2 子块掩码(推荐)——仅 BRICK 类型使用子块,钢、水、树、冰、空仍保持整格(原版钢板同样整块破坏)。改动范围集中在 4 个函数及一个子块数据结构,影响可控,性能可接受。方案B:将整个地图升级为 52×52 网格——概念上最简单(N=26→52,TILE=16→8,天然支持半格),但渲染 cube 数量增至 4 倍(最多 2704 个),许多硬编码坐标(护墙 ringTiles、BASE、出生点、clearTiles 等)都需要重算,性能和风险显著增加。复杂度评估:属于中等偏大改动,并非小修小补,但范围可控——核心难点在于让「子块状态」在破坏、碰撞、渲染三处保持一致。推荐方案A(砖块掩码),一次专注重构即可完成,且不涉及地图数据格式与编辑器。如需实施,请确认,我将按方案A推进。
诚然,我对 3D 游戏底层结构并不精通,对 AI 提及的概念也未完全理解。但方案A明显更优——改动范围小、不会造成掉帧、且不影响现有的编辑与渲染逻辑。
最终决定采纳方案A。不过心中仍有些许忐忑——毕竟 AI 自身也评估为“中等偏大”改动,而我并非游戏引擎专家。
但问题必须解决,只能迎难而上。
随后,经典剧情如期上演:按常理,意外不期而至。
修改后,子弹伤害力度确实正确了。然而——墙壁直接被打出了一个孔洞。
这就尴尬了:坦克该如何在凹凸不平的墙面上移动?
如何向 AI 精确描述“子弹伤害为四分之一,但坦克垂直面宽度为一个单位;若坦克位置略有偏移,则伤害应为二分之一”?
这正是自然语言编程的最大挑战——难以精准表达所需逻辑。
幸运的是,本次 Opus4.8 成功理解了意图。
经过最终调整,效果已基本达到理想状态。
《坦克大战》第一关的地图布局与子弹破坏逻辑已实现高度还原。
后续关卡——目前全部由 Fable 自动生成。我只通关至第 10 关,设定中共有 35 关。后面关卡的具体面貌,我也尚未知晓。
3. 地图编辑器:可视化编辑与图片导入
为了直观查看每个关卡的结构,并实现可视化编辑,我额外开发了一个地图编辑器功能。
该功能能够将关卡字符串数据直接转换为可视化图片。
仅查看仍不够,顺带集成了编辑功能:可直接在地图上点击选择、添加或删除砖块和钢板,修改后一键导出为地图数组或字符串。
这样一来,后续更新游戏地图将极为便捷。
既然已实现可视化编辑,索性再添加一个“图片转地图”功能。
只需将任意关卡截图拖入,系统即自动生成对应的地图数据。
生成后稍加手动调整,即可获得一个全新且富有趣味的关卡。
该功能目前仍以自用为主,后续将公开分享,使每位玩家都能自主编辑地图。地图编辑器的存在,才是游戏生命力得以持续释放的关键。