RenoDX AI辅助逆向工作流:如何用AI Agent与MCP协议自动化游戏图形分析
【免费下载链接】renodxRenovation Engine for DirectX Games项目地址: https://gitcode.com/GitHub_Trending/re/renodx
RenoDX(Renovation Engine for DirectX Games)是一款面向 DirectX 游戏的图形改造引擎,支持替换着色器、升级交换链与纹理资源。它的DevKit + MCP 桥接工作流,让AI Agent能通过MCP 协议直接连接正在运行的游戏,自动完成帧分析、着色器反编译与 HDR 验证,把传统上需要数天的手动图形逆向变成"一句话任务"。
为什么游戏图形逆向需要 AI 辅助?
传统流程相当繁琐:手动挂钩 DirectX API → 逐条翻看 Draw Call → 猜测某个着色器的哈希对应什么功能 → 反编译 → 修改 → 重新加载验证。每一步都依赖经验和耐心。
RenoDX 的思路是:把"观察游戏内部状态"这件事变成标准化的 MCP 工具,交给 AI Agent 自主调度。你在对话框里说"帮我找到最终 Blit 之前的色调映射通道",Agent 就会自己列出连接、排队抓取帧快照、筛选 Draw Call、回读资源并给出结论。🤖
AI 辅助逆向工作流的三大组件
整条链路只有三层,各司其职:
| 组件 | 角色 | 源码位置 |
|---|---|---|
devkit插件 | 注入游戏进程,通过命名管道暴露帧、着色器、资源检查能力 | src/addons/devkit/addon.cpp |
renodx-mcp-bridge | 独立进程,把命名管道翻译成标准 MCP(stdio)服务 | src/apps/mcp_bridge/main.cpp |
| MCP 客户端 | Codex、Claude Desktop、VS Code Copilot 等 AI Agent | 由客户端自行安装 |
MCP Client ⇄ renoMCP Bridge ⇄ 命名管道 (JSON-RPC) ⇄ 游戏内 DevKit 插件协议实现分层清晰:JSON-RPC 帧解析在 src/utils/json_rpc.hpp,通用 MCP 服务器运行时在 src/utils/mcp/server.hpp,DevKit 的工具目录(工具名、参数 Schema、只读标记)集中在 src/addons/devkit/mcp/tool_catalog.hpp,各工具的处理逻辑拆分在 src/addons/devkit/mcp/ 目录下的独立头文件中。
三步把 AI Agent 接入运行中的游戏
第 1 步:构建 DevKit 与桥接进程
cmake --preset clang-x64 cmake --build --preset clang-x64-debug --target devkit mcp_bridge生成renodx-devkit.addon64和renodx-mcp-bridge.exe,把插件放进游戏的 ReShade 目录即可。若需要完整的反编译工具链(如cmd_Decompiler.exe),运行 scripts/setup-dev-env.ps1 一键引导。
第 2 步:在 MCP 客户端中注册桥接进程
以 VS Code 为例,在工作区.vscode/mcp.json中:
{ "servers": { "renodx": { "command": "C:\\Mods\\renodx\\build\\Debug\\renodx-mcp-bridge.exe", "args": [] } } }Codex 与 Claude Desktop 的配置方式相同(均指向桥接可执行文件),完整示例见 docs/DEVKIT_MCP.md。
第 3 步:用自然语言发起分析
桥接器会预先宣告全部 DevKit 工具面,若只有一个后端管道还会自动连接。推荐的首条提示词(官方建议):
"Use the RenoDX MCP bridge. List the available DevKit connections, connect if needed, queue a snapshot on the active device, then show me the last 10 draws and the first 10 tracked shaders."
Agent 随即开始自动巡检你的游戏画面。🔍
MCP 工具全景:AI Agent 能做哪些事?
按功能分为五组(完整 Schema 见 docs/DEVKIT_MCP.md):
| 工具组 | 代表工具 | 能做什么 |
|---|---|---|
| 连接与帧状态 | renodx_list_connections、devkit_status、devkit_queue_snapshot | 发现游戏实例、切换设备、抓取帧快照 |
| 帧检查 | devkit_list_shaders、devkit_list_draws、devkit_get_draw | 列出着色器/Draw Call,按哈希、渲染目标数等条件过滤 |
| 着色器检查与转储 | devkit_get_shader、devkit_dump_shader | 查看反汇编/反编译文本,导出原始.cso |
| 资源检查 | devkit_analyze_resource、devkit_set_resource_clone | 回读纹理数值、克隆资源做 HDR 对比 |
| 实时着色器迭代 | devkit_set_live_shader_path、devkit_load_live_shaders | 不重启游戏,热加载替换后的 HLSL |
几个对新手友好的设计:
devkit_list_draws支持过滤参数:可按着色器哈希、最小渲染目标数、SRV 数量等收窄范围再分页,避免把上万条 Draw Call 塞进上下文。devkit_get_shader不默认发送原始字节码,而是返回元数据加可选的反汇编/反编译文本,DXBC 走cmd_Decompiler.exe,DXIL 走内置 DXC 反编译路径。devkit_analyze_resource同时输出 PNG(SDR 预览)与 EXR(HDR 保真)——官方特别提醒:判断 HDR 是否保留要看数值分析和 EXR,PNG 只适合快速肉眼检查。
推荐分析循环:如何高效地"读懂"一帧?
docs/DEVKIT_MCP.md 给出的核心经验值得记住:从帧的末尾倒着看,而不是从第一个亮眼的着色器开始。
- 连接并选择活跃设备(有的游戏暴露多个 D3D 设备,只有一个在真正渲染——Draw Call 数为 0 的直接跳过);
- 排队抓取快照,等下一帧 Present;
- 先看靠后的 Draw Call,定位场景合成、UI、最终 Blit 三个关键阶段;
- 用
devkit_get_draw细看候选通道的哈希、渲染目标格式、SRV 输入、混合状态; - 用
devkit_analyze_resource回读关键资源; - 目标通道确认后才开始转储和编辑着色器。
这个循环能第一时间回答 HDR 改造中最关键的问题:最终 Blit 之前 HDR 是否还在?如果最后一通道只是从已经 SDR 化的目标做单纹理拷贝,那就不是恢复 HDR 的地方。
工作流技能:给 AI Agent 一套标准作业程序
除了一次性对话,RenoDX 仓库还内置了一套面向 AI 编码代理的工作流技能(Agent Skills 规范),放在 .agents/skills/ 下,按任务域触发、按需加载:
| 技能 | 适用场景 | 交接边界 |
|---|---|---|
setup-game-mod-dev | 新建/恢复游戏 Mod、搭建 DevKit | 移交swapchain-resource-analysis |
swapchain-resource-analysis | 追踪最终输出、判断场景 HDR 是否还存在 | 信号证明后移交handle-sdr-tonemap-lut |
handle-sdr-tonemap-lut | 着色器端色调映射、LUT、HDR 桥接改造 | 目标未证明时回退给上一环节 |
analysis-graphing | 暗色主题曲线图、色度比较、LUT 统计图 | 移交 HDR 图案/输出环节 |
hdr-test-pattern-generation | 生成确定性 SDR/HDR 渐变、色条等验证图案 | — |
bt2020-png-generation | BT.2020/BT.2100 PQ PNG 输出与信号校验 | — |
每个技能目录包含一个SKILL.md(触发词与流程边界)和模板/片段文件,索引见 .agents/skills/README.md。配合分层的 AGENTS.md(根目录放全局规则、子目录放局部规则),AI Agent 就有了"仓库记忆 + 专家手册"的双重加持——这正是 MCP 工作流能自动化的关键:协议负责"手",技能负责"经验"。
从实验到正式 Mod:分析成果如何落地?
官方明确划分了"开发工具"与"交付 Mod"的边界:
- 先用 MCP 证明:用工具锁定目标通道,用资源克隆回读证明 HDR 通路可行;
- 再转化为 addon:把验证过的行为写进 src/games/ 下对应游戏目录(如
addon.cpp做资源升级与着色器注册、CRC 寻址的着色器替换); - 最后验证非 DevKit 路径:交付的 Mod 不能依赖手动克隆开关或覆盖层。
目录约定也有讲究:转储的原始.cso放tmp/{game}/original/等src/games/**之外的位置,可编辑的 HLSL 替换放src/games/{game}/并通过devkit_set_live_shader_path指向它。混放会让二进制"影子"盖住可编辑源码,造成热加载失效的诡异现象。⚠️
常见问题
Q:AI Agent 能替代全部逆向工作吗?不能,但能承担最耗时的"观察与筛选"环节。反编译是 best-effort 的:devkit_get_shader报告反编译不可用时,回退到反汇编或外部工具即可。
Q:MCP 客户端断开了,游戏里的 DevKit 也挂了吗?不一定。传输层断开不等于游戏侧后端消失——重连桥接进程后用devkit_status确认即可。
Q:着色器热重载时游戏卡住了怎么办?热加载/卸载设计为排队到 Present 时处理而非 MCP 线程,卡住时先重建最新版 DevKit。
Q:多设备游戏怎么选对设备?先查devkit_status与devkit_select_device,关注活跃交换链、管线数、被追踪着色器数与捕获的 Draw Call 数——指标全为 0 的设备通常不是你要的。
总结
RenoDX 的 AI 辅助逆向工作流把游戏图形逆向拆解为一条标准管线:MCP 协议提供标准化的"眼睛和手",工作流技能沉淀了"从帧尾倒查、克隆验证、落地为 Mod"的方法论,AI Agent 负责串联执行。对新手而言,这意味着你不再需要逐行读 DirectX 文档才能入门——先让 Agent 帮你把帧结构讲清楚,再一步步深入。如果你想动手体验,建议从 docs/DEVKIT_MCP.md 的完整工具清单开始,配合 docs/CONTRIBUTING.md 的工具链引导,很快就能跑通第一个 AI 驱动的分析会话。
【免费下载链接】renodxRenovation Engine for DirectX Games项目地址: https://gitcode.com/GitHub_Trending/re/renodx
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考