ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

安卓3D游戏AI开发实测:三大模型代码生成与修复能力对比

安卓3D游戏AI开发实测:三大模型代码生成与修复能力对比

最近有人让我帮忙做一个安卓3D寻宝小游戏的Demo,我偷了个懒,把这活儿直接拆给了三个模型——Step 5 Preview、DeepSeek V4 Pro、GLM5.3,让它们各自独立“交作业”,我再逐个验收。说老实话,这两年AI写代码早就不稀奇了,但拿同一个3D游戏需求同时喂给三个模型、还要从工程角度分出高下,这个我还真没系统干过。这篇文章就是这次完整实测的记录:需求单怎么设计、三家方案怎么拆解、跑起来之后的真实表现差距在哪里、故意埋入Bug后的修复能力,以及最终我的选型结论。适合正在纠结“到底该用哪个模型帮我写代码”的人,也适合想在AI辅助开发里找到一套靠谱方法论的独立开发者。

1. 为什么拿“安卓3D游戏”当考题:这个场景太能暴露模型深浅

1.1 游戏Demo是最容易“看着热闹”的题目

市面上评测模型写代码的内容很多,但大多停留在“生成一段冒泡排序”“写一个登录页”这类玩具题。这种题目很难区分模型优劣,因为代码量小、逻辑单一,随便哪个模型都能糊弄过去。我不想要这种结果,所以把题目定成了“安卓3D寻宝迷宫小游戏”,原因有三个:

第一,3D游戏天然涉及图形学底子,包括顶点变换、着色器、光照、深度缓冲、相机矩阵,这些不是背几个API就能编出来的。第二,它需要跨模块协作,Android生命周期、触摸输入、渲染循环、碰撞检测、游戏状态管理,一个模型如果只是“表面会写”,在这个组合拳面前很快露馅。第三,游戏项目的结果最直观,下载安装后跑一分钟,好与差一眼可见,编译不过就是不过,穿墙就是穿墙,没法靠注释和README来撑门面。

我把这个方向定成“开源安卓3D游戏”的思路,要求最终产物是一个可复现的工程,不用Unity和Godot这类成熟引擎,直接用原生OpenGL ES 2.0写。原生渲染意味着模型必须自己处理矩阵、着色器、顶点数据,这对AI来说是真正硬核的考题。

1.2 评测维度怎样定:跑通、手感、可扩展性

确定题目后,我设计了六个评测维度,每一项都有明确的过线标准:

  • 首次生成完成度:生成的工程能否直接编译、直接安装
  • 运行稳定性:启动是否崩溃,切后台再回来是否异常
  • 渲染表现:光照是否正确、场景层次是否清晰、低多边形风格是否有质感
  • 交互手感:转向灵敏度是否合适,摇杆操作是否跟手
  • 修复能力:植入Bug后能否准确定位并修复
  • 工程素养:代码结构、注释、命名、是否便于继续扩展

这六个维度基本覆盖了日常AI辅助开发的所有关键环节。我自己比较看重“修复能力”,因为真实开发里让模型从零写整个项目的时候很少,更多时候是让它在已有代码上改问题,这个能力直接决定了AI是帮手还是负担。

1.3 测试环境与控制变量

为了公平,我做了以下约束:三个模型各自独立对话,不共享上下文;需求单在同一份文案基础上微调称呼,保证任务描述一致;测试设备固定为一台Redmi Note 12 Pro,Android 13;帧率数据统一用Android Profiler记录。模型版本方面,实测时Step 5 Preview是预览版接口,DeepSeek V4 Pro走官方API,GLM5.3我本地方部署跑。

我不做“提示词工程”上的差异化调优,所有模型收到的都是同一份需求描述,这样才能看出模型本身对需求的拆解和理解能力。

2. 三个参赛选手的基本盘:能力画像与调用姿势

2.1 各模型的定位差异

