我第一次认真尝试用 AI 做游戏,目标很直接:做一款自己一直想玩的俯视角小游戏。我预想的最大阻碍是美术和音效,所以一开始就把思路定死了——所有素材都用 AI 生成,玩法逻辑全部交给 Claude 来写。真把流程跑通之后,我发现真正的难点根本不在 AI 画得够不够好、写得够不够快,而是在另一个地方:我怎么把脑海里的游戏,描述成一个 AI 能理解、能执行、能按版本维护的工程。
这个判断应该能解释为什么很多人第一次用 AI 做游戏时兴致勃勃,两天后却停在了一个“看起来能跑、玩起来不像游戏”的版本上。后面我会按一条完整的实践路径,把这次项目的分工、最小流程、迭代方法、工程纪律和排查顺序拆开讲。所有内容都来自常见的人工智能辅助开发实践,不涉及特定平台的内部细节。
1. 先搞清楚这个项目真正解决的是哪道门槛
1.1 素材全 AI 生成,不等于素材不用管
在开始之前,很多人容易把“全素材 AI 生成”理解成“素材问题消失了”。实际体验后会发现,它只是把“会不会画”换成了“会不会提需求、会不会验收、会不会保持统一”。
一件很典型的事:单看某一个素材,AI 生成的水平可能完全够用。但当你把角色、背景、道具、图标、按钮放在同一个界面里时,问题立刻出来了。角色的描边风格不一样,背景的明暗方向不一致,道具的透视角度也不在一个平面上。单个素材都能看,放在一起就像三个不同游戏被强行拼凑。
所以真正在“素材侧”能产生价值的,不是反复生成几百张图,而是先做一套约束。我后来会把生成参数固定成一个模板,包括画幅比例、视角、线条风格、配色范围、背景是否带透明通道。不管每次生成多少张,这些字段不变。然后把生成结果按用途分类命名,比如 enemy_01.png、bg_title.png、icon_health.png。命名和目录规范看似小事,等到 Claude 或你自己要引用它们时,就变成了能不能跑起来的关键。
下表是我在这次项目里常用的素材分工方式,你可以按自己的游戏类型调整:
| 素材类型 | 常见 AI 生成方式 | 人工需要做的关键工作 |
|---|---|---|
| 角色立绘/精灵图 | 文生图或图片参考生成 | 统一视角、描边、尺寸,处理透明背景 |
| 场景/背景 | 文生图或风格迁移 | 统一光照方向、色调、远近透视 |
| 道具/图标 | 批量生成后挑选 | 保持比例一致,命名规范 |
| 音效/音乐 | 音频生成工具 | 统一响度、循环点、文件格式 |
| UI 元素 | 文生图或图形工具 | 保证可读性,尺寸适配界面 |
每个类型背后都要有人确认“这张图放进游戏里,玩家会不会觉得它是同一个世界”。这个验收工作,AI 暂时替你完成不了。
1.2 Claude 负责玩法开发,但它更像“结对程序员”
Claude 在玩法侧的主要产出是代码、配置和方案说明。你可以让它从零写一个可运行的小游戏,也可以让它在你现有代码上改需求、补功能、排查报错。但我更建议你用“结对程序员”而不是“全自动外包”来理解它的角色。
结对程序员的特点是:它擅长实现,但不替你做决定。你告诉它“玩家需要能四方向移动,每回合只能走一步”,它会把对应的逻辑写出来;但如果你只说“做个像某游戏一样的战斗系统”,它只能给你一个泛泛的框架,最后大概率不是你想要的东西。
所以每次开工前,我会先写一段极简玩法描述。这段描述不需要专业术语,但必须包含四件事:玩家能做什么、敌人或对手会做什么、胜利条件是什么、失败条件是什么。比如:
text复制游戏类型:俯视角回合制
玩家操作:方向键移动,空格攻击,每回合移动一次后结束回合
敌人行为:玩家进入攻击范围时发起攻击
胜利条件:击败 10 个敌人
失败条件:玩家生命值归零
初始数值:生命 100,攻击 15,敌人生成间隔 2 回合
这段文字看起来简单,但它决定了后续所有迭代的边界。Claude 写出来的第一版可能还很粗糙,但只要这些规则清楚,后续修改就有锚点。你不需要成为程序员,也能验收代码写没写对:跑一遍游戏,看规则是否被实现。
1.3 真正的门槛不是生成能力,而是验收标准
把整个项目做完后,我最强烈的感受是:AI 做游戏这件事,卡住人的永远不是“AI 能不能做”,而是“你能不能判定它对不对”。
如果你玩过很多游戏,你会对“手感”有直觉;如果你经常拆解游戏机制,你会知道一个战斗系统的核心变量是什么;如果你有基本的逻辑能力,你能在 AI 给出方案时判断它是不是偏离了需求。这些能力组合在一起,才是这个新工作流里的核心技能。AI 负责产出,你负责验收;AI 负责速度,你负责方向。
想清楚这一点之后,工具的选择反而不是最大的问题。用 Claude 也好,用其他模型也好,换成本地部署也好,核心工作流是一样的。这也是后文的实操步骤都围绕流程展开,而不是围绕某个模型版本展开的原因。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 从一句话需求到可玩原型:最小流程是这样拆的
2.1 第一步:先用一小段话锁死玩法规则
很多 AI 生成项目的失败,不是输在生成质量,而是输在需求描述太模糊。你给 AI 一句“帮我做一个肉鸽卡牌游戏”,它确实能生成一个,但那个游戏大概率不是你脑子里那个。
这里的建议是:不要急着让 AI 写代码,先让自己把规则写出来。哪怕只有三行字,也要落在文本里。下面这个模板是我很常用的:
text复制游戏类型:
操作方式:
敌人行为:
胜利条件:
失败条件:
初始数值:
填完之后,你会发现两件事:第一,你对这个游戏的想象其实没那么多细节;第二,把细节补全后,AI 的输出会准确得多。这一步虽然不产生任何游戏内容,但它是整个流程真正的地基。
2.2 第二步:先要一个单文件可运行版本,而不是完整架构
第一次让 Claude 写代码时,建议明确要求:先做一个单文件、无外部依赖的最小版本。对于一个简单的 2D 俯视角游戏,常见做法是让 Claude 用 Canvas 和 JavaScript 生成一个 index.html,双击就能打开,或者用简单命令启动本地页面。这样你能在最短时间内看到“规则是否跑起来”。
此时不要追求代码分层、不要引入工程框架、不要配置复杂的数据结构。单文件版本的价值只有一个:验证玩法的骨架。骨架活下来之后,后面所有重构都有依据;骨架如果从一开始就死在复杂架构里,你可能连“它哪里不对”都看不出来。
一个最小目录结构可以长这样:
text复制game/
├─ index.html
├─ script.js
├─ style.css
├─ assets/
│ ├─ enemy_01.png
│ ├─ bg_title.png
│ └─ hit.wav
└─ CHANGES.md
如果 Claude 只给了一个 index.html,那就先用这个文件跑通,再按需拆文件。
注意:不要一上来就要求 AI“用最工程化的方式组织代码”。先跑通,再优化。对 AI 合作也是这个顺序最有效。
2.3 第三步:素材接入顺序,先功能后美术
全素材 AI 生成很容易让人兴奋到想先把图片全部生成好,再开始写代码。我建议反过来:先用色块和临时形状把功能跑通,再逐步替换真实素材。
原因很简单:功能和玩法逻辑的正确性,与最终美术素材无关。如果先用色块验证了“移动、攻击、击败敌人、重开”这条链路,后续换图片时,只要路径和尺寸正确,游戏不会突然坏掉。反过来,如果一上来就接满图片和音效,一旦逻辑有 bug,你会分不清问题是出在逻辑还是素材加载。
素材接入时,需要让 Claude 知道素材文件的位置、命名和尺寸。比如让 AI 在 game 目录里读 assets 下的文件。如果你用的是 Claude Code 这类可以访问本地工程的编码工具,它可以直接帮你替换路径、跑本地命令;如果只是在网页聊天窗口里生成代码,就需要你手动把文件保存到正确的目录,并把最新完整文件或片段反馈给 AI。
2.4 第四步:建立变更日志,让 AI 知道当前状态
AI 的对话上下文再长也有边界。当你和 Claude 从第 1 版聊到第 20 版时,它很容易忘掉第 3 版时定的数值或第 8 版时删掉的系统。
我习惯在工程里放一个 CHANGES.md,每次做需求变更后追加一条记录。之后让 Claude 修改前,先读这个文件。格式不需要复杂,保持可读:
text复制- [0.1] 初始版本:玩家移动、攻击,敌人追击,击败 10 个敌人获胜
- [0.2] 玩家血量从 100 降到 80,攻击从 15 提升到 20
- [0.2] 新增道具:拾取后回复 15 生命
- [0.3] 删除技能系统,保留普通攻击
这条记录不是什么工程神器,但它能极大减少“AI 重新写出你已经删掉的功能”这类问题。它同时也在训练你:每一次改动都有成本,所以你要更清楚自己到底想要什么。
3. 为什么单次跑通容易,反复迭代才是真正的分水岭
3.1 上下文越长,AI 越容易忘记约定
第一版跑通之后,很多人会进入一个表面繁荣的阶段:让 AI 加新怪、加武器、加商店,每次都能生成。但大约十几轮之后,你会撞到一面墙——AI 开始做一些让你困惑的事:把已经删掉的功能加回来,改变函数名让之前的代码报错,或者“修好”了一个你根本不想让它碰的问题。
这不是凭空出现的现象。长对话里,AI 对早期约定的记忆会衰减,尤其是当新需求占满了上下文时。它不会故意违背你,只是它的“注意力”被你最新的指令占据了。
对策有几个:
- 关键数值和规则不要只存在对话里,要存到 config 或文档中。
- 每次迭代只围绕一个明确目标。
- 如果对话变得太长,直接开一个新对话,并把当前文件结构和功能清单发给 AI。
- 把“不要修改 XXX 模块”写进变更日志,让它每次修改前先看到。
把这些做起来,你就不太会经历“越改越乱”的崩溃。
3.2 素材风格统一:比写代码更棘手
代码起码有语法错误和报错可以定位,素材风格不统一则完全是另一类问题:没有报错,没有运行时崩溃,但玩家一眼就能看出不对劲。
这个问题在 AI 生成素材的项目里几乎一定会出现。因为生成工具的每一步都带有随机性,你可能上一张图用了一种风格提示,下一张稍微改动了一个词,整体观感就变了。
我的建议是:
- 固定一套风格关键词,每个素材生成时都带上。
- 尽量用同一张参考图去约束风格。
- 角色、道具、背景分别建立素材审核清单。
- 如果你已经生成了几百张零散图片,不要全塞进游戏。先挑出最符合气质的一套,后续所有生成都围绕它调整。
素材风格不是“好看”问题,而是“系统性”问题。它决定玩家会不会在进入游戏的第五秒就失去沉浸感。
3.3 “能跑”和“好玩”是两种完全不同的验证指标
很多 AI 生成的游戏第一版都能跑:有画面、有敌人、能赢能输。但玩起来就是差了点什么。常见的差距来自几个微小的点:按键响应不够即时、攻击动作有延迟、被击中时没有反馈、敌人行为机械、结算界面太突兀。
这些都可以在代码层调整。你可以让 Claude 把“一帧延迟”改成“即时触发”,把受击反馈做成“闪烁 + 屏幕震动 + 音效”。但前提是你能说出“哪里不对”,而不只是“不好玩”。
这里有一个很实用的方法:把“好手感”拆成可验证的小指标。比如:
- 按下方向键后,角色移动的启动延迟应小于 100ms。
- 按下攻击键到伤害生效应小于 100ms。
- 敌人追击的判断距离应明确写在配置里。
- 死亡后应在 200ms 内看到重开界面。
把这些指标写下来,比给 AI 写一句“让操作更流畅”有用一百倍。用 AI 做游戏的人,能给出这种具体指标,才算真正进入了“玩法开发”的角色。
4. 用 Claude 写玩法时,我建议遵守的几条工程纪律
4.1 每次只改一个模块
和 AI 合作时,最容易发生的事是:你让它“顺手优化一下战斗”,结果它把地图、UI、角色状态全改了,还引入了新的 bug。
我的做法是每次只提交一个明确的小目标。这一轮只改玩家移动,下一轮只改敌人 AI,再下一轮只加道具系统。每一次修改后都要跑一遍游戏,确认改动没有破坏现有功能。不要攒着一堆修改一次性给 AI,否则你连问题来源都无法定位。
注意:每一轮迭代只让 AI 处理一个目标。目标越多,定位问题的时间就越长。
4.2 数值和逻辑分离
AI 在修改过程中很容易把数值直接写死在代码里。生命值、伤害、移动范围、生成概率这些数据,一旦散落在函数里,后期调整就会变成灾难。
更推荐的做法是建立一份配置对象或 config.json,把关键数值全部放在里面。这样你不需要让 AI 去代码深处找地方改数,只要改配置,再让 AI 确认配置被读取即可。比如:
json复制{
"player": {
"hp": 100,
"damage": 15,
"moveRange": 1
},
"enemy": {
"hp": 30,
"damage": 10,
"moveRange": 1
},
"winCondition": {
"enemiesToKill": 10
}
}
这是一个非常简单的结构,但它能让玩法版本的对比和回滚变得可行。
4.3 用特性开关控制新增玩法
给游戏加新系统时,不要直接替换掉现有玩法。先用一个布尔开关把新功能“关着”放进去。比如新加一个商店系统,新增变量 enableShop = false。先确保关闭时原版游戏完全正常,再在测试通过后把它打开。
这样做的好处是:你随时有一个可玩的稳定版本,不会被半成品的实验功能绑架。对 AI 协作显得尤其重要,因为 AI 经常会把没完成的功能也写进代码,而这些功能可能正在悄悄破坏原来的逻辑。
4.4 维护一个给 AI 看的变更日志
这个习惯我在第 2 章提过,但它值得在工程纪律里再强调一次。变更日志不是给人读的备忘录,而是要成为 AI 每次修改前的输入材料。
我会在 CHANGES.md 里保留最近 20 条左右的变更,然后在新对话一开始直接给 AI 看。同时明确指令:“先读变更日志,再阅读代码,然后只修改给定的目标。”这样即使换了一个新对话,AI 也能快速建立项目背景,减少错误改动。
4.5 验收必须靠运行,不能靠读代码
AI 说自己修好了某个问题,和这个问题真的修好了,是两码事。尤其是游戏这种交互性强的项目,静态读代码根本无法判断手感。哪怕修复看起来很简单,也要实际打开游戏操作一遍。
我会维护一份手动验收清单,包含几项固定检查:游戏能否启动、能否移动、能否攻击、敌人是否会行动、胜负条件是否触发、重开是否正常。清单很短,但每次 AI 改完之后都跑一遍,能帮你挡住大量“看起来修复了但实际没修复”的改动。
5. 游戏跑不起来或不好玩?按这个顺序排查
5.1 先分现象,再决定排查路径
以下问题经常互相叠加,但你最好先判断现象属于哪一类,再动手:
| 现象 | 更可能的层 | 优先检查项 |
|---|---|---|
| 页面白屏 | 运行环境/脚本错误 | 文件路径、脚本加载顺序、浏览器控制台报错 |
| 有画面但操作没反应 | 逻辑层 | 事件绑定、输入监听、角色状态机 |
| 玩法行为不符合描述 | 需求层 | 需求描述是否含糊、AI 是否误解规则 |
| 素材不显示/显示错位 | 资源层 | 文件名、路径、大小写、格式、尺寸 |
| 玩起来“很怪”但跑得动 | 体验层 | 数值、帧率、碰撞范围、反馈延迟 |
这个表格不是万能,但它能让你从“全乱了”进入“先看哪个文件”的路径。
5.2 运行环境和依赖检查
如果是白屏或无反应,先看运行环境。最简单的方式是:检查浏览器控制台有没有报错,再确认文件路径是否正确。如果你是在网页聊天里得到的代码,保存到本地后直接双击 HTML 打开,有时会因为本地文件访问限制导致资源加载失败。这种情况下可以启动一个普通静态服务器,或者用支持本地工程的编码工具直接运行。
如果你在 Windows 上使用某些本地运行的编码工具,启动时遇到虚拟化或环境相关的提示,通常需要先检查系统的相关功能开关、Node 和扩展版本是否符合要求。这类问题是环境问题,不是玩法逻辑问题,先解决环境再继续。
5.3 规则歧义导致行为不符合预期
很多“AI 写错了”的根源,其实是需求描述有歧义。比如你说“敌人会追击”,AI 可能实现成敌人每回合都向玩家靠近一格;但你可能想要的是“敌人只有在距离三格以内时才追击”。在让 AI 修改前,先把规则用确定性的语言重写一遍。
一个实用句式是:“当条件 X 满足时,执行动作 Y;否则执行 Z。”把游戏的每种情况都朝着这个句式靠拢,AI 的输出准确度会明显上升。如果改了仍然不对,就把当前执行结果和期望结果一起贴给它,不要只贴“还是不对”。
5.4 素材不显示或加载失败
素材问题的排查链路一般是:文件名 → 路径 → 格式 → 尺寸 → 加载顺序 → 引用方式。AI 在生成代码时,如果它不知道文件名大小写和扩展名,很可能写了错误路径。确认素材文件真实存在于 assets 目录,再把路径粘贴给 AI,并要求它严格按这些文件名写入代码。
音频素材还会多两个坑:格式兼容性和循环点。某些浏览器不完全支持所有音频格式;如果音效循环播放时中间有断裂,需要检查音频本身是否首尾衔接。这些不是代码层级一定能解决的问题,可能需要回到素材生成环节重新处理。
5.5 版本回退:至少保住一个能跑的版本
排查的最后一道保险是版本。哪怕你没有用 Git,也要在每次修改前把当前能跑的完整文件复制一份,命名带上版本号,比如 game_v0.3.html。AI 改坏了之后,你能立刻回到上一个可用版本,而不是停在原地和它反复拉扯。
等玩法稳定一点,再用 Git 这样的版本管理工具正式接管。这会让后续所有试验都变成“可以随时回到昨天”的安全操作。
6. 如果想把原型做成长期项目,还差这几块拼图
6.1 版本管理,哪怕只有一个人
前面说的复制文件是最原始的版本管理,但它有个致命问题:你很难知道两个版本之间到底改了什么。如果项目还要继续做下去,建议尽早进入 Git。一个人也要建仓库,每次 AI 提交一组改动后,你手动 commit 一次,写清楚这次改了什么、是哪个需求导致的。
这样做还有一个额外价值:当你让 AI 在新对话中工作前,可以直接把 git log 给它看。它比一份手写变更日志更可靠,因为不会漏掉任何人提交过的改动。
6.2 日志和调试面板
游戏跑起来后,不要只依赖眼睛。如果你发现某个敌人打不死,或者血量数值不对,最好能有一个调试面板,直接输出玩家坐标、当前血量、敌人状态、帧率等信息。
可以让 Claude 在代码里加一个调试开关,按 F2 或输入 debug 打开或关闭。面板数据不占用最终画面,但它会让后续所有 AI 修改更可诊断。
6.3 最小冒烟测试
针对游戏项目,完整的自动化测试成本不低,但你可以建立一个“冒烟测试清单”:每次修改后手动跑一遍关键路径。如果玩法核心逻辑是纯函数,也可以把结果和预期做简单比较。
更进阶一点的做法,是让 Claude 把胜负判断、伤害计算这类逻辑抽成独立函数。这样以后你可以针对这些函数写最简单的断言,防止 AI 改一个功能时把另一个基础规则改坏。
注意:就算不写测试,也要保证每次修改后都有一版可运行的稳定版本。这比任何测试工具都重要。
6.4 素材库管理
AI 生成素材会迅速产生大量半成品、废图、变体。如果全部堆在 assets 文件夹里,几十轮迭代后,连你自己都不清楚哪个文件在用、哪个已被淘汰。
我会建议维护一份素材登记表,包含文件名、用途、生成时间、状态(使用中 / 备用 / 废弃)、风格备注。随着项目变大,这份登记表会成为比 AI 更重要的资产。它让新素材的接入和旧素材的回退都变得可追踪。
6.5 成本、模型边界与长期维护
用 AI 做游戏不是一次性生成,而是长期迭代。你需要留意每次模型调用的成本、上下文长度限制、以及生成结果的不稳定性。Claude Code 或 API 调用等方式各有边界,但只要流程稳定,换一个模型或换一个工具都不会让项目塌掉。
也要意识到:完全依赖 AI 生成的素材,版权和授权问题在正式发布前必须确认清楚。这不是本文展开的重点,但如果你是朝着上架、售卖或公开分享去的,需要提前处理。至少,自己要知道当前 AI 生成内容的使用边界,并保留生成记录、参数和来源,避免后续麻烦。
最后一点是心态。用 AI 做游戏是对流程管理能力的考验,而不是对提示词技巧的考验。提示词再漂亮,如果你的验收标准和迭代习惯不清晰,项目还是会烂尾。
用 AI 做游戏这件事,真正的主体始终是你自己。素材可以由生成工具产出,玩法代码可以由 Claude 写,但“这个游戏我想怎么玩、哪里不对、下一步加什么”,必须由你来回答。比起研究更炫酷的生成技巧,我更建议你先从那个最简单的版本开始:把玩法规则写清楚,让 AI 给你第一个能跑的文件,然后动手去玩它。
只要你能跑通第一版,就会意识到后续的迭代,本质上已经不只是 AI 生成的问题,而是你把一个想法变成作品的能力问题。这种能力不会随模型版本而过时,它会一直属于你。
