Skip to content
←返回博客
用 Claude Opus 5.5 在虚幻引擎中做游戏:从空工程到可玩关卡
具身智能Agent Tools仿真

用 Claude Opus 5.5 在虚幻引擎中做游戏:从空工程到可玩关卡

从空工程到可玩切片:把 Claude Opus 5.5 接入虚幻引擎实时编辑器,逐段搭建、验证并控制成本与风险。

rewind2026年10月5日8 分钟阅读81次阅读
EN

2026 年 9 月 22 日,Claude Opus 5.5 发布。不到一天,创作者们就开始展示在虚幻引擎内部拼出的游戏:带有巡逻敌人、锁定和闪避的类魂原型;会发动飞扑砸击的 Boss;以及自定义角色从森林一路走进城镇的奇幻关卡。

这些演示真正有价值的地方,并不是“一句提示词生成完整游戏”。变化在于,模型可以直接连接正在运行的编辑器,读取真实工程、调用编辑器工具、检查工具返回值,并在开发者眼前修改场景。自虚幻引擎 5.8 起,编辑器内置了官方 MCP 服务器,Epic 也维护了对应的 Claude Code 插件。

本文沿着一条完整路线,从空工程走到可玩的垂直切片:建立连接、保护工程、写出可验证的任务说明、搭建灰盒关卡、加入规则与战斗、导入视觉资产,最后完成真正的试玩。文章也会明确说明哪些环节缓慢、脆弱,并且容易失败。那些最能展示效果的案例,同时也暴露了工作流的边界。

对 RobotWorld 的读者来说,这不只是游戏开发教程。它展示了一个智能体如何通过结构化工具操作仿真环境、观察状态、修改场景资产、检查日志和截图,再把最终判断交还给人类。这个闭环与具身智能需要的仿真内容制作、机器人场景迭代和智能体工具基础设施很接近;当然,原文讨论的对象是游戏,不是机器人学习实验。

课程结构图,涵盖环境准备、安全、提示、四个构建阶段、测试与成本
图 1. 原文将流程拆成十个部分,把环境准备、四个递进构建阶段、测试和成本分别处理。

哪些结果是真实的,哪些不能夸大

原文给出四个实际操作案例。它们使用的模型、插件、工程规模和人工介入程度并不相同,因此必须放在一起看。

  • 类魂游戏原型。一位创作者让 Opus 5.5 实现了敌人的巡逻、追击和攻击,玩家与敌人的生命条、锁定镜头、连击系统、闪避,以及用资产包搭出的地牢关卡。他使用的是第三方编辑器插件 NeoStack,并且仍然手动修正了一处动画设置。
  • Boss 战。另一位创作者做出了拥有三种攻击的带翼恶魔 Boss。结果能够运行,但大约花了半天等待,第一次生成的 3D 模型不可用,而且还没做粒子特效就用完了额度。
  • 奇幻探索演示。Tripo 的演示搭建了一条从森林到城镇的路线,加入收集物和屏幕界面,再把默认角色替换成带骨骼的自定义人物。它最重要的经验是:每完成一批修改,都要回到编辑器检查结果。
  • Puget Systems 的受控尝试。这家硬件实验室在七月用较早期的 Opus 4.8 测试了 Epic 的 MCP。两个简单任务完成得不错;一次玩家控制修改让游戏变得无法操作,后续修复也没有解决;一次程序化城市请求看似完成,实际却用手工摆放的网格替代了真正的程序化图。

规律相当一致:只要任务边界清楚,模型又能在编辑器里读取和操作现场状态,它就能快速执行。若要求它从一句模糊描述推导出完整系统,失败率会明显上升。它也无法替你判断游戏是否好玩、手感是否正确。

Puget 的测试者给了一个准确预期:用智能体加速你已经理解的工作,而不是填补你并不掌握的知识。工具调用成功不等于游戏成功。工具可以说 Blueprint 已编译,但只有试玩才能发现角色不能转向、镜头穿墙,或者敌人卡在石头后面。

