
一句话让顶级大模型写出一款能玩的QQ飞车这听起来像是段子但我拿到代码、按住方向键跑完第一圈的时候确实愣了一下。能在浏览器里直接跑起来的3D赛车麻雀虽小五脏俱全甚至自带漂移和回环赛道。国内外的AI编程模式我已经玩过不少这次的不同点在于只用了一句提示词没有分轮对话、没有贴需求文档、没有喂参考代码模型就把一整个游戏从零写完了。这篇我不只讲结果我把整个过程拆开提示词里到底藏着什么魔法、第一版代码跑起来是什么样子、手感怎么调的、AI编程的边界在哪儿以及“一句话提示词”背后真正生效的写法是什么。1. 一句话提示词的背后密码模型怎么把“飞车”翻译成代码先说结论这句提示词没有想象中玄乎。我最终使用的是用HTML、CSS和JS写一个类似QQ飞车的3D赛车小游戏包含一条封闭赛道、可以控制方向漂移的赛车、以及若干AI控制的对手车辆。请用Three.js渲染3D场景赛道设计成起伏回环的立交结构初始代码要能直接在浏览器中打开运行。停在这里想一想“一句话”里其实有四个信息层级技术栈HTML/CSS/JS Three.js、玩法核心类似QQ飞车、漂移、场景规格封闭赛道、AI对手、立交结构、交付标准直接可在浏览器运行。1.1 模型接到这句话后的内部推理路径顶级大模型在处理这类请求时不会真的从零开始。它会先把这个需求映射到它训练见过的大量游戏源码模式上。Triple A大作它没见过浏览器小游戏、Three.js官方示例、开源赛车Demo这类语料它是见过很多的。所以它所谓的“写出来”本质是组合匹配3D赛车场景管理车辆模型物理碰撞赛道样条曲线地形生成AI车状态机追逐逻辑。值得注意的一点是模型会主动做“规格裁切”。你全篇带着QQ飞车四个字但模型并不会试图复刻端游级别的画面和手感它知道浏览器实时渲染的天花板在哪会选取一个“看起来像那么回事”的最小可玩版本。这一层裁切能力恰恰是定价更高的模型和普通模型拉开差距的地方——同样一句提示词弱模型会做出一个死板的地面方块加前后移动强模型会做出纵深感、速度感因为它在推理中就完成了策划工作。1.2 提示词里的隐性约束为什么重要“封闭赛道”这个词非常关键。如果不写很多模型会生成一条直线赛道车只能往前冲加上“封闭”二字模型就必须绕路必须考虑弯道与回环赛道的结构复杂度立刻上去了。“AI控制的对手车辆”也很关键。这个要求等于强制建模部分加入NPC系统车的数量、间距、巡航逻辑全都跟着来了。纯写赛车的模型很多愿意主动给你塞对手车的很少不写就是没有。“在浏览器中直接打开运行”是工程约束。这句话告知模型不要用Node服务、不要用Webpack构建、不要拆成多个模块文件它就被迫选择CDN引Three.js、单一HTML文件方案。否则模型很可能给你一个npm项目你还得自己搭环境。从认真解剖的角度看这句提示词成功的底层逻辑是它给了模型一个足够细的目标函数同时留了充分的技术自由度。就像布置任务时只讲清楚验收标准而不限定实现路径发挥空间反而让模型的组合能力得到了释放。2. 实测复现从零到“能玩”只用了一步提示词发给各家大模型不点名主要是头部那几家Claude、Gemini、DeepSeek、GPT都测过一轮之后等到的回复几乎都是同一个结构一个完整的HTML文件外加一小段说明文字。我用浏览器直接打开第一版跑起来的画面可以这样概括3D赛道确实有起伏和一圈大回环车辆是简易几何体拼的操作是方向键上下键控制油门刹车AI车会沿着赛道巡游。2.1 第一版代码长什么样打开生成的HTML文件里能看到非常经典的Three.js结构。我截取几个核心片断来演示一下这个部分很有代表性// 车辆与地面接触的简单物理 function updateCar(dt) { let acceleration 0; if (keys.up) acceleration 1; if (keys.down) acceleration -0.5; speed acceleration * dt * 30; speed Math.max(-5, Math.min(speed, 30)); const steerForce keys.left ? 1 : keys.right ? -1 : 0; rotation steerForce * dt * 2.0 * (speed / 15); // 漂移横向摩擦消耗 driftFactor steerForce ! 0 ? 0.94 : 0.88; speed * driftFactor; }这个片段透露了很多信息模型没有引入物理引擎用“速度衰减横向抓地力”模拟手感漂移没做成单独的按键而是转方向盘时速度自然衰减。这套方案在真实游戏里叫做“Kart物理”和跑跑卡丁车、QQ飞车的手感理念是相通的——先降速再转向入弯后速度恢复。AI车辆的代码如下function updateAI(car) { const nextPoint trackPoints[(car.pointIndex 5) % trackPoints.length]; const dir new THREE.Vector3().subVectors(nextPoint, car.position); car.rotation Math.atan2(dir.x, dir.z); car.position.x Math.sin(car.rotation) * car.speed * dt; car.position.z Math.cos(car.rotation) * car.speed * dt; }AI没有复杂的路径规划就是沿着赛道控制点序列前面第5个点转向。这套“追踪提前点”的思路是自动驾驶循迹和游戏NPC路径追随里最基础也最有效的方案。模型居然直接就在第一版里用了说明它在训练数据中对这个模式极其熟悉。2.2 直接打开就能玩的真相有一点要提醒。模型说“直接打开就能玩”现实中大概率会有小问题。我实测的时候遇到的具体状况是Three.js新版用ES Module方式从CDN引入会导致本地file://协议下报跨域错误。部分模型会自动处理成旧版全局脚本引入部分则不会。解决办法是本地起一个静态服务比如任选一个python3 -m http.server 8080没有Python环境就直接用VS Code的Live Server插件。打开之后第一次完整跑通的时候我测了下手感基础值默认速度偏快过弯时撞墙概率很高漂移键只是减速没有真正意义的侧滑加速AI车速度恒定不会因为你的位置改变而调整。“能玩”在这个阶段绝不是“好玩”但它真正做到了闭环有赛道、有车、有操作、有对抗。这个闭环来自一句提示词足够了。3. 从“能跑”到“好玩”我把手感折腾到了极限第一版能跑起来只是门槛。接下来是我折腾的重点让手感接近“飞车”而不是“碰碰车”。这一步依然是靠大模型迭代但我换了一种提示策略不再是一句话而是让模型理解“我要什么”并且允许它给出多套参数。3.1 漂移手感的调校之路先记录一下我的具体操作过程。第一步我让模型输出全部玩法参数的配置表包含基础速度、最高速度、转向灵敏度、横向摩擦系数、漂移阻尼、AI车加速度。把参数列出来以后我才开始调整。第二步针对“漂移”做专项迭代。我给模型的指示是漂移应该是一个独立按键空格而不是转向时的被动降速。按住空格进入漂移状态时车辆应该保持更快速度并大幅增加横滑效果松开的瞬间根据当前转角给一个轻微推进力。这一版模型用了大约300行代码重写了车辆物理加入了storedDrift、driftFriction、driftBoost等参数。实测下来确实有QQ飞车那个感觉了入弯前按空格车身甩过去出弯松开空格车头自动回正并带一点小加速。虽然离端游的“集气喷气”还有距离但“甩尾”的核心反馈已经成立。3.2 回环赛道的视差与视野问题3D赛道最难受的问题在于视野。初始镜头位置在车子正后方一旦跑到回环倒悬段镜头会翻转视角变得极其晕。我给的第二条主要迭代指令是把摄像机改为始终保持在赛车正后方3米、上方2米的位置并让镜头在车辆大幅度转向时平滑跟随过渡时长给0.3秒的阻尼。改完之后的视觉舒服很多但新的问题出现了回环赛道顶点附近由于角度问题看不到前方路况容易直接撞护栏。后来我干脆加了个小地图一个2D Canvas缩略图显示全赛道轮廓、当前玩家位置以及前两个AI车的位置。这个改动幅度大模型完全自动完成我甚至忘了提示词里写没写这个需求——它自己加了个“提高可玩性”的模块。3.3 这一轮迭代的真实对比表我把自己实测后调整的核心参数整理成了表格可以看到“从能跑到好玩”改了些什么参数项第一版值调整后值原因最高速度3055无加速感转向灵敏度2.03.4转向太钝高速下打不满内弯漂移方式转向自动触发空格强制触发独立漂移阻尼还原飞车甩尾手感漂移横滑系数0.940.70横向滑动距离更长漂移结束推进力无2.5倍瞬时速度加成带来“出弯喷”的爽感AI车数量35开局后更有竞争感镜头跟随阻尼无硬跟随0.3秒平滑阻尼消除回环晕眩所有改动都只靠提示词完成没有手写一行代码。本质上我和大模型的交互已经是“策划对着程序说话的迭代式开发”。4. 那些没吹过的牛边界测试里AI露出的底色把AI夸上天之前我必须如实记录一下它的边界。吹过的牛是“顶级模型一句话写出能玩的QQ飞车”这句话没毛病可你要是把“能玩”的标准抬到正式游戏的水平AI当场就抓瞎了。4.1 碰撞体积与撞墙穿透第一版里车辆和赛道护栏的碰撞不是刚体碰撞只是一个“位置修正”。具体表现是撞墙之后车不是停住而是被推回赛道速度清零。360度镜头下看不出来俯视角就能看到车在穿模边缘疯狂抖动。我给模型的指令是“加入AABB碰撞检测并设置碰撞后的反弹”它倒是照做了但反弹方向计算得很粗暴——直接把速度向量取反。有一个更尴尬的事赛道在回环段的护栏碰撞盒模型计算的方位偏了大约半米导致车辆在正确赛道上也会被推出去。这个东西修起来只能用数值微调模型给的理由是“护栏厚度和轨道中心线偏移造成”。我调了第二次才修好这已经是第6轮对话了“一句提示词”的叙事到这已经破功。4.2 AI智商在弯道上的缺陷这个问题如果持续推演下去很致命AI对手过弯时不会刹车。速度是恒定值弯道半径一大AI车直接飞出赛道。模型第一版没有做任何弯道减速逻辑。我提示“AI在检测到前方3米处弯道曲率变大时应该降速”它后来加入了速度曲线但AI在回环段还是容易撞。到最后我放弃了因为AI撞墙以后会自动沿轨道点复位玩家看不出来只是AI名次会往后掉。4.3 模型对“好玩”的想象力上限最好玩的一个边界是我让模型增加道具系统类似飞车里的加速带、导弹、护盾。它真的做了但道具变成了赛道上方的半透明立方体吃到的效果是6秒内加速50%。没有小地图道具提示、没有道具栏、没有释放交互单纯一个被动效果。这说明大模型对“好玩”的理解还停留在“加一个正向状态增益”层面它没有能力自行完成玩法复杂度设计。但话说回来如果我也只给一句提示词它这个表现并不差。真正拉开体验差距的是后面那些迭代指令。这说明现阶段AI编程最真实的用法是把模型当“高密度初稿引擎”而不是“全能开发者”。它能在一分钟内给你一个可以跑起来的基座但你要接受基座附带大量“看起来像那么回事但经不起推敲”的实现。4.4 一个容易被忽略的限制模型上下文长度第三个边界不是模型能力问题而是工程问题。我测到第六轮迭代时模型的单次回复开始忽略前面的赛道结构直接在原始版本上打补丁。原因很清楚上下文窗口让它在第3-4轮后丢失了最初的核心赛道生成逻辑细节它给出的新代码是“补丁式”的A文件改三行B文件新增一段但它对全局文件头的引用已经记忆模糊。这种情况下如果我不主动告诉它“保留赛道生成逻辑只修改物理模块”它就会在修手感的路上顺带重写了赛道。经验是做大型单文件应用迭代时每3轮对话就重新粘一次完整要求并明确提示“只在XX模块上改动”。这个“防失忆”策略比任何花哨提示词技巧都管用。5. 方法论怎样把一句提示词用到极致很多人问我“为什么我让AI写游戏它的输出停留在hello world级别”其实问题不在模型在提示词的目标拆解方式。下面是经过实测验证的一套方法论适合从零到一生成小型应用。5.1 一句话提示词的标准配方那句“用HTML、CSS和JS写一个类似QQ飞车的3D赛车小游戏”被我分解之后稳定生效的公式是这样要素提示词中的体现作用技术栈与依赖HTML/CSS/JS Three.js让模型锁定可执行方案玩法锚点类似QQ飞车让模型调用赛车类游戏库的经典机制场景维度3D、封闭赛道、起伏回环立交决定场景复杂度与渲染选型元素列表可操控赛车、AI对手车辆打开核心玩法的必要模块交付标准初始代码在浏览器中直接运行杜绝工程化工具链依赖如果你只保留前三项模型可能会给你一个走不了的两车道加上后两项迎来的就是一个完整可玩的微缩游戏。实验下来每个要素都不可或缺。5.2 从一句话延伸到迭代的四条原则只靠一句话生成的成品游戏性大约有3分。要让它更接近“飞车”迭代阶段的目标感更关键一次只改一个系统。“调整漂移手感”可以但不要在同时要求“增加道具和改变赛道光影”模型会拣软柿子捏只把最好做的做了。要求先给参数表再动代码。让模型先输出“当前系统有哪些关键变量”这能让后续调整变得可预期而不是盲改。关键逻辑要明确给出机制。比如“漂移应该是独立按键触发的横滑轨迹”比“加强漂移”好一百倍前者是机制描述后者是模糊感受词。验收标准写进度化。让模型说清楚“完成度”而不是说“已完成”它会老实交代哪块是预期可用哪块是残次品。5.3 防踩坑清单血泪总结以下每一条我都实际踩过写在这里帮你绕开没有本地服务就直接双击HTML大概率白屏。原因ES Module跨域问题。解法先起http服务再谈其他或者让模型用官方旧版global脚本彻底绕开模块加载。别让模型一次性生成大而全的代码文件超过1500行后它的错误率会指数上升。宁可分段生成比如“先给赛道生成函数再给车辆控制脚本”。明确要求“注释使用中文”。不加这句话模型可能给你一份英文注释中文逻辑混乱的混合体排查时头皮发麻。模型给出的AI密度和数量经常偏低你如果在意对抗感直接写“AI数量为5”。否则它默认给2-3个不会有任何竞技压力。迭代对话超过10轮后建议开新会话重新粘贴核心需求保留需要的参数说明。旧会话的上下文污染比新手BUG更让人崩溃。涉及性能优化时明确告诉模型“优先保证FPS稳定在60”不然它会在赛道旁生成一堆光源和粒子低端机上直接卡成PPT。5.4 这个玩法还能怎么延伸基于这次“AI写飞车”的工程实践我试过一个思路把“QQ飞车”换成“一个人称反派的空战游戏”“一个三分钟一局的短跑竞技游戏”提示词其余部分保持不变模型同样能输出可玩原型。这说明“场景名玩法锚点规格参数交付标准”的组合已经是一个稳定的应用原型生成模板。如果你想更进一步还可以把生成的代码交给另一个模型做代码审查。我试过用一个模型生成完再用另一个模型“检查这个HTML游戏存在的BUG和安全问题并给出修复建议”结果很有价值它指出了赛道坐标数组存在越界风险以及在低端设备上纹理尺寸过大的内存问题。多模型协作正好弥补了单个模型自写自审的盲区。你其实可以现在就去试AI写游戏这件事被我磨了一下午之后最大的收获不是那个能玩的飞车Demo而是验证了一个认知大模型作为“高密度初稿生成器”的潜力远超想象但你把期望放到“全自动游戏开发”上现实会给你当头一棒。它最适合的定位是想法放大器——三分钟出原型半小时打磨手感剩下的无限细节由你来填。如果你手边就有浏览器和ChatGPT/Claude级别的大模型我建议你直接复制我那段提示词加上你自己的玩法想法跑一次试试。等你看到从一句提示词到一个能转动方向盘、能漂移、能超车的游戏画面时你对AI编程上限的理解应该也会跟着更新一个版本。别问我代码能不能商用——它只是原型它最大的价值是让你花十分钟亲手摸到AI时代写代码的新边界。