实测之前,我对三家的预期不太一样。DeepSeek V4 Pro作为DeepSeek系列的旗舰版本,长上下文和代码生成一直口碑在线,推理链完整,适合处理复杂逻辑;GLM5.3这波热度很高,尤其是“可以本地部署”这一点,让它在私有化和成本控制上有天然优势,加上最近大家都在讨论豆包的代码模型和GLM5.3谁更强,我更想亲手验证一下;而Step 5 Preview作为预览版,本来被我当成“陪跑”,结果反而给了我不少惊喜。

我列了一张对比表,方便看清楚三家的起跑线:

维度Step 5 PreviewDeepSeek V4 ProGLM5.3
定位预览版,全能向旗舰版,代码/推理强化开源可部署,工程向
调用方式官方API官方API/网页本地vLLM部署
上下文能力中等偏上长上下文优势明显长上下文,但受部署显存限制
我对它的初始预期能跑但可能粗糙最稳的“六边形战士”工程质量可能最高

这个预期在后来的实测中被部分推翻,后面细说。

2.2 GLM5.3本地部署:vLLM镜像版本踩坑记录

这里单独说一下GLM5.3的部署,因为网上不少人问“GLM5.3用vLLM哪个版本的镜像”。我这边的血泪教训是:不要顺手拉最新镜像。一开始我直接用了最新的vllm-openai镜像,跑起来之后推理阶段一直报logits处理器相关错误,排查了半天才发现是镜像版本和模型权重兼容性问题。后来按官方支持矩阵里推荐的稳定镜像重新部署,才正常跑通。顺便说一句,本地部署时显存占用比你想象中大,GLM5.3跑起来之后常规对话、代码生成都比较稳,但吞吐量受显卡限制明显,出首字的速度不如云端API,这一点在选择部署方案时要提前想清楚。

2.3 生成速度的第一印象

接入之后我做了个简单测试,让三家用同一句“帮我写一个OpenGL ES 2.0版本的安卓迷宫游戏主循环”来试水温。结果是:DeepSeek V4 Pro首字返回最快,完整生成一份带注释的主循环代码大约用了90秒;Step 5 Preview慢一些,大约2分钟,但代码结构很克制,没有多余发挥;GLM5.3本地部署受推理吞吐影响,生成同样代码量花了接近3分钟,不过稳定性不错,没有中途断。这个速度差异在使用体验上是能感知的,特别是迭代修改时,DeepSeek V4 Pro的快速反馈优势会被放大。

3. 同一份需求单,三家方案各显身手

3.1 需求单长这样:一句话引导加详细约束

正式测试时我给出的需求单如下。考虑到模型对结构化描述更敏感,我特意把需求从“一句话”扩展成了“上下文加验收标准”,这也是我在实际项目里总结出的经验:跟AI协作时,需求写得越像产品验收单,产出越接近可用状态。

请用Java与OpenGL ES 2.0实现一个安卓低多边形风格3D寻宝迷宫游戏Demo: - 目标平台:Android,API 21以上,使用GLSurfaceView完成渲染 - 场景:一块地面,若干墙体,一个金色宝箱模型(可用立方体替代),宝箱随机放置在迷宫某处 - 视角:第一人称,左右滑动调节转向,上下滑动调节俯仰角 - 移动:屏幕右侧虚拟摇杆控制前进/后退/左右平移 - 碰撞:角色与墙体之间需要AABB级别碰撞检测,角色简化为半径0.2的圆形 - 玩法:走到宝箱附近1.2米范围内判定为“获得宝藏”,通过HUD显示状态 - 代码需完整可编译,关键类尽量拆开,方便后续扩展

需求明确到这种程度,理论上模型不需要“猜”我的意图,剩下的就是考察各自对图形学和Android渲染管线的掌握深度。

3.2 Step 5 Preview的方案复盘