需要准备什么

  • 虚幻引擎 5.8。通过 Epic Games Launcher 安装。官方 MCP 服务器从这个版本开始提供,Epic 仍将其标记为实验性功能;引擎本身需要数十 GB 磁盘空间。
  • 一个可修改的工程。从第三人称模板开始。模板已经提供移动、跳跃和镜头,因此在自定义角色尚未完成时就能测试关卡。
  • Claude Code 与 Opus 5.5。付费方案中 Opus 5.5 是默认模型,可用 /model 确认,模型别名是 opus。
  • Epic 的 Claude Code 插件。插件名为 Unreal Engine Skills for Claude Code,免费、采用 MIT 许可证,并已列入 Anthropic 官方插件市场。
  • Windows 上的 Bash。安装 Git for Windows 或使用 WSL。插件的启动钩子是一个 Bash 脚本。没有 Bash 时编辑器工具仍可使用,但会失去启动时附加的工程说明。
  • 版本控制。使用 Git 或 Perforce。这不是可选项。智能体可能一次修改大量内容,而且有些修改无法撤销。

把 Claude Code 连接到正在运行的编辑器

连接有两个端点。Claude Code 需要读取工程目录里的 MCP 配置,以及 Epic 编写的编辑器操作技能;虚幻引擎则负责运行服务器和真正执行操作的工具集。编辑器没有打开或服务器没有启动时,任何一端都无法完成工作。

Claude Code 通过工程内的 mcp.json 连接虚幻引擎 5.8 MCP 服务器
图 2. Claude Code 从工程目录启动,读取 .mcp.json,再连接打开的虚幻编辑器暴露的 MCP 服务。

第一步:启用两个编辑器插件

打开编辑 → 插件,搜索 Unreal MCP,其内部名称是 ModelContextProtocol,勾选并启用。随后搜索 AllToolsets 并启用。编辑器要求重启时照做。

两个插件必须同时启用。前者提供服务器,后者提供实际操作工具。只启用第一个时,服务器会正常启动,却几乎没有任何可调用的能力。

第二步:启动服务器

按 ~ 打开编辑器控制台,然后运行:

ModelContextProtocol.StartServer

如果不想每次手动启动,打开编辑 → 编辑器偏好设置 → 常规 → Model Context Protocol,启用 Auto Start Server。

默认端点为 8000 端口。如果端口已被其他程序占用,可选择一个空闲端口启动,并记住新端口:

ModelContextProtocol.StartServer 8010

第三步:生成连接文件

继续在编辑器控制台运行:

ModelContextProtocol.GenerateClientConfig ClaudeCode

命令会生成 .mcp.json。通过启动器安装引擎时,该文件通常位于 .uproject 旁边。若使用默认端口,内容相当于:

{
  "mcpServers": {
    "unreal-mcp": {
      "type": "http",
      "url": "http://127.0.0.1:8000/mcp"
    }
  }
}

以后若改变端口,要重新生成文件,避免配置仍指向旧地址。

第四步:在 Claude Code 中安装 Epic 插件

/plugin install unreal-engine-skills-for-claude-code@claude-plugins-official

如果 Claude Code 提示找不到插件市场,先加入官方市场,再重复安装:

/plugin marketplace add anthropics/claude-plugins-official

第五步:从工程目录启动 Claude Code

这是最容易出错的一步。Claude Code 只会从启动目录读取 .mcp.json,因此必须先进入包含 .uproject 的文件夹。在终端中先切换目录,再运行 claude;在桌面应用中,把同一个文件夹选作工程。

第六步:证明连接确实可用

  1. 运行 /plugin,Installed 标签中应显示 unreal-engine-skills-for-claude-code 已启用。
  2. 运行 /mcp,应看到 unreal-mcp 已连接。
  3. 发送一个明确只读的提示。
Inspect the open Unreal Editor project. Read only, change nothing.
Report the active level's name, the main actors in it, and whether
a Player Start and a Third Person character exist.

如果回答能说出当前关卡里真实存在的 Actor,连接就是有效的。任何 Unreal 工程都适用的泛泛描述,不能证明模型读到了现场状态。

