用AI还原《坦克大战》并3D化升级!

上一篇我们讲了,通过 Claude Fable 和 Codex 完成了经典游戏《坦克大战》的 3D 版本!

整个游戏已经可以正常运转了,网页版和电脑版同步发布了!

但是,我始终觉得有一点美中不足!我用 Fable 生成的 2D 版来分析下。

这是AI生成的图片:

为了做对比,我还专门下载了模拟器,找到坦克大战的 NES 文件。

然后截取了原版的图片:

对比可以发现,地图的布局还是有差异的,另外就是消墙逻辑也有差异。

具体的表现是:老版本射击基地的时候是两枪才能干掉砖墙,我这个版本是一枪就干掉了。导致基地很容易挂掉,难度有所增加。

这两个点,不修改,其实也能玩的很开心。但是我还是希望能改一改,更加完美!

所以今天,第一个问题是还原第一关地图,第二个是修改射击效果!第三个,我准备制作地图编辑功能。

为了完成这三个功能,我又消耗了一天时间!细节改起来真是要人命,不过收获的全是宝贵思路和经验!

游戏和网址我会分享在文章后面!

今天重点记录修改过程。

1、修改地图

修改地图的难点是,如何让 AI 理解我的需求。我最早是希望通过简单的描述让它帮我搞定,但事实证明这个事情难度极高。

我最初是直接给了一张游戏截图以及原版的平面图,让它还原地图!

我的需求大概是这个样子的:

它好像都懂了,但是结果还是差强人意!

地图是改了,但是细节还是差不少,然后我又希望通过画红色框的方式让它修改。最终也失败了,而且越改越离谱。

Opus4.8 平时改网页还是非常强的,但是改这个地图好像懵了。而且这还是个 3D 地图。

这个事情,改来改去,都把 5 小时配额跑完了。看来这条路是走不通了!

不过劳动人民的智慧是无穷无尽的。我让它帮我分析了地图的构成逻辑。

地图是用这种形式表达的:

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.....   ← 中央两块孤立小砖
row6   ss.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 生成

然后默认的地图是 13x13,为了还原一半是钢板一半是砖墙的形式,第一关升级成了 26x26 的地图!这一下子整体复杂度翻了多少倍啊。

既然是网格,就必然有坐标。我就让 Opus 帮我把所有坐标都显示在地图上,我就根据坐标让它来修改。

为了实现这个效果也是折腾了一下的。因为这是一个 3D 视图,第一次因为 3D 视角问题对不齐,然后又修改了一波。终于完美对齐了。

然后我尝试告诉它某个编号,进行修改。终于可以精准的修改了!

这个图看得我眼花缭乱,信息量太大了,就这个图截图之后就有 6 MB,压缩之后都有 2 MB。

2、优化设计效果

第一个搞定!开始攻克第二个问题。

这个问题是这样的。我发现原版的大本营厚度大概是正常砖块🧱的一半,子弹一枪消耗的是一半的一半!

这个逻辑和我们的完全不一样。我们是直接一枪打掉一半。所以基地的砖墙只能抗一枪,导致和原版不一致。

为了修改这个问题,我们就想把整个系统进行升级,从原先的 26x26 升级到 52x52。复杂度又有指数上升了。

而且如何把这个问题给 Opus4.8 描述清楚又是一个大难题!

我是先询问了一下可行性:

它分析了一下,列出了需要修改的地方,并给了两种方案!

两种实现思路:
​
方案A:只给砖加 2×2 子块 mask(推荐) — 只有 BRICK 引入子块,钢/水/树/冰/空仍整格(原版钢板也是整块炸)。改动集中在 4 个函数 + 一个子块数据结构,范围可控,性能可接受。
​
方案B:把整个 map 升到 52×52 — 概念上最简单(N=26→52、TILE=16→8,一切天然半格),但渲染 cube 数 ×4(最多 2704 个)、很多硬编码坐标(护墙 ringTiles、BASE、出生点、各种 clearTiles)都要重算,性能和风险都更高。
复杂度结论:属于中等偏大的改动,不是小修小补,但范围可控——核心难点就是让「子块状态」在破坏、碰撞、渲染三处保持一致。推荐方案A(砖块 mask),1 次专注重构能做完,且不碰地图数据格式和编辑器。
​
要做的话告诉我,我按方案A来。
​
​

说实话,我对 3D 游戏的构成还不是特别清晰。它反馈的这些概念,我并不是太懂。但是我只看到 A 方案改动小,不影响性能。另外这个复杂度属于中等偏大。

我就按它的方案来改,我还是挺紧张的,毕竟我不太懂细节。它又说是中等偏大难度。

但是,这个问题我必须要推进。没有意外的话应该能搞定。

典中典之没有意外的话必然会有意外:

改好了,射击力度是好了。但是打出了一个坑!

这……我怎么移动啊!我要怎么告诉它,力度是干掉 1/4,但是和坦克垂直的一面宽度是 1 个单位,但是如果坦克偏移一定位置,就要干掉 1/2……

自然语言编程的最大难度是“你根本不懂如何表达”:

还好 Opus4.8 理解了!

最终修改成功,基本上 OK 了!

已经高度还原《坦克大战》的第一关地图和子弹伤害!

后面的关卡地面目前完全由最强 Fable 生成。目前我只刷到了第 10 关,总共的关卡有 35 关,我对后面的关卡还一无所知。

3、地图编辑

为了搞清楚每个关卡的样子,并且可以可视化地显示关卡,我又开发了一个 Map 功能!

通过这个功能,可以把关卡字符串转换成可视化的图片!

但是光查看还不够,我还添加了编辑功能。 可以直接在地图上进行编辑,生成新的地图。

然后一键导出地图数组或者字符串!

这样我更新游戏的地图就非常方便了!

既然都能可视化编辑了,那么直接添加一个图片转地图的功能吧。

我只要把图片拖动到编辑区域,就能自动生成地图了。

生成之后稍微修改一下,就是一个非常有意思的关卡了!

这个功能目前还是我自用为主,稍后分享出来让大家可以自己编辑地图!

在线体验:

坦克大战 3D · BATTLE CITY

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值