Step 5 Preview给出的是一个标准的“三件套”结构:MainActivity负责生命周期和GLSurfaceView初始化,GameRenderer承载渲染循环,GameState管理迷宫数据和玩家状态。整体架构很干净,没有什么多余封装。亮点在于它把碰撞检测独立成一个CollisionUtils类,而不是像很多模型那样把判定逻辑塞在渲染器里,这一点很加分。

它的渲染方案偏“低多边形原教旨”:纯色填充加深度缓冲,没有贴图,地面用网格线划分出迷宫格子的空间感。光照部分只写了环境光加漫反射,没有高光,导致画面整体偏暗。第一人称相机的实现用了标准的Matrix.setLookAtM,转向灵敏度给了一个合理的初值,摇杆部分用自定义View处理触摸事件,没有过度设计。

短板也很明显,画面太寡淡,光照模型简单得接近“没有打光”。另外它没有做墙体合并,迷宫地图里每面墙都是一个独立的立方体去绘制,顶点数据重复严重,这会直接影响后续的帧率表现。

3.3 DeepSeek V4 Pro的方案复盘

DeepSeek V4 Pro交出来的工程在“科班感”上最强。它第一版就用了四元数来实现相机旋转,这在AI生成内容里很少见。四元数相比欧拉角最大的优势是避免万向锁,在自由视角的3D游戏里是更稳的选择。模型在注释里明确写到“使用四元数以避免视角翻转问题”,说明它不仅能写代码,还理解这么写的原因。

碰撞检测方面,它把玩家和墙体都抽象成了AABB,用最近点距离做判定,逻辑上是对的。但性能上有个硬伤:它在每一帧里遍历全部墙体做碰撞检测,没有做空间分区或预计算。迷宫规模小的时候问题不大,一旦墙体数量上去,帧率就明显下滑。HUD部分它用了FrameLayout叠加TextView的方式,稳定且便于更新,这个选择很务实。

它相比其他两个模型更“全能”的另一个证据是生成的代码行数最多,大约900行,远超任务最低要求,很多地方做了扩展预留。这带来一个使用上的现实问题:代码多意味着审查成本高,如果不是逐行看过就合入,反而容易埋雷。

3.4 GLM5.3的方案复盘

GLM5.3是本地部署跑的,生成速度不算快,但工程完成度是三家最高的。它的第一个版本就能直接编译运行,不需要我手动修任何东西。架构上它额外抽象了一个VirtualJoystick类,把触摸事件和摇杆绘制统一管理,这个小模块单独拎出来可复用性很强。

渲染层面它最“懂美术”,顶点着色器里做了MVP变换,片元着色器里计算了漫反射加雾效。雾效对低多边形场景来说有点过剩,但视觉上确实让迷宫有了纵深感,背景不再是一块纯色,而是从近到远逐渐变淡的层次。灯光也补了高光项,宝箱表面有一层光泽感,看起来更像一个“完成品”而不是技术演示。

它的过度设计表现在摇杆和游戏主循环的耦合上。VirtualJoystick内部直接持有对GameState的引用,改移动灵敏度时得两个类一起动,后期维护成本偏高。另外它的注释量非常大,几乎每个方法都有说明,这对阅读者友好,但也侧面说明代码结构的直接性不够,逻辑被拆得过碎。

3.5 首轮生成评分

第一轮完成后,我按六个维度打了分,满分5分:

维度Step 5 PreviewDeepSeek V4 ProGLM5.3
首次可编译435
运行稳定性445
渲染表现345
交互手感444
结构清晰度443
代码冗余度433

首轮总分:GLM5.3以25分领先,DeepSeek V4 Pro 22分,Step 5 Preview 23分。但第一轮只能说明“生成的静态质量”,真正的好戏还是得跑起来才算数。

4. 跑起来再说:渲染、手感与帧率实测

4.1 编译与安装实况