也可以让 Claude 自动完成第一到第三步。插件内置了专门写给智能体的设置说明,Epic 的 City Sample 指南也演示了这种方法。从工程目录启动 Claude Code 后发送:

This folder is an Unreal Engine 5.8 project. Set up the Unreal MCP
connection for this Claude Code session. Enable the ModelContextProtocol
and AllToolsets plugins in the .uproject, showing me the file path first.
Turn on auto-start. Tell me exactly what to run in the editor console.
Then verify with one read-only tool call. Change nothing else.

原文作者称,他把插件的会话启动钩子放在一个临时工程目录中测试。即使从子目录启动,钩子也能找到 .uproject,提示 Claude 优先遵循虚幻引擎惯例和 unreal-mcp 技能,并准确说明 .mcp.json 是否已经存在。离开工程目录后,钩子保持沉默。

网络上的教程有两处细节并不一致。有些配置命令省略了 ClaudeCode 参数,而 Epic 插件自身使用 ModelContextProtocol.GenerateClientConfig ClaudeCode。Epic 早期文档称工具调用一次只执行一个,九月更新的插件说明则表示服务器已支持并发请求。无论采用哪种理解,实际操作规则不变:任何会修改同一资产的步骤都应顺序执行。

其他接入方式

Epic 的官方路线是虚幻引擎 5.8 的主路径,但不是唯一选择。原文列出了三类替代方案。

比较 Epic 官方 MCP、社区 MCP 服务、NeoStack 和资产生成连接器
图 3. 原文对比官方服务器、社区 MCP 服务器、编辑器内智能体面板,以及概念图与角色生成连接器。
  • 对于虚幻引擎 5.5 至 5.7,可使用 chongdashu/unreal-mcp 等社区服务器,但需要自行编译 C++ 插件。基于虚幻引擎 Remote Control API 的服务器可以省去编译,暴露的能力通常也更少。
  • NeoStack 是带独立聊天面板的第三方编辑器插件,可以使用 Claude Code 订阅,也可以使用它自己的额度。广泛传播的类魂游戏演示使用了它。
  • Higgsfield 和 Tripo 提供概念图与生成资产连接器。它们可以补充编辑器智能体,但不能替代实时读取和修改工程的主循环。

NeoStack 需要单独说明。其开发方发布过一项测试,称 NeoStack 通过五项任务中的三项,Epic MCP 通过一项。这项测试由厂商自己执行,每种工具只跑一次,并被称为方向性证据。它适合作为在自己的工程上分别验证两种工具的理由,而不是排行榜。模型、插件、提示和任务定义都不完全相同。

必须建立的安全网

Epic 自己对插件的描述非常直接:安装后,Claude 会获得对正在运行编辑器的广泛实时访问权限,应当把它视同执行任意代码,因为实际效果就是如此。其中一个工具可以在编辑器内部执行 Python,并拥有工程的完整权限。通过这种方式完成的修改,有些无法撤销。

  • 每次会话前提交。保存工程后提交或搁置修改。结果出错时,回滚只需要几秒;没有检查点,半天的失败工作就无法找回。
  • 保持审批开启。加载该插件时,不要用 --dangerously-skip-permissions 运行 Claude Code。如果一定要测试这种模式,只能使用可随时丢弃的工程。
  • 先在副本上学习。不要在重要生产工程上做第一次实验。
  • 修改前退出 Play 模式。游戏运行时编辑器工具的行为不同,场景修改还可能与运行时状态冲突。
  • 编译期间不要发提示。C++ 或着色器正在编译时,工具调用可能卡死,或者以难以诊断的方式失败。
  • 端口只留在本机。服务器没有登录验证,同一用户下的任何程序都能访问。不要在共享电脑上运行,也不要把 8000 端口暴露到网络。

版本控制还让推荐工作流成为可能。智能体可以一次提出大量修改,但验收权仍在开发者手里。场景不对就丢弃分支;Blueprint 只有一半正确,就先看差异,再决定下一轮等待是否值得。

