首页 / 资讯中心 / 文章详情

三大AI模型从零写3D跑酷游戏:工程级实测对比

三大AI模型从零写3D跑酷游戏:工程级实测对比 ★ FEATURED ARTICLE
最近手头正好有个安卓小游戏的演示需求圈里又被吵得很热的 Step 5 Preview、DeepSeek V4 Pro、GLM5.3 这三家模型刷屏我干脆把这三个新模型拉到同一个任务上比了一把让它们分别从零写一个 3D 跑酷游戏。这个测试做了差不多两个通宵中间踩了不少坑也摸清了三个模型的脾气今天把整个实测过程和结果整理出来给准备用 AI 辅助做小游戏的朋友做个参考。先说这次测试的设计思路。我没有用大而全的做一个游戏框架这种空泛提示词而是给每个模型派发了一份完全一致、非常具体的需求清单游戏类型、平台、核心机制、画面风格、包体约束全部写死。因为只有任务足够明确才能看出模型在真实工程场景下的差别。测试过程中我把每个模型的首次生成结果、修改成本、跑通时间、Debug 难度全部记录了下来同时验证了它们在安卓设备上的实际运行效果。下面直接进入正题。1. 测试背景与3D游戏需求拆解1.1 为什么拿 3D 游戏当测试基准3D 游戏几乎是 AI 编程能力测试的极限场景。它不像写个工具函数那样只考察单点逻辑而是要模型同时处理坐标系变换、三维数学、物理碰撞、渲染循环、输入事件、资源加载这一整条链路。任何一个环节出错游戏都会表现为黑屏角色穿模卡死等让人摸不着头脑的现象。我选 3D 跑酷这个品类的第二个原因是它的反馈足够直观。一个模型生成的代码是否靠谱不用看单元测试直接跑起来看角色能不能跳、障碍物能不能躲、计分有没有增长就行。而且跑酷游戏的需求边界比较清晰不像开放世界那样给模型留太多自由发挥的余量这对横向对比更公平。还有一个现实层面的考量跑酷游戏在安卓平台上特别常见代码量适中适合一个人短时间完成。如果用 AI 辅助做任何超过 5000 行的游戏项目模型的上下文窗口和代码一致性控制都会成为瓶颈跑酷这个体量正好卡在模型能控制住复杂度的范围内。1.2 给三个模型派发的同一份需求清单测试前我把需求写成了项目文档式描述避免模型理解偏差。原始提示词大概是这样的目标平台Android用 WebGL 方案实现跑在 WebView 里最终打出 APK核心玩法第三人称 3D 跑酷角色一直向前奔跑三条跑道点击或触摸滑动可以左右切换跑道跳跃躲避障碍视觉风格低多边形风格色彩鲜艳地面和障碍物使用几何体组合不做模型导入核心机制角色自动跑动并加速躲避障碍加分金币收集加 10 分撞到障碍物游戏结束操作方式支持键盘方向键开发调试用和触摸滑动手机用附加要求带开始界面、结束界面、实时计分、最高分记录localStorage性能要求包体尽量小运行帧率 50fps 以上这份需求同时考验了模型的三维场景搭建能力、交互设计能力、状态机管理能力和性能意识。我给三个模型的提示词一字不差唯一允许它们发挥的就是代码组织和风格。2. 三个模型出品的核心方案对比2.1 Step 5 Preview代码结构最现代但封装有点过度Step 5 Preview 的首次生成给我的印象是这个模型对现代前端工程化的理解很深。它生成的代码直接用了 ES Module 拆分、一个独立的GameWorld类管理三分场景、一个Runner类管理角色状态、一个InputHandler统一处理键盘和触摸事件。这种面向对象的设计意识在同级别模型里相当少见像是让一个带三年中大型项目经验的前端工程师写的。但它的问题也出在这里。Step 5 Preview 明显过度封装了一个追逐摄像机逻辑拆了三层继承工具函数散落在多个模块里互相引用实际生成的可运行代码行数高达 2100 行是第一名的近两倍。我试图只拿主角跳跃逻辑做小改动时发现要跨三个文件同步修改。对一个人短平快做的小游戏来说这种设计正规但有点背着重武器跑步的感觉。2.2 DeepSeek V4 Pro边界情况处理最好但生成速度中等DeepSeek V4 Pro 的优点非常集中它对用户玩到一半切后台再回来重复点击跳跃导致角色飞上天障碍物刷新时和角色卡同一帧这类边界情况的处理明显比另外两个模型完整。我在需求里并没有提到这些情形它能自己考虑并防御性地写出来说明模型的逻辑完备性训练做得比较到位。具体表现上它做到了障碍物生成永远不会和玩家初始位置重叠、金币被吃掉之后不会残留碰撞体、游戏结束时请求动画帧被正确取消避免后台继续消耗电量。这些小细节在日常开发里经常被人忽略但 AI 能主动考虑到确实省了我很多 Debug 时间。不过它的生成速度慢了些首次完整生成花了 5 分 40 秒比 Step 5 Preview 慢了大约一半。2.3 GLM5.3架构设计最完整但自带重型武器GLM5.3 给我的感觉是另一个极端它倾向于把项目做成一个可扩展的产品而不是一个小游戏。它甚至主动生成了一个场景资源管理器和事件总线理由写在代码注释里为后续增加新角色和新场景预留扩展点。这种思路上限很高如果是在一个长期维护的项目里这样的底子确实好用。但放在这次测试里这个设计就有点用力过猛。场景管理器加载资源的方式默认走异步而 WebView 里的本地资源走异步容易造成时序问题我实际运行时报了三次资源未就绪的错误。它生成的代码行数也是 1900 行级别和 Step 5 Preview 不相上下但依赖了更多自定义工具类学习成本更高。2.4 三个模型的横向对比一览这是我在测试中记录的客观数据每个模型基于相同提示词和同一台测试电脑的环境对比维度Step 5 PreviewDeepSeek V4 ProGLM5.3首次生成耗时3 分 12 秒5 分 40 秒4 分 8 秒生成代码行数约 2100 行约 1200 行约 1900 行首次直接可运行否缺少一个工具函数是无明显报错否存在资源加载时序问题代码组织风格现代工程化过度封装简洁实用边界处理强架构完整偏重型设计状态管理与事件处理类层次深改动成本高职责清晰易修改事件总线模式学习成本高真人修复到跑通耗时约 35 分钟约 15 分钟约 55 分钟最终运行帧率中端安卓机58~62fps60~64fps55~60fps从跑通的总耗时来看DeepSeek V4 Pro 在这次测试里是最省心的一个。Step 5 Preview 和 GLM5.3 的架构设计虽然更华丽但对小项目来说反而增加了负担。这不是说架构不重要而是要选匹配项目体量的架构——杀鸡用牛刀刀再好也使不上劲。3. 实操过程从生成到跑通的完整链路3.1 项目初始化和依赖安装因为三个模型生成的都是 WebGL 方案我在测试前先准备了一个空的前端工程作为统一底座。这一步非常关键给每个模型一个干净的入口避免它们互相影响。工程初始化用 Vite Three.js版本锁定在 Three.js r160 以上因为 r155 以后的版本对 WebGL2 的支持更完整安卓 WebView 的兼容性也好一些。项目的 package.json 核心部分大致是这样{ name: runner3d-test, scripts: { dev: vite, build: vite build }, dependencies: { three: 0.160.0 } }装完依赖之后我在src/main.js里只做了一件事初始化 Three.js 渲染器并输出版本号到控制台。然后让每个模型基于这个工程结构去生成游戏代码这样跑不起来时我能迅速判断问题出在模型生成的业务代码里而不是工程配置上。3.2 把模型生成的代码接进工程这块是整个测试里最花时间的部分。三个模型的代码风格差异巨大对接进统一工程时处理方式也不一样。Step 5 Preview 的代码是多个模块互相 import 的结构我一开始直接复制进工程结果报了一堆Cannot find name的错误因为它默认项目里存在一个全局配置文件而实际工程没有。处理办法是给每个模型一个入口文件规则所有需要在浏览器里运行的逻辑必须从main.js导出。然后让模型生成一个适配层或者我手工补一个。DeepSeek V4 Pro 在这个环节最顺利它生成的是单个大文件结构我直接替换main.js内容就能跑。GLM5.3 和 Step 5 Preview 则都需要我根据报错信息反向补齐它们预期的环境变量。给准备自己做这个测试的朋友一个建议不要在模型生成的代码上直接就改先完整跑一遍把报错整理成一个清单再定位到对应的代码区块一次性处理。这样比逐个报错去改要高效得多。3.3 跑通与本地调试实录调试阶段我在 Chrome 开发者工具里模拟了一台安卓手机开启 GPU 模拟和移动端视口。发现三个模型的游戏在桌面端表现几乎一致但切到移动端模拟时立刻拉开差距。Step 5 Preview 在触摸事件上有个典型问题它监听的是click事件而不是touchstart这导致手机上两种手势都有 300ms 左右的延迟角色响应明显迟钝。我后来在它生成的InputHandler里补了touchstart和touchend的监听才恢复正常的操控手感。GLM5.3 的问题出在场景加载顺序它的资源管理器先启动渲染循环再加载障碍物模型结果角色跑了三秒后障碍物才突然蹦出来中间这段路玩家是在空跑。我把它的await this.resources.loadAll()提前到渲染循环启动之前这个问题才解决。DeepSeek V4 Pro 的代码几乎一次跑通唯一的问题是我在真机测试时发现阴影渲染效果在某些 GPU 上偏暗后来调整了渲染器的阴影贴图采样率才正常。它可以称得上是这次测试里底层功底最扎实的一个模型。4. 关键参数调优与渲染性能实测4.1 帧率、DrawCall 与几何体数量怎么权衡3D 游戏在安卓 WebView 上的最大瓶颈就是帧率和渲染负载。我的测试设备是一台两年前的中端安卓机屏幕刷新率 60Hz。三个模型初始生成的效果都能跑在 50fps 以上但触发障碍物数量多一些之后 Step 5 Preview 和 GLM5.3 有明显的帧率波动。排查下来发现共同问题是模型默认给每个障碍物都加了动态阴影投射。在低多边形风格里阴影能显著增强立体感但每个阴影投射相当于多一次渲染批次。我在保留角色阴影的前提下把障碍物的阴影投射关掉只保留它们接收角色阴影的能力这样既保证了地面的立体感又降低了 DrawCall。优化后几个关键参数的参考值如下场景内同时存在的几何体数量控制在 90 个以内每个几何体的面数控制在 500 面以内超过的部分用标准材质替代细分几何体动态光源只保留一个主方向光不添加点光源和聚光灯按这几个参数配置后三个游戏的帧率都能稳定在 55fps 以上即使场景里有四十多个障碍物同时存在时波动也不大。4.2 碰撞检测手感与数值调优跑酷游戏的操作手感很大程度上取决于碰撞体的尺寸和时机判定。模型生成的默认碰撞盒都偏大正方形障碍物的碰撞盒几乎是视觉大小的 1.4 倍跳过去时经常出现明明看起来过了却被卡住的情况。我把碰撞盒收紧到视觉大小的 0.8 倍并给主角设置了碰撞宽容时间窗也就是在落地瞬间前后 100ms 内允许一次容错判定。这两个改动叠加之后游戏难度从几乎必死变成了稍微练一下能跑两分钟整体手感有质的提升。另一个关键的数值是跳跃高度和滞空时间。我调整后的参数是这样的跳跃初速度jumpVelocity 8重力加速度gravity 20。这样算出来的滞空时间是t 2 * jumpVelocity / gravity 0.8 秒最大跳跃高度是h jumpVelocity^2 / (2 * gravity) 1.6 米。在这个数值下角色能轻松跨过一个障碍物但如果连续跳两次第二次跳跃会在滞空时间只有 0.4 秒时落地从而产生一定的操作惩罚这比无脑连跳的体验好得多。4.3 打包 APK 与 WebView 集成游戏逻辑在浏览器里跑通之后最后一个环节是打包成安卓 APK。这里使用的是 WebView 套壳方案也就是用原生安卓应用创建一个 WebView 加载本地 HTML 资源。构建工具用的是 Capacitor它比 Cordova 的配置简单很多Node 环境下一条命令就能生成工程。打包过程中有个细节需要注意。Three.js 的渲染器强烈依赖 WebGL2 接口而系统 WebView 自带的 Chrome 内核版本可能偏旧在低版本安卓设备上会直接报WEBGL_debug_renderer_info is deprecated的警告或干脆黑屏。解决方法是推荐用户在应用内更新 WebView或者利用 Capacitor 的androidScheme配置把请求走 https 通道避免混合内容拦截。我的最终 APK 包体大小在 5MB 左右这在 WebGL 游戏里算是比较轻量的了。加载时间大概在 2 秒内对于一个小型跑酷游戏来说完全可接受。5. 常见问题与排查技巧实录5.1 模型生成代码时的高频坑这一节是从三次完整测试里总结出的高频问题几乎每个模型都踩过其中至少一个。整理成速查表方便后人避坑问题现象根因解决思路角色跑出场景后镜头穿墙碰撞检测和镜头跟随互相独立未同步边界把镜头位置限制在场景边界盒子内手机上报undefined is not a function模型对 WebView 的 API 兼容性考虑不足在入口处做 window.foo画面全黑但有 UI 显示渲染器未跟随 WebView 的 CSS 像素比调整查询devicePixelRatio并设置渲染器分辨率游戏逻辑跑得飞快控制器代码用requestAnimationFrame但未做时间增量计算引入时钟所有移动距离乘以deltaTime障碍物会和金币重叠坐标生成用同一随机种子分别用两个种子并加最小间距约束这些问题都不是模型独有的真人写代码也常遇到。但 AI 生成时代更容易让人放松警惕因为代码能跑和代码没问题之间的差距是巨大的。5.2 GLM5.3 本地部署时 vLLM 镜像版本怎么选有些朋友会想把 GLM5.3 部署到本地环境然后通过 API 调用做批量代码审查或自动补全。这里涉及一个很实际的部署问题用 vLLM 跑 GLM5.3 时到底应该选哪个版本的推理镜像。我测试下来的结论是优先选 vLLM 0.6.x 以上的镜像并且要和你的 CUDA 版本严格匹配。vLLM 的镜像对 GPU 的驱动版本非常敏感如果用 CUDA 11.8 的环境强行适配 vLLM 0.7 的镜像启动阶段就会报Unsupported CUDA version或显存初始化错误。实际操作中我给本地服务器配的是 CUDA 12.1 环境选用的 vLLM 镜像是vllm/vllm-openai:latest启动命令里单独指定了模型路径和端口。GLM5.3 的模型文件比较大首次加载约需要 1 到 2 分钟但加载完成后推理速度可以达到每秒 40 到 50 个 token。这个速度用于日常代码片段审查完全够用。不过说实话自部署模型的成本不低。如果你是偶尔用一下建议调用云 API 更划算如果你是要频繁做代码批量处理自部署才值得投入硬件成本。5.3 安卓真机调试时的 WebView 兼容问题最终放到真机上运行时我发现几个在模拟器里完全看不出来的问题。第一个是触摸响应的灵敏度模拟器的触摸事件远比真机平滑真机上快速滑动时会发生事件丢失。我通过给滑动操作增加触控合并窗口把 50ms 内的连续滑动视为一次操作才解决了这个问题。第二个问题是声音播放。WebView 在安卓上默认不允许自动播放媒体必须由用户点击触发一次后才可以播放。模型生成的音效逻辑里有的是在游戏开始瞬间就播放背景音乐结果在真机上根本不出声。解决办法是把音频上下文初始化放到开始游戏按钮的点击事件里这一步很关键。第三个坑是屏幕息屏问题。玩家会一直拿着手机玩如果长时间没有触摸安卓默认会锁屏。我在AndroidManifest.xml里给游戏 Activity 设置了FLAG_KEEP_SCREEN_ON标志这样游戏运行时屏幕不会自动熄灭。这个改动虽然不在 WebGL 代码范围内但对实际游玩体验的影响极大。6. 最后再分享一点我的实测心得三个模型测完之后我对它们的定位有了很清晰的认识。Step 5 Preview 像一个追求代码美感的高级工程师适合在大团队和大项目里发挥价值但如果一个人想快速出东西它替你考虑的那些复杂扩展反而成了负担。DeepSeek V4 Pro 更像一个稳扎稳打的实战派生成代码的速度不算快但质量扎实边界情况考虑周全很适合做小型游戏原型和工具脚本是这次测试里我实际用得最顺手的。GLM5.3 的思路最大代码架构最完整适合需求会持续演进的正式项目但也要接受它更高的调试成本。如果你也打算用 AI 辅助做 3D 游戏我的建议是先确定项目体量再做模型选型。小项目直接让模型出单体文件别让它设计模块结构大项目则可以让它提前做模块拆分。还有一个小技巧提示词里明确写上不要做不必要的抽象这句话能帮你省掉大量删代码的时间。AI 编码工具是很好的帮手但它生成的第一版代码永远只是草稿打磨代码的过程才是测试模型真实功力的时刻。
阅读完成 · 觉得有帮助?
咨询建站