三份代码我逐一拖进Android Studio构建。Step 5 Preview的代码一次性编译通过,APK安装后可以启动。DeepSeek V4 Pro第一次编译失败,报错在着色器里一个精度声明缺失,我原样把报错信息粘贴回去,它很快定位并补上了precision mediump float;,第二次编译通过。GLM5.3的代码编译零报错,一次通过。

这个环节的差异其实很说明问题:着色器精度声明属于基础中的基础,DeepSeek V4 Pro这版为什么漏了?我倾向于认为是因为它第一版代码太多,注意力被分散在四元数、碰撞和HUD这些“大件”上,对小细节的把控反而弱了。GLM5.3生成的代码量适中,每个细节都被照顾到,这跟它的生成风格偏保守有直接关系。

4.2 渲染呈现对比:从“能看”到“好看”

安装完成后,我分别录屏并截图观察画面表现。

Step 5 Preview的迷宫能看清结构,但整体氛围像“傍晚没开灯”。地板的网格线清晰,墙体颜色偏暗,宝箱用的金色也没有光泽,一眼看出是纯色方块。这是因为它只有环境光和漫反射,没有高光。但从另一个角度说,它没有乱加特效,所有渲染都围绕“低多边形风格”来做,克制本身就是一种设计能力。

DeepSeek V4 Pro的画面比Step 5 Preview亮很多,法线贴图和高光都做了,宝箱在不同角度看有反光变化。但它默认的背景色选了一块饱和度很高的蓝色,迷宫整体被这种颜色压得很“跳”,视觉上不够沉稳。说明它对“低多边形美学”的理解还是停留在“技术正确”层面,对整体视觉调性缺乏判断。

GLM5.3的画面层次感最好。它给场景加了雾效之后,远处的墙和地面逐渐融入背景,近处物体轮廓清晰,低多边形风格反而被衬托出来了。宝箱的处理也最用心,金色的漫反射加高光分得很清楚,识别度很高。三家一对比,“能跑”和“好看”的差距一下就出来了。

4.3 交互手感与操控逻辑

手感测试我在同一台设备上的操作体感如下:

  • Step 5 Preview:转向灵敏度适中,摇杆响应有轻微延迟,但整体跟手;俯仰角限制在正负85度左右,不会出现视角翻到头顶再翻下去的问题
  • DeepSeek V4 Pro:四元数相机的转动很顺滑,没有任何抖动;但摇杆的最大速度偏大,手指轻微推一下就冲出去,需要自己调速度系数
  • GLM5.3:摇杆独立类处理得最细腻,按压力度有渐变加速效果,手指离开后也有惯性减速,操作质感最好;但它的移动速度上限偏低,在较大迷宫里走得慢

手感这东西其实最影响第一印象,一个游戏哪怕画面再好,操作不给力也很难让人玩下去。这轮我主观打分,GLM5.3最高。

4.4 帧率与生命周期:真实设备上的硬指标

我用Android Profiler抓了三家的帧耗时数据,换算成帧率:

模型静止帧率移动帧率切后台恢复
Step 5 Preview36 fps30 fps正常
DeepSeek V4 Pro38 fps20-24 fps正常
GLM5.352 fps45-50 fps正常

DeepSeek V4 Pro移动帧率骤降的根因就是碰撞检测遍历墙体过多。迷宫约30面墙,每帧都要做多次AABB相交测试,FragmentShader性能再高也被CPU段的逻辑拖累了。Step 5 Preview的表现中规中矩,它没有做任何性能优化,但也没有严重的性能杀手。GLM5.3在这个环节保持领先,雾效虽然增加片元着色器的计算量,但通过限制雾效计算范围控制了开销。

生命周期方面三家都稳,没有出现切后台再进入时渲染线程崩溃的问题。不过GLM5.3对onPause时是否释放资源的处理更规范,注释里明确写了“GLSurfaceView在onPause时自动暂停渲染线程,不需要手动销毁资源”,这种工程细节说明模型在Android内存管理上的理解更到位。

4.5 运行实测的阶段性结论