如何向 Opus 5.5 描述工程任务

Opus 5.5 在回答前总会推理,但这类工作的关键设置是 effort。可选级别包括 low、medium、high、xhigh 和 max。默认的 medium 是合理起点;只有智能体反复漏掉同一项要求时,才用 /effort high 提高。级别越高,检查越多,同一任务的账单也会显著增加。

六步构建循环:提交、发送批量任务、调用编辑工具、检查结果、试玩、提交或回滚
图 4. 构建循环把一个系统保持在小而可回滚的范围内:提交、修改、检查证据、试玩,再决定保留或回滚。

六个习惯决定了结果是有用演示,还是 Puget 遇到的那种失败。

  1. 一次只做一个系统。一个提示只处理关卡布局、生命系统或一个敌人,不要三项一起做。类魂游戏作者每次只加一个功能并测试;Puget 的两次失败都来自范围大、描述松的请求。
  2. 说明“完成”是什么。“完成意味着我能从 Player Start 走到塔前,而且不会卡住”给了智能体可验证条件;“把关卡做得更好”没有。
  3. 列出不能改变的内容。“不要移动路径或 Player Start”可以保护已经通过验收的工作。
  4. 要求报告。让模型列出每个新建或修改的 Blueprint 和资产。报告是人类维持工程心智模型的依据。
  5. 禁止静默替代方案。Puget 的程序化城市测试中,模型悄悄用人工摆放的网格代替了要求中的程序化图。好的提示应明确要求:工具做不到就停下来说明。
  6. 必要时点名技能。提到虚幻引擎相关工作时,/unreal-mcp 通常会自行触发;主动写出它则可以排除歧义。
将适合委派的工作与应先手工搭出结构的系统分开
图 5. 可靠的协作边界是:让智能体在开发者理解的结构内执行,而架构、输入和评估权仍由人掌握。

实际边界并不是“AI 能否做游戏”,而是更具体的一句话:把灰盒布局、重复性 Blueprint 接线、生命与界面配置、敌人巡逻逻辑、资产导入和大批属性修改交给模型;玩家输入、核心程序化图、高层架构、动画重定向,以及你无法独立检查的系统,应保留在人工范围内。先搭一个最小可用版本,再让智能体扩展和细化。

路线:一个小游戏,六道验收门

贯穿全文的小案例刻意保持很小:第三人称角色沿路径走到村庄,收集三个发光球,击败或绕过一名敌人,走到上锁的塔前,看到胜利消息,并可按 R 重新开始。范围小是因为目标在于学习循环,不是复刻完整商业游戏。

从连接到灰盒、规则、战斗、视觉完善和完整试玩的六阶段路线
图 6. 每个阶段都以可试玩的验收门结束。顺序很重要:先用简单形状证明移动和规则,再把时间花在美术上。

构建一:先做一条能走通的关卡

新建第三人称模板工程,打开一个空关卡。如果关卡里没有玩家,通过添加 → 将内容添加到工程 → Third Person 加入模板内容,然后提交。第一条提示应先要求智能体只读检查,保留现有玩家起点,并生成一条能立刻测试的路线。

/unreal-mcp Build a greybox level in the current empty level.
First, read only: confirm the level name and that a Player Start exists.

Layout: a start clearing, a winding path about 150 metres long through
low hills, and a small walled village at the end with one tall tower
I can see from the start.
Use simple shapes and plain materials only. No final art.
Keep the path at least 4 metres wide and free of obstacles.
Add a sky, a sun and enough light to read the route.

Done means: I press Play and walk from the Player Start to the tower
without getting stuck.
When finished, list every actor and asset you created and take a
screenshot from the start looking toward the tower.
If a step fails or a tool is missing, stop and tell me.
Don't work around it silently.

在 Puget 的测试中,一个类似请求要求搭建带六个照明房间的走廊,结果五分多钟返回,且与描述相当接近。模型还主动加了没人要求的走廊灯。这种合理推断很常见,因此更应要求完整的 Actor 与资产清单。

