# TicTacToe-AI：REA 分叉对单个游戏方法的有限重建

> 作者的 REA 分叉（发帖时名为 rea-engine，后更名为 RE-Agent）反编译 GPL 许可的 TicTacToe-AI 游戏所发布的 .NET 可执行文件，重新编译恢复出的 C# 与资源，并依据原始 IL 修复一处反编译错误。差分探针在一个状态判定方法的全部 19,683 种棋盘赋值上运行原版与重建代码，并比较六张窗体渲染图。报告只判定该方法通过，整个游戏仍属部分重建。

- 类型：案例
- 目标：游戏
- 类别：REA 社区调查案例
- 关联：作者报告的混合工具流程
- 来源复核于：2026-10-18
- 收录于：2026-10-18
- 原始资源：<https://github.com/heaven-hm/re-agent/tree/develop/benchmarks/tictactoe>
- 一手来源：<https://github.com/heaven-hm/re-agent/blob/a84c61e8baa65d445485722420a57ff4132b90d3/benchmarks/native-windows-ports/reports/targets/tictactoe.md>
- 目录页面：<https://awesomerea.org/zh/resources/rea-engine-tictactoe-case/>
- 记录 JSON：<https://awesomerea.org/resources/rea-engine-tictactoe-case/record.json>
- 英文版：[English](https://awesomerea.org/resources/rea-engine-tictactoe-case/index.md)

## 使用条件与局限

- **前提条件：**该分叉需要 Node.js 22.19+ 或 24.11+；恢复步骤使用 ilspycmd 以及本机 Roslyn 编译器和 Mono 引用，脚本默认指向 macOS 上的 Homebrew 路径。验证需要本地 X11 显示和 Mono／libgdiplus。记录的运行环境是 ARM64 上的 macOS 15.3.1 加 Xvfb，因此两张渲染图都来自同一 Mono 运行时，而非原生 Windows。
- **测试证据：**所审阅的 develop 提交（2026-10-15）报告 CheckGameStatus 在其声明的 3^9 棋盘输入域上功能通过（Feature PASS），整个游戏为部分重建（PARTIAL）。AI 落子与随机数、菜单、计时和声音均未验证，可执行文件并非逐字节相同，原始终端捕获也相差一个回车符。帖子中“逐字节一致”的说法仅适用于结构化棋盘记录和六张渲染 PNG。
- **范围：**输入是 tatlead 的 GPL-3.0 仓库所发布的 TicTacToe-AI 可执行文件，报告以 SHA-256 标识。仓库随 GPL 文本一并再分发该文件，并为履行许可义务保留一份源码归档；“重建过程中未参考该源码”属于作者报告。
- **测试证据：**脚本先重新恢复出副本，再由探针执行原版与重建程序集，逐一比较每种棋盘的返回值和指示状态字节，并在按钮操作序列后捕获 Form.DrawToBitmap 图像。当前结果 JSON 记录棋盘记录零差异、terminalBytesEqual 为 false。
- **许可：**该分叉采用 MIT，保留 morluto 的 REA 版权声明，并列出 Ghidra、Frida 等可选引擎及其各自许可；游戏及其重建负有 GPL-3.0 义务。分叉特有的代码不在上游 REA 版本中；仓库在发帖后更名，帖子中的 rea-engine 链接现会重定向到 RE-Agent。

## 一手来源

1. <https://github.com/heaven-hm/re-agent/blob/a84c61e8baa65d445485722420a57ff4132b90d3/benchmarks/native-windows-ports/reports/targets/tictactoe.md>
2. <https://github.com/heaven-hm/re-agent/blob/a84c61e8baa65d445485722420a57ff4132b90d3/benchmarks/README.md>
3. <https://github.com/heaven-hm/re-agent/blob/a84c61e8baa65d445485722420a57ff4132b90d3/docs/verification/rea-engine/game-report-current-2026-10-14.json>
4. <https://github.com/heaven-hm/re-agent/blob/a84c61e8baa65d445485722420a57ff4132b90d3/scripts/recover-tictactoe-replica.mjs>
5. <https://github.com/heaven-hm/re-agent/blob/a84c61e8baa65d445485722420a57ff4132b90d3/scripts/verify-tictactoe-reconstruction.mjs>
6. <https://github.com/heaven-hm/re-agent/blob/a84c61e8baa65d445485722420a57ff4132b90d3/scripts/benchmarks/TicTacToeProbe.cs>
7. <https://github.com/heaven-hm/re-agent/blob/a84c61e8baa65d445485722420a57ff4132b90d3/benchmarks/tictactoe/LICENSE>
8. <https://github.com/heaven-hm/re-agent/blob/a84c61e8baa65d445485722420a57ff4132b90d3/README.md>
9. <https://github.com/heaven-hm/re-agent/blob/a84c61e8baa65d445485722420a57ff4132b90d3/THIRD_PARTY_NOTICES.md>
10. <https://github.com/heaven-hm/re-agent/blob/a84c61e8baa65d445485722420a57ff4132b90d3/LICENSE>
11. <https://github.com/heaven-hm/re-agent/blob/a84c61e8baa65d445485722420a57ff4132b90d3/package.json>
12. <https://github.com/tatlead/TicTacToe-AI/tree/ce0f81b05e190dcfb72ea68c5fbb1114fa994a5a>

## 同分区更多条目：游戏

- [UltraSunnyMoon：以 REA 主导的部分《宝可梦 究极之日》重建](https://awesomerea.org/zh/resources/ultrasunnymoon-rea-case/index.md) · 案例
- [vf2-decomp：经差分验证的 Virtua Fighter 2 代码恢复](https://awesomerea.org/zh/resources/vf2-decomp-differential-recovery-case/index.md) · 案例
- [《风之杖 HD》反编译：与重编译的 Wii U 版逐函数比对验证](https://awesomerea.org/zh/resources/wind-waker-hd-decomp-case/index.md) · 案例
- [Banjo: Recompiled：基于 N64Recomp 的《Banjo-Kazooie》原生移植](https://awesomerea.org/zh/resources/banjo-recompiled-case/index.md) · 案例
- [C2C：《古惑狼 2》的混合重编译与手工反编译](https://awesomerea.org/zh/resources/c2c-crash2-hybrid-recompilation-case/index.md) · 案例
- [Castlevania 64: Recompiled：测试版静态重编译移植](https://awesomerea.org/zh/resources/cv64-recompiled-case/index.md) · 案例

## 关于此条目

说明已依据一手来源复核。
原创说明采用 MIT 许可；外部项目、论文与素材保留各自的权利和许可。