跑完这一轮,我在测试笔记里写了一句“GLM5.3有点东西”。但从下一轮开始,我决定把测试难度拉高,不再停留在“能不能跑”,而是直接测试“当你把代码弄坏之后,它们能不能帮你修好”。这个环节才真正体现模型在日常开发中的价值。

5. 故意植入的Bug:三家修复能力的极限测试

5.1 我埋了两个很典型的坑

我以Step 5 Preview生成的代码作为基准,人为植入两个Bug,然后把改坏的工程分别交给三家模型,说辞统一是“我这个游戏现在角色可以穿墙,帮忙看下可能是什么问题”。

第一个Bug是碰撞检测的边界判断符号写反。原本的逻辑是“当玩家距离墙体中心小于半径加墙体半宽时发生碰撞”,我改成“大于”触发,这样角色进入墙体后才会被“推”回来,正常行走直接穿墙。这个Bug很隐蔽,如果模型只看一处代码很难发现,必须理解AABB判定逻辑才能定位。

第二个Bug是相机旋转矩阵里两个转置运算改错,导致左右滑动转向时视角反向,同时伴有轻微抖动。这个Bug比穿墙更阴,它不崩溃、不报错,但手感完全坏了,需要模型具备线性代数基础才能排查。

5.2 三个模型的排查过程还原

Step 5 Preview拿到问题后没有直接给答案,而是先让我提供日志和复现步骤。这一步其实很稳妥,真实项目里如果模型不先问环境信息就直接改代码,大概率是在蒙。在我回复“无崩溃日志,仅穿墙和转向反向”之后,它很快定位到CollisionUtils的符号写反,给出了修复代码,同时修了相机矩阵的两个转置错误。修复完成后它提醒我“转向反向和穿墙是两个独立问题,建议分别验证”,说明它有“问题隔离”的意识。但它只改了报告里的问题,没有对代码做任何额外优化,属于“点到为止”的修复。

DeepSeek V4 Pro的风格完全不同。它拿到问题后直接扫描了全部代码,不仅定位到两个Bug,还在修复过程中顺手把碰撞检测从AABB重构成了OBB,理由是“OBB可以支持后续旋转墙体”。这个改动在技术上没问题,但明显超出了需求范围,属于“方案扩散”。修复后我再测帧率,发现比原版低了5帧左右,因为OBB的相交计算比AABB更重。它修好了问题,却也带来了新代价。

GLM5.3的排查过程给我留下最深的印象。它先解释了穿墙的可能成因,列出三个候选点,然后逐一排除,最终锁定CollisionUtils。修复时它不仅改对符号,还补上了速度衰减逻辑,防止角色在贴墙移动时出现抖动。对相机问题,它在修复后给出了一段简短的验证步骤,让我在真机上左滑十次、右滑十次确认转向一致。这种“修复加验证”的闭环,明显比其他两家更偏向于“交付可用结果”而非“提供代码片段”。

5.3 修复质量与回归风险对比

我用三个指标评估修复效果:定位准确率、修复覆盖度、回归风险。

指标Step 5 PreviewDeepSeek V4 ProGLM5.3
定位准确率高高高
修复覆盖度两个Bug均修复两个Bug均修复,额外重构两个Bug均修复,附带防抖
回归风险低中(OBB重构引入性能回归)低

这个结果基本印证了我的一个判断:AI的“生成能力”和“修复能力”不是同一件事。DeepSeek V4 Pro生成代码时思路开阔、方案先进,但在修复场景里容易炫技,把简单问题复杂化。Step 5 Preview和GLM5.3都更稳,区别在于Step 5 Preview的修复更保守,GLM5.3在保守基础上愿意多做一步“防止问题复现”的优化,这个度把握得更好。

6. 最终排名与我的选型建议

6.1 综合评分与最终结论

把两轮测试(生成加修复)合并,按总权重折算后的综合得分如下:

维度权重Step 5 PreviewDeepSeek V4 ProGLM5.3
代码生成质量25%4.03.84.6
首次运行成功率15%4.03.05.0
渲染与视觉表现15%3.04.04.8
交互手感10%4.03.54.5
Bug修复能力20%4.24.04.8
工程素养与扩展性15%3.84.04.2
综合得分100%3.883.784.64

这个排名可能会让一部分DeepSeek用户不服气,但这是我基于“独立完成一个完整小型3D游戏”这个具体任务得出的实测结论。如果换一个更偏向通用对话、快速问答的场景,DeepSeek V4 Pro的排名大概率会上升。我想强调的是,模型选型没有绝对优劣,只有场景匹配。

6.2 什么场景选谁,我的个人建议

结合这次的实测,我给三类不同需求的开发者一点参考:

追求“一次跑通完整工程”的,首选GLM5.3。它在工程完整性、注释规范、渲染表现上都很稳,特别适合需要交付Demo或外包项目的场景。如果你重视数据隐私或者长期部署成本,本地部署GLM5.3是性价比很高的方案,不过部署时要按官方支持矩阵选镜像版本,不能盲目拉最新镜像。

追求“高频迭代和敏捷开发”的,DeepSeek V4 Pro更合适。它生成速度快、回答信息密度高,适合把它当成“结对编程搭档”来用,在已有代码上快速补模块、查思路、做重构。但要注意它的方案扩散问题,给它的需求边界必须划清楚,否则它会帮你重构整个项目,反而增加回归风险。

追求“代码分寸感和稳定性”的,可以多试试Step 5 Preview。它的生成结果克制、不炫技,代码可读性高,适合需要长期维护的代码库。预览版目前的短板是复杂场景下的渲染表现和性能优化不足,考虑到它还在迭代期,后续版本值得关注。

6.3 这次实测给我留下的几个习惯

最后说几个我在实际项目里形成的用法,算是这次实测的直接收获。

第一,我现在越来越倾向“混合使用”策略:比如用GLM5.3做整体工程骨架的生成和首次审查,用DeepSeek V4 Pro做高频迭代的代码问答和快速修补,用Step 5 Preview处理那些需要稳定、可读、不折腾的具体模块。让不同的模型去做各自擅长的事情,比坚持“单模型全家桶”要高效得多。

第二,跟模型协作时,需求单的重要性远超绝大多数人的预期。我这次的需求单写清楚了平台、渲染API、视角、碰撞精度、判定距离、代码组织方式,三个模型都给出了工程级回答。而你如果只丢一句“帮我写个3D游戏”,得到的只会是一堆正确的废话。 AI的能力边界,很多时候取决于使用者的表达精度,这一点在这次实测里表现得非常充分。

第三,模型生成的代码越“漂亮”,越要警惕它的运行性能和回归风险。DeepSeek V4 Pro的OBB方案在理论上更先进,但在实际设备上导致的帧率下降是硬伤,这提醒我在采纳AI方案时,永远要把“能不能跑”放在“理论是否正确”前面。以后凡是模型主动“顺手优化”的代码,我都会额外跑一遍压测再合并。

这次把三个模型拉到同一张考卷上做完整实测,对我来说最大的收获不是排名,而是彻底扭转了“模型越贵越强”“越新越稳”这类思维惯性。Step 5 Preview、DeepSeek V4 Pro、GLM5.3这三家各有不可替代的位置,GLM5.3在工程完成度上实至名归,DeepSeek V4 Pro在生成速度和方案开阔性上依然强势,Step 5 Preview则在代码分寸感和稳定性上交出了超出预期的答卷。下一次如果你也要让AI帮你写一个游戏、一个应用或者一整个模块,不妨像我这样,先把需求单写清楚,再让它们各自独立完成,最后用你真机上的帧率和手感来做裁判——你会得到很多官网参数上根本看不出来的答案。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进