第一道门:按 Play,亲自走完整条路线。掉到地板下或撞上隐形墙时,指出准确位置,只要求修正这一点,然后提交。路线还不稳定时不要进入下一阶段。

构建二:加入游戏规则

路线通过验收后,在不移动已确认几何结构的前提下加入规则。

/unreal-mcp Add the game rules to this level.
Don't move the path, the village or the Player Start.

1. Three glowing orbs along the path. Touching one collects it.
2. A counter on screen: "Orbs 0/3".
3. The tower gate stays locked until all three are collected.
   Reaching the tower after that shows "You made it" and ends the run.
4. The R key reloads the level.

Use Blueprints. Compile each one and read the compile result
before moving on.
Done means: collect 3, reach the tower, see the message, press R,
start again.
Report every Blueprint and widget you created, then give me a
five-step Play checklist.

“读取编译结果”这一句非常重要。Epic 的插件说明警告,有些工具会把失败作为普通状态数据返回,而不会抛出异常。忽略状态的智能体会在 Blueprint 实际没有编译成功时继续往下做。

第二道门:亲自执行五步清单,然后主动尝试破坏规则。以相反顺序收集球;只拿两个就去塔前;在奔跑途中按 R;在胜利和死亡后分别重开。只有所有状态转换都正确时才提交。

构建三:敌人与战斗

战斗阶段最需要小步测试。每次只增加一种行为,在 Play 模式中检查,然后提交,再做下一项。类魂游戏案例最值得学习的不是最终功能列表,而是“一次功能、一条提示、一次试玩”的节奏。

敌人

/unreal-mcp Add one enemy near the village gate. It patrols between
two points. When it sees the player it chases, and in range it attacks.
Use a Behavior Tree. Add whatever navigation the level needs and tell
me what you added. Don't change the player or the rules from before.
Done means: it patrols, notices me, chases me and swings at me.

在原文视频中,这一项只用了一条提示。智能体主动加入导航体积,因为没有它敌人无法移动。第一次攻击动画看起来有问题。应预期初版粗糙,并把行为是否正确与动画是否精致分开判断。

生命与死亡

/unreal-mcp Add health to the player and the enemy. Show the player's
bar at the bottom left of the screen and the enemy's bar above its head.
Enemy hits reduce player health. At zero, show "You died" and let R
restart. Report every Blueprint and widget you touched.

可观察条件不只是血条是否出现。还要检查伤害方向是否正确、双方是否都能归零、死亡界面显示时输入是否仍正常,以及按 R 后是否恢复干净状态,而不是重复生成 Actor 或计时器。

玩家攻击

/unreal-mcp Give the player an attack on the left mouse button: a
three-hit combo using the attack animations in [your folder].
Hits damage the enemy. At zero health the enemy falls and is removed
after three seconds. Keep movement and camera as they are.

这里要准备等待很久。在 Boss 战案例中,三段动画连击让 Opus 5.5 花了约一小时,而创作者估计手工完成需要十五到二十分钟。模型仍可能适合接线和状态编排,但经济性取决于动画资产和状态转换是否已经清楚。

锁定与闪避

/unreal-mcp Add two things. Tab locks the camera onto the nearest
visible enemy and Tab again releases it; aim at the enemy's chest,
not the head. Left Shift makes the player dodge in the movement
direction. Add a subtle camera shake when a hit lands.

“瞄准胸口,而不是头部”来自原文视频。镜头对准头部时会位置过低并向上仰。用一句描述视觉问题的反馈,几秒内就修好了。小修正就应这样进行:说明你看到什么、你希望得到什么,并限定范围。

也可能看到 Claude 编写一段短 Python 脚本并请求执行。这是插件的脚本工具,用于组合多个编辑器操作,或完成单个工具覆盖不到的任务。批准前先读脚本。Boss 战作者在创建动画 Blueprint 时遇到了这种情况;实时编辑器脚本可以一次修改许多资产。

