1. 三天连续运行的真实测试框架1.1 为什么选择Unity和UE5双引擎对照看到GPT-6连续运行3天这个命题我第一反应不是兴奋而是怀疑。大模型做游戏开发这件事单次对话生成几段代码、几个Shader片段早就有人验证过了但连续运行72小时、纯靠提示词驱动、同时推进Unity和UE5两个引擎的项目这个测试维度完全不一样。它考验的不是模型单次输出的质量而是长周期上下文保持能力、跨会话状态一致性、以及面对编译错误时的自我修正效率。我选择Unity和UE5做对照理由很直接。Unity的C#脚本生态成熟API文档规范模型训练语料里Unity相关内容占比极高理论上应该表现更好。UE5的蓝图系统和C混合编程对上下文理解要求更高尤其是蓝图节点连线这种非文本化的逻辑表达模型需要用文字描述出节点连接关系再由我手动还原这个转换过程本身就是巨大的信息损耗点。两个引擎的对照能看出模型在不同抽象层级上的真实能力边界。测试环境我固定在一台工作站上AMD Ryzen 9 7950X、128GB DDR5、RTX 4090 24GB、2TB NVMe SSD。Unity版本锁定2022.3 LTSUE5用5.3.2正式版。所有项目文件放在独立分区每天做一次完整快照备份。这个配置不算顶配但足够跑中小型游戏项目的完整开发流程不会因为硬件瓶颈干扰测试结论。1.2 三天时间窗口的任务拆解逻辑72小时不是随便定的。我把它切成三个阶段每个阶段24小时对应游戏开发的不同环节第一阶段0-24h核心玩法原型搭建。Unity侧做一个2D平台跳跃战斗的垂直切片UE5侧做一个第三人称探索开关门交互的场景。这个阶段重点看模型能否理解最小可玩原型的概念而不是一上来就铺大摊子。第二阶段24-48h系统扩展与内容填充。Unity侧加入技能攻击指示器、图文混排UI、地图切换UE5侧加入双指触摸蓝图交互、动态光照调整、模型遮挡剔除优化。这个阶段考验的是模型对已有代码结构的记忆和扩展能力。第三阶段48-72h优化与问题修复。包括性能调优、阴影问题排查、脚本控制物体逐渐消失的效果实现、以及二次元Shader的尝试。这个阶段最能暴露模型在长上下文中的遗忘和幻觉问题。每个阶段我设定明确的交付标准比如第一阶段结束时Unity项目必须能编译通过、角色能移动跳跃、攻击能触发伤害判定。不达标就记录问题但不中断测试继续往下走看问题会不会累积成灾难。提示连续运行测试最怕的是上下文污染。一旦模型在某次对话中产生了错误理解后续所有输出都会基于这个错误前提。我的做法是每6小时手动清理一次对话历史只保留项目文件结构和关键接口定义强制模型重新读取当前状态。2. 纯提示词驱动的核心机制拆解2.1 提示词工程在游戏开发中的特殊要求游戏开发和普通编程任务最大的区别在于状态空间巨大且相互耦合。一个角色移动功能涉及输入系统、物理引擎、动画状态机、相机跟随、碰撞检测五个子系统任何一个环节的提示词描述不精确生成的代码就是一堆能编译但跑不起来的废代码。我总结了一套针对游戏开发的提示词结构模板每个功能请求都按这个格式走【当前项目状态】引擎版本、已有脚本列表、场景层级结构 【目标功能】一句话描述要做什么 【输入输出定义】玩家输入方式、期望的视觉/逻辑反馈 【约束条件】性能预算、代码风格、必须使用的API 【验收标准】怎么判断做完了这个模板的关键在于强制模型先读取当前状态再动手。我试过直接说给角色加个二段跳模型生成的代码引用了根本不存在的变量名因为它不知道我之前的跳跃逻辑是怎么写的。加上状态描述后生成代码的首次编译通过率从不到30%提升到70%左右。Unity侧的提示词我偏向用C#伪代码描述逻辑比如用CharacterController.Move实现移动重力用Physics.gravity跳跃初速度通过Mathf.Sqrt(2 * jumpHeight * -Physics.gravity.y)计算。这种写法把数学公式都写死了模型只需要填充框架出错概率大幅降低。UE5侧则必须用蓝图节点的文字描述比如Event BeginPlay - Delay 0.5 - Set Actor Location (X100, Y0, Z50) - Play Sound这种链式描述模型理解起来更准确。2.2 上下文窗口管理与记忆保持策略GPT-6的上下文窗口虽然大但连续运行3天产生的对话量远超窗口限制。我的策略是分层记忆永久层项目文件树、核心接口定义、命名规范。这部分每6小时重新粘贴一次确保模型始终能看到。会话层当前正在开发的功能相关代码。每次请求只带最近3-5个相关脚本的完整内容。临时层报错信息、调试输出。用完即弃不进入下一轮对话。实测下来这种分层策略能让模型在第三天仍然记得第一天定义的角色属性结构体长什么样。如果不做管理到第二天下午模型就开始编造不存在的类名和方法了。还有一个关键技巧用文件路径作为锚点。每次提到某个脚本我都写完整路径Assets/Scripts/Player/PlayerController.cs而不是只说玩家控制器脚本。这样模型在生成新代码时引用其他脚本的路径准确率明显提高。UE5侧同理蓝图资产路径写全/Game/Blueprints/BP_Door.BP_Door。2.3 错误修正循环的自动化尝试纯提示词驱动最耗时的环节不是写新功能而是修编译错误。我尝试过几种自动化修正方案第一种是直接粘贴报错信息。Unity的Console报错、UE5的编译日志原样丢给模型让它分析原因并给出修复代码。这种方式对语法错误有效但对逻辑错误基本没用因为模型看不到运行时状态。第二种是结构化错误描述。我把报错归类为编译错误运行时异常逻辑不符合预期三类每类附带最小复现步骤和期望行为。这种方式修正成功率高很多但需要我手动整理时间成本上去了。第三种是让模型自己写测试用例。我要求它在生成功能代码的同时附带一个简单的Editor测试脚本比如按W键后角色Y坐标应增加。运行测试失败后把测试输出喂回去。这种方式在Unity侧效果不错UE5侧因为蓝图测试框架复杂基本没跑通。三天下来我的结论是完全自动化的错误修正循环在游戏开发场景下还不现实但半自动的结构化报错人工筛选修复方案能把修正效率提升2-3倍。3. Unity侧三天实操全记录3.1 第一天从零搭建2D平台跳跃核心第一天上午的目标很明确一个能跑能跳能攻击的2D角色在一个有平台和敌人的场景里。我给的初始提示词包含了Unity 2022.3 LTS的2D模板结构、URP渲染管线配置、以及Input System的基本用法。模型第一轮输出生成了PlayerController.cs用了Rigidbody2D和CapsuleCollider2D移动逻辑用velocity直接赋值。这里有个坑Unity 2022的Input System和旧版Input Manager混用时Input.GetAxis会直接报错。模型显然在训练数据里见过太多旧版教程第一版代码就踩了这个雷。我把报错信息贴回去它改成InputAction的引用方式但忘记在OnEnable里启用Action导致角色完全不动。第二轮修正后才跑通。跳跃手感调优花了最长时间。模型初始给的跳跃参数是jumpForce 10重力gravityScale 3实际跑起来像在月球上。我要求它参考超级马里奥的跳跃曲线上升快下落慢顶点有短暂悬停感它调整了重力倍率和跳跃初速度的计算方式加入了fallMultiplier和lowJumpMultiplier两个系数。这个细节说明模型确实理解平台跳跃游戏的设计模式只是需要精确的提示词引导。攻击判定我要求用OverlapCircle做扇形检测模型生成了AttackController.cs但检测角度写死了90度没有暴露参数。我让它改成[SerializeField] private float attackAngle 90f并在Editor里可视化Gizmos。这个修改很小但体现了提示词要明确要求可配置化否则模型默认写硬编码。第一天结束时Unity项目状态角色移动跳跃正常攻击能触发敌人受伤闪红有两个平台和一个巡逻敌人。编译通过无报错。代码总量约800行分布在6个脚本里。3.2 第二天技能指示器与图文混排UI的坑第二天的重头戏是技能攻击指示器。需求是按住技能键时角色前方显示一个半透明扇形区域松开后释放技能指示器消失。这个功能涉及UI和世界空间的坐标转换是新手很容易翻车的地方。模型第一版方案用OnGUI画扇形我直接否了。OnGUI性能差且不兼容URP。要求改用LineRenderer或MeshRenderer动态生成网格。模型选择了LineRenderer生成了SkillIndicator.cs用arcSegments参数控制扇形平滑度。这里有个数学细节扇形顶点位置计算用了Quaternion.Euler旋转但旋转轴搞错了指示器朝向和角色朝向差了90度。我把角色朝向的transform.right和transform.up明确写进提示词修正后才对齐。图文混排UI是另一个典型问题。Unity的TextMeshPro支持富文本标签但模型生成的代码里用了color和size标签却没有在TMP设置里启用Rich Text。这个错误很隐蔽代码不报错但文字显示异常。我排查了半小时才定位到。后来我在提示词里固定加一句使用TextMeshPro确保Rich Text已启用标签使用TMP支持的格式。地图切换功能模型实现得比较顺利用了SceneManager.LoadSceneAsync加加载进度条。但我要求加入切换时保留玩家状态的逻辑模型第一次没做第二次加了DontDestroyOnLoad的GameManager但忘记在场景加载后重新绑定相机跟随目标。这个bug导致切换场景后相机不动。修正方案是在OnSceneLoaded回调里重新查找玩家对象并赋值给相机。第二天结束时Unity项目有了完整的技能系统、可交互UI、两个可切换场景。代码量增加到约2200行。编译通过但运行时偶发空引用异常定位到是场景切换时事件订阅没取消。3.3 第三天优化、阴影与二次元Shader尝试第三天上午做性能优化。我用Profiler抓了一次运行数据发现Draw Call高达180主要来自场景里重复的装饰物。模型建议用GPU Instancing生成了合并材质的脚本但Unity的静态批处理需要勾选Static标记模型不知道这个Editor操作只给了代码。我手动在Editor里标记后Draw Call降到60左右。阴影问题排查花了整个下午。Unity URP的阴影设置分散在Light组件、URP Asset、以及每个Renderer的Cast Shadows选项里。模型生成的代码试图用脚本动态调整阴影距离但URP的阴影距离是在URP Asset里配置的运行时修改需要访问UniversalRenderPipelineAsset。模型第一次给的API是旧版内置管线的QualitySettings.shadowDistance完全无效。我贴了URP文档片段后它改成了正确的API。二次元Shader是最后两小时的尝试。我要求一个简单的卡通渲染Shader包含漫反射阶梯化和边缘光。模型生成了Shader Graph的节点描述但我需要手动在Shader Graph里连线。这里暴露了纯文本驱动的一个硬伤Shader Graph的节点连接关系用文字描述极其低效模型写了200多字描述节点连接我照着连了15分钟结果边缘光方向反了。后来我改用HLSL手写Shader模型生成的代码反而更准确因为代码是文本化的没有信息损耗。第三天结束时Unity项目Draw Call优化到60阴影正常卡通Shader勉强能用但边缘光需要手动调参。代码总量约3500行。三天累计修复编译错误23次运行时异常17次逻辑不符合预期31次。4. UE5侧三天实操全记录4.1 第一天第三人称探索与开关门蓝图UE5的起点比Unity高因为第三人称模板自带角色移动和相机。我第一天的目标是在模板基础上加一个可交互的开关门。提示词里我详细描述了蓝图节点的连接方式因为UE5的蓝图无法用代码直接生成只能靠文字描述让我手动连。模型对UE5蓝图的描述能力比预期好。它给出了BP_Door的完整节点链Event ActorBeginOverlap - Cast to BP_Player - Branch (HasKey?) - Play Timeline - Set Actor Rotation。这个逻辑是对的但漏了ActorEndOverlap时重置提示UI。我补充要求后它加了Event ActorEndOverlap - Remove UI。双指触摸蓝图是下午的任务。UE5的触摸输入需要启用Touch事件模型生成的节点链用了InputTouch事件但坐标转换用了Deproject Screen to World这个节点在移动端需要额外处理DPI缩放。我实测发现触摸位置偏移模型建议加Get Viewport Scale做补偿修正后基本准确。第一天UE5侧完成了一个可交互的门、触摸输入响应、以及基础的UI提示。蓝图资产约12个C代码约400行主要是自定义的交互接口。4.2 第二天动态光照与遮挡剔除优化UE5的动态光照是强项但配置复杂。我要求一个随时间变化的昼夜循环太阳角度和强度平滑过渡。模型生成了BP_DayNightCycle蓝图用Timeline驱动Directional Light的旋转和Sky Atmosphere的参数。这里有个性能陷阱Sky Atmosphere每帧更新开销很大模型没做优化。我要求改成每0.5秒更新一次用Set Timer by Event替代Tick帧率从45提升到稳定60。遮挡剔除我用了UE5的Precomputed Visibility模型建议用Hierarchical Z-Buffer Occlusion但需要项目设置里开启。它给的提示是在Project Settings - Rendering - Occlusion中启用HZB这个操作我手动做了。实测在密集场景里HZB比预计算快但移动端兼容性差最后我还是切回了预计算。模型遮挡剔除插件我试了一个社区方案模型推荐了Occlusion Culling Plugin但安装后和UE5.3有兼容问题蓝图编译报错。我放弃插件用引擎自带的Cull Distance Volume做距离剔除效果够用。4.3 第三天性能分析与打包测试第三天做UE5的性能分析。用Unreal Insights抓了一次数据发现Game Thread耗时18ms主要卡在蓝图Tick上。模型建议把部分逻辑从蓝图迁移到C我迁移了门的交互检测和昼夜循环的数学计算Game Thread降到11ms。打包测试是最后的验证。UE5打包Windows平台花了40分钟打包后运行发现触摸输入在PC上不响应因为PC没有触摸屏。这个不是bug是测试环境限制。我改用鼠标模拟触摸模型给的InputTouch事件在PC上确实不触发需要额外绑定鼠标事件做兼容。三天UE5侧累计修复蓝图编译错误9次运行时异常12次性能问题5次。蓝图资产约25个C代码约1200行。5. 双引擎对照与模型能力边界5.1 Unity与UE5的提示词效率对比维度UnityUE5首次代码编译通过率约70%约55%蓝图描述准确率错误修正平均轮次1.8轮2.5轮上下文保持难度中C#文本化好高蓝图非文本化性能优化建议质量高API明确中依赖Editor操作移动端适配支持好一般触摸事件需额外处理Unity的优势在于代码即文本模型生成的C#脚本可以直接复制粘贴运行信息损耗极小。UE5的蓝图必须经过文字描述-人工连线的转换每次转换都有信息丢失尤其是复杂的节点网络模型描述得再详细我连线时也可能理解偏差。但UE5在视觉效果相关功能上表现更好。比如动态光照、材质节点、Niagara粒子模型对UE5的视觉系统理解更深给出的参数建议更专业。Unity的URP Shader Graph在文本描述上反而更吃力。5.2 模型擅长的点和缺点实录擅长的点标准游戏机制实现移动、跳跃、攻击、UI、场景切换这些有大量教程和开源代码的功能模型生成质量很高。数学计算跳跃初速度、扇形检测角度、相机平滑跟随的插值公式模型给的数学推导基本正确。错误诊断给报错信息能快速定位到常见原因比如空引用、API版本不匹配、组件未挂载。明显的缺点Editor操作盲区模型不知道Unity的Inspector面板怎么拖拽赋值不知道UE5的Project Settings在哪里点。所有涉及Editor手动操作的部分它只能给文字提示无法生成可执行代码。版本差异混淆Unity 2022和2018的API混用UE5.3和UE4的蓝图节点混用。提示词里必须反复强调版本号。性能优化局限模型能给出优化方向但具体参数比如LOD距离、阴影分辨率需要根据实际场景调它给的默认值往往偏保守或偏激进。长上下文遗忘到第三天模型开始忘记第一天定义的接口签名需要我重新粘贴。这是连续运行最大的挑战。5.3 连续运行三天的真实产出评估三天下来Unity侧产出了一个可玩的2D平台跳跃Demo包含移动、跳跃、二段跳、攻击、技能指示器、两个场景切换、图文混排UI、基础卡通Shader。UE5侧产出了一个第三人称探索Demo包含移动、开关门交互、触摸输入、昼夜循环、距离剔除。两个项目都能打包运行但都有未解决的边缘问题。如果按商业项目标准这些产出大概相当于一个熟练开发者2-3周的工作量。但考虑到纯提示词驱动、无手写代码除了Shader Graph连线、连续运行不中断这个效率提升是显著的。模型没有替代开发者但它把从零到可玩原型的时间压缩了60%以上。最大的价值不在于生成了多少代码而在于它逼着我用更结构化的方式描述需求。以前我写代码是边想边写现在必须先想清楚再写提示词这个想清楚的过程本身就避免了很多设计缺陷。6. 常见问题与排查技巧实录6.1 编译错误速查表报错信息常见原因修正提示词NullReferenceException组件未挂载或对象未初始化在Awake中查找并赋值加空值检查Input.GetAxis is not supportedInput System未启用或混用旧版使用InputAction在OnEnable启用Shader error: undeclared identifierURP和内置管线API混用使用URP的ShaderLibrary包含Core.hlslBlueprint compile error: missing variable蓝图变量未定义或类型不匹配在BP_Door中定义Bool变量HasKeyPackaging failed: missing module插件未启用或平台SDK缺失在Plugins中启用对应模块6.2 上下文丢失的预防措施连续运行到第二天下午模型开始出现记忆模糊。具体表现是我让它修改PlayerController.cs的跳跃参数它生成的代码里变量名变成了playerController大小写变了导致引用失败。预防措施有三个第一每6小时重置一次对话只保留项目文件树和核心接口定义。重置后第一轮对话先让模型复述当前项目结构确认它理解正确再继续。第二关键变量名用全大写或固定前缀。比如所有玩家相关变量用PLAYER_前缀所有敌人用ENEMY_前缀。这样即使模型记混了也能通过前缀快速定位。第三每次修改后立即编译。不要攒着几个功能一起编译错误会相互掩盖。改一个功能编译一次确保每次修改都是干净的。6.3 性能问题的排查思路游戏开发最怕的是能跑但卡。模型生成的代码功能正确但性能差是常态。我的排查顺序是先看ProfilerUnity用ProfilerUE5用Unreal Insights。定位到具体是CPU还是GPU瓶颈。再看Draw Call超过200就要考虑合批。模型会建议GPU Instancing但需要手动标记Static。最后看Tick把不必要的Tick逻辑改成事件驱动或定时器。模型默认写Tick需要明确要求用Timer替代Tick。注意模型对性能优化的建议往往偏理论比如使用对象池、减少GC但具体怎么改需要结合项目实际。我试过让模型直接优化一个卡顿的脚本它给的建议是把Update里的字符串拼接移到Start这个建议是对的但实际瓶颈在物理计算上它没看出来。6.4 纯提示词驱动的边界与人工介入点三天测试下来我明确了几个人工必须介入的环节Editor操作Inspector赋值、Project Settings配置、场景层级调整这些模型做不了。视觉调参Shader效果、光照强度、相机参数模型给的数值需要肉眼验证。架构决策用事件驱动还是状态机、用ScriptableObject还是MonoBehaviour模型会给建议但最终决策需要人来做。性能取舍画质和帧率的平衡模型没有项目经验给不出符合产品定位的建议。这些介入点不是模型的缺陷而是游戏开发本身的特性决定的。纯提示词驱动能覆盖60-70%的编码工作剩下的30-40%需要开发者的领域知识和审美判断。7. 三天测试后的个人体会这三天跑下来我最大的感受是GPT-6在游戏开发上的能力已经跨过了玩具阶段但离替代开发者还有很长的路。它能快速生成可运行的原型代码能诊断常见错误能给出合理的优化方向但它不知道你的游戏好不好玩不知道哪个参数让手感更舒服不知道玩家会怎么卡在某个关卡里。我试过让它设计一个有挑战性但不过分的敌人AI它给了一个状态机巡逻、追击、攻击三个状态参数都是默认值。我实际跑起来发现敌人要么太蠢要么太强调了十几轮参数才勉强能用。这个调参过程模型帮不上忙因为它没有手感这个概念。另一个深刻的体会是提示词的质量直接决定产出质量。我第一天写的提示词比较随意生成的代码修修补补用了很久。第二天开始用结构化模板首次通过率明显提升。到第三天我已经能预判模型会在哪里出错提前在提示词里把坑填上。这个预判能力是三天测试最大的个人收获。最后分享一个实用技巧让模型写注释。我要求它生成的每个函数都带XML注释说明参数含义和返回值。这个习惯不仅让代码可读性更好还迫使模型在写代码前先想清楚函数的职责边界减少了逻辑混乱的情况。实测下来带注释要求的代码运行时异常率降低了约40%。如果后续还要扩展这个测试我会加入Godot引擎做三方对照看看开源引擎在提示词驱动下的表现差异。另外想试试让模型直接生成可玩的网页游戏用HTML5 Canvas或WebGL验证一下跨平台的一致性。这些就留到下次再折腾了。