去年有个数据挺有意思:GitHub Copilot用户平均只接受30%的代码建议。不是AI不够聪明,是生成和落地之间隔着一条河。Cipher团队想做的,是让AI直接游过去——不是给建议,是进Unreal Engine(虚幻引擎)里动手搭。
听起来像科幻片。实际干起来,负责人用了三个词:messy, frustrating, insane。
从"生成代码"到"直接动手",中间差着47个坑
大多数AI工具停在第一步:你提需求,它吐代码,剩下的自己折腾。Cipher的野心是闭环——Goal(目标)→ Plan(规划)→ Validate(验证)→ Execute(执行)→ Verify(核实)→ Repeat(循环)。
举个具体场景。你说:"Create a player character with a mesh and animation"(创建一个带网格和动画的玩家角色)。传统流程是AI给你一段代码,你复制粘贴、调试、祈祷别报错。Cipher的做法是:直接进引擎,分配网格,绑定动画,编译,运行,自己检查对不对。
第一个让团队觉得"这事能成"的节点,是解决网格+动画的持久化问题。
Unreal的CharacterMesh0是个原生组件,行为非常反直觉。团队试了三种方案:写CDO(Class Default Object,类默认对象)——值存不住;改完重新编译——值被清掉;用Handler处理——原生组件根本不认。最后解法是两步走:通过Handle修改组件,再严格控制编译顺序。后者"比任何事都重要"。
这个卡点打通后,Cipher第一次有了稳定感。能加组件、设位置、绑网格、指定动画,还能循环执行目标文件。
但稳定是幻觉。接下来三个月,他们踩了47个"看起来对了其实错了"的坑。
验证系统在撒谎,这是最阴险的bug
Cipher有个verify步骤,设计意图是自我纠错。实际运行中,verify会报告成功,但真相藏在下一层。
网格显示已分配——但没保存。动画文件存在——但没真正应用到角色。蓝图编译通过——但运行时崩溃。团队管这叫"False Positives in Verification"(验证环节的假阳性),花了大量时间重建验证逻辑:剥离生成类名的_C后缀、直接检查组件存在性、运行时二次确认。
更隐蔽的是时序问题。网格加太早会被 wiped(清空),编译太频繁会丢状态,重载方式不对会验证到错误对象。很多"bug"追到最后发现不是代码错,是时机错。
Python端的Agent也出过状况。每次重载 agent_listener.py 都会残留旧回调,导致行为诡异。解法是把架构改成持久化分发器(persistent dispatcher),不再每次重绑函数。
Blueprint(蓝图)的节点连线是现在的主战场。
团队最近开始攻节点布线和扇出逻辑(fan-out logic),新问题涌现:节点类型不匹配、执行流断裂、数据引脚连错对象。小错误在这里不会报错,只会静默失效——角色不动、技能不触发、碰撞检测消失。调试成本极高。
目前Cipher能稳定做的事:加组件(相机、弹簧臂等)、设位置/旋转、绑网格和动画、从目标文件循环执行。py dev_agent.py --loop goals/aegion_setup.txt 这行命令是现在的基础。
下一步:从"造资产"到"改逻辑"
团队把路线图分成两个阶段。第一阶段是"证明控制"——让AI能可靠地操作引擎,这部分接近收尾。接下来要攻的是动画蓝图(Animation Blueprint):确保状态机正确、过渡规则生效、变量映射准确。
这个里程碑的意义是区分"资产自动化"和"玩法自动化"。前者是搭架子,后者是让角色真的动起来、响应输入、产生游戏性。
更难的还在后面:Blueprint Modification(蓝图修改),不是创建新蓝图,而是改现有的。要解析已有逻辑、插入新节点、不破坏原有功能。比从零生成难一个数量级。
最终目标是事件驱动系统——AI能响应游戏内事件,处理交互链条(输入→响应)。现在还在打地基,但地基里已经埋了东西:一个能把自然语言变成Unreal内部实体的管道。
负责人复盘时用了个类比:前三个月像在重写"几乎能工作"的系统,学到的核心认知是"编译通过等于什么都没保证"。但现在有了一件真东西——不是demo,是能循环执行、能自我验证、能持续迭代的骨架。
他们刚完成一轮压力测试,目标文件里塞了17个连续任务,Cipher跑了4小时没崩。下一个测试该塞多少个任务?该测多复杂的蓝图修改?团队还没定,但有个共识:假阳性比真报错更可怕,因为后者至少知道要修哪。
热门跟贴