第三道门:战斗必须能双向结束。玩家可以赢,也可以输;两种状态下按 R 都能恢复;攻击方向正确;镜头能干净解除锁定。行为稳定后再提交,不要给状态转换尚不稳定的战斗添加视觉包装。

构建四:让画面开始像你的游戏

只有灰盒机制全部可用后,才值得花时间和模型额度处理外观。常见资产来源有三种。

比较 Fab 资产包、Tripo 自定义角色和 Claude 驱动 Blender 三种资产路线
图 7. 环境制作最快的路线是 Fab 资产包;Tripo 更适合带骨骼的自定义角色;Blender 适合定制道具,但需要给智能体留出迭代时间。
  • Fab 资产包是制作环境最快的路线。Boss 战作者最终使用了现成的哥特风格资产包和来自 Fab 的角色。
  • Tripo 可生成网格、纹理、骨骼和动画,再导出供虚幻引擎使用的 FBX。本文场景中,它最适合制作自定义可动画角色。
  • Claude 驱动 Blender 可以制作风格化道具,但速度可能很慢。简单的地牢资产包效果不错;一个精细 Boss 模型尝试了两次,耗时约三个半小时。

导入自定义角色

  1. 用同一角色的正面、侧面和背面视图生成模型。
  2. 贴图前执行 Smart UV。保存新的 UV 布局可能移除已有纹理。
  3. 生成纹理时启用 Remove Lighting,避免烘焙高光与引擎动态光照相互冲突。
  4. 在 Rigging 中选择 Humanoid,把骨架预设设为 UE5 Mannequin。这个选择能避免以后再做重定向。
  5. 至少预览一个带真实动作的动画。检查肩膀塌陷、膝盖反向和衣服穿过身体等问题。
  6. 导出包含骨架的 FBX,并保持动画原位置。

在虚幻引擎中把 FBX 导入独立文件夹,确认它作为 Skeletal Mesh 进入工程。后续动画文件要选择现有骨架,只导入动画。把角色放进关卡前,打开网格和每个动画检查比例、朝向、材质和关节。然后要求智能体替换默认人物,同时保留已经验收的控制器与路线。

/unreal-mcp Replace the default mannequin with the skeletal mesh in
/Game/Characters/Hero. Keep the current input, movement, camera,
Player Start and route. Build an Animation Blueprint from that mesh's
own animations: idle, walk or run by speed, and jump.
If the animations can't be used without retargeting, stop and explain
what is needed. Don't force incompatible assets.
Report every asset you changed and give me a Play checklist:
idle, walk, run, jump, turn.

小批量完成场景美术

导入环境资产包后,一个区域一个区域地替换灰盒。可以这样要求:“用资产包中的部件替换村庄墙体与塔,但保持位置和城门宽度不变。”随后处理植被:“只放在道路周围,不放到路面上,并给第三人称镜头留出空间。”最后再加光照和声音。

当人物站在资产旁边时,比例错误会非常明显。类魂游戏作者发现第一版地牢相对角色过大,于是用一条提示整体缩放。每一批资产验收前,都应以人物身高为参照检查。

散布树木、岩石和草地时,虚幻引擎的 Procedural Content Generation 框架才是正确工具。Puget 的测试也正是在这里失败。Epic 后来更新的 City Sample 注册了可教导智能体构建 PCG 图的技能,但这个能力必须真实存在于当前工程。先问工程里有没有这样的技能,并且当需求确实是程序化图时,不能接受手工摆放网格作为替代。

/unreal-mcp Scatter trees, rocks and grass with a PCG graph, keeping
the path and the gate clear. If you can't build or edit a real PCG
graph here, stop and say so. Don't place static meshes by hand instead.

如果没有可用的 PCG 技能,就自己创建一个空 PCG 图,再让 Claude 在这个结构中工作。Puget 的结论不只适用于 PCG:给智能体一个可扩展的具体结构,不要期待它从模糊请求中凭空发明正确子系统。

第四道门:角色能待机、行走、奔跑、跳跃和转身,不滑步,也不会突然变成 T 姿势;装饰物不阻挡路线和镜头;村庄在正常游戏距离下仍可辨认。视觉阶段通过后再提交,让下一次调试能从已知可用的场景开始。

分四层测试

测试决定原型能否成为可信工具。任何一层都不能替代另一层。

四层测试:工具结果、截图与日志、人工试玩、自动化测试
图 8. 工具状态、视觉与日志检查、人工试玩和自动化分别发现不同类型的错误。
  1. 工具结果。Claude 必须读取每次编辑器调用的状态。要在提示中强制这一点,因为工具可能把失败作为数据返回,智能体不检查就会继续。
  2. 亲眼看。插件提供截图、镜头控制和日志检查。每批修改后都要求截图,并查看 Output Log 中是否有新错误。Puget 的测试者观察到模型会主动截图,判断自己的修改结果。
  3. 亲自玩。这一层不能交给智能体。类魂游戏视频里模型确实自己打过战斗,但那使用的是另一个插件。使用 Epic MCP 时,应先询问 Claude 在 Play 模式中能观察什么,然后自己完成手玩验收。
  4. 自动化测试。插件可以发现、运行并检查 C++ 自动化测试。工程里已有测试时,“运行库存系统自动化测试并总结失败项”就是一条很具体的有效提示。

宣布切片完成前,必须从起点一直玩到胜利,并检查只有完整运行才会出现的问题:

  • 镜头不会穿过墙体、树木或塔。
  • 行走和奔跑时脚不滑步。
  • 玩家无法离开地图,也不会卡在道具之间。
  • 胜利、死亡和重开在各种顺序下都能工作。
  • 最繁忙区域的帧率仍可接受。
  • 完整运行后,Output Log 没有新增错误。

不要跳过那些不显眼的结束状态。在 Boss 战测试里,其他环节都正常,直到 Boss 死亡后布娃娃行为严重出错。玩家的胜利路径同样属于游戏逻辑,不是收尾时再处理的小问题。

怎样报告一个智能体能修的 bug

Puget 的玩家控制测试展示了典型陷阱。测试者只能说“还是不能用”,模型又花了十五分钟,声称已经修复,结果没有任何变化。有效报告必须把观察与推断分开。

MCP 连接、工具缺失、端口冲突、Play 模式、编译状态和视觉验证故障排查表
图 9. 故障排查表把可见症状对应到首先应检查的环境状态或编辑器工具。
/unreal-mcp Bug: after the enemy dies, pressing R does nothing.
Steps: Play, kill the enemy, press R.
Expected: the level reloads.
Actual: nothing happens and the Output Log shows no message.
Read the Output Log and the restart Blueprint first and tell me
the cause. Then fix only that, and tell me what you changed.

结构很关键:复现步骤、预期行为、实际行为、已有证据,以及“先诊断再修改”的指令。如果模型提出大范围重写,要拒绝。两次尝试失败后应停下,回滚到上一个提交,再把问题切小,或者只针对这一任务提高 effort。在两个失败修复上再叠第三个推测性修复,会让工程变得无法推理。

时间与成本

这个工作流最真实的成本是等待。Puget 的测试者发现,每个请求五到十五分钟,会打断常规的修改、测试、调整节奏。Boss 战作者大约花了半天,大部分时间都在看进度。合理做法是提交一批任务后去做别的事,结果完成再回来检查。

不同编辑器任务等待时间柱状图,从灰盒约五分钟到第二次 Boss 模型约两百一十分钟
图 10. 原文实际操作案例中报告的任务耗时。工程和模型不同,因此它只能作为计划参考,不是受控基准。

报告的时间从简单灰盒或生命界面的约五分钟,到角色绑定、动画和声音接线的二十至三十分钟,再到连击或飞扑攻击的约一小时,以及两段攻击 Boss AI 的约两小时。第二次尝试 Boss 模型约花了三个半小时。资产摆放和接线相对快,自定义系统与 3D 模型才是等待的主要来源。

另一项成本是使用额度。原文给出的 Opus 5.5 API 价格为每百万输入 token 四美元、每百万输出 token 二十美元。Puget 七月测试中,一个早上的小实验大约消耗了团队每周额度的 15%。Boss 战作者在完成粒子特效前用完额度。更高的一端,一位开发者连续 36 小时制作多人 RPG,用光了最高档方案的整周额度,按 API 价格约相当于 2400 美元。

  • 优先保持 medium。原文引用的一项评审测量同一困难任务:low 约 0.55 美元,medium 约 1.34 美元,max 约 5.98 美元。只为某个顽固问题提高级别,解决后再降回去。
  • 一次把任务说明写清楚。清晰规格通常比单纯提高 effort 更省钱。
  • 设置时间上限。提前决定一个任务最多等多久,超过就回滚并手工完成。
  • 五分钟的工作自己做。移动一个 Actor 或改一个数值,手工操作通常比写提示更快。

故障排查

早期失败大多来自三种状态:Claude Code 启动目录不对、编辑器没有同时启用两个插件,或者 Play 模式与编译过程干扰了工具调用。

  • /mcp 里没有 unreal-mcp。Claude Code 从错误目录启动,或者 .mcp.json 不存在。在 .uproject 旁边启动,并重新生成配置。
  • 服务器已连接,但看不到 Unreal 工具。AllToolsets 没有启用。启用后重启编辑器,再启动服务器。
  • 提示“Failed to listen on port”。8000 端口被其他进程占用。换一个端口启动服务器,再重新生成 .mcp.json。
  • 缺少某一组工具。运行 ModelContextProtocol.RefreshTools。如果仍不存在,确认对应工具集的插件已经启用。
  • 工具调用卡住或返回奇怪错误。编辑器可能在编译、加载或运行 Play 模式。退出 Play,等编译结束,再重试。
  • 昨天能用,今天不能用。没有启用 Auto Start Server 时,服务器不会自动运行。执行 ModelContextProtocol.StartServer。
  • 回答看起来正确,但关卡不对。要求截图并读取 Output Log,然后亲自试玩。模型说“修好了”不构成证据。
  • Windows 启动时没有工程说明。钩子需要 Bash。安装 Git for Windows 或使用 WSL;编辑器工具本身不受影响。

一页速查卡

  1. 安装虚幻引擎 5.8,创建第三人称工程,并纳入版本控制。
  2. 启用 ModelContextProtocol 和 AllToolsets,重启,启动服务器并开启自动启动。
  3. 运行 ModelContextProtocol.GenerateClientConfig ClaudeCode。
  4. 在 Claude Code 中运行 /plugin install unreal-engine-skills-for-claude-code@claude-plugins-official。
  5. 在工程目录用 Opus 5.5、medium effort 启动 Claude Code。检查 /mcp,再发送只读提示。
  6. 提交。按顺序制作:灰盒关卡、规则、敌人与战斗、视觉完善。
  7. 每条提示只处理一个系统,并写明完成条件、不可改动项、资产报告和禁止静默替代。
  8. 每批修改后检查工具结果、截图和日志,然后亲自试玩。每道验收门后提交。
  9. Bug 报告包含步骤、预期和实际结果。两次修复失败就回滚。
  10. 最后完整试玩,检查镜头、碰撞、滑步、重开、帧率和 Output Log。

最小可用版本可以只用一个晚上完成:连上编辑器,搭出灰盒,加入三个可收集球和胜利消息,然后亲自从起点玩到终点。之后的一切,都是同一循环在更大目标上的重复。

更重要的结论与控制权有关,而不是“自主性”。智能体之所以有用,是因为它能读取仿真状态、调用工具,并执行边界明确的一次修改。架构、权限、证据和最终质量判断仍由开发者负责。

来源:本文根据 rewind 于 2026 年 10 月 5 日发布的 X Article 《How to Build your own Game in Unreal Engine with Claude Opus 5.5 (Full Course)》完整改编。Epic 插件仓库为 EpicGames/unreal-engine-skills-for-claude-code-plugin。

相关文章

作为亚马逊联盟会员,我们可能从符合条件的购买中获得佣金。