tokyubevoxelverse/ForzaDesigner6

GitHub: tokyubevoxelverse/ForzaDesigner6

一个将图像转换为《极限竞速》和《神力科莎》游戏内贴花的开源工具。

Stars: 99 | Forks: 13

# Forza Designer 6+ (FD6)

Forza Designer 6 splash

Watch the FD6 trailer
▶ Trailer / tutorial on YouTube
🎵 Forza Designer Radio Maker — v0.0.1-Alpha release

FD6 badge

## 安装 1. 从[版本发布](https://github.com/tokyubevoxelverse/ForzaDesigner6/releases)页面下载 `FD6.exe`。 2. 双击运行 — 无需安装程序,无需管理员权限。Windows SmartScreen 弹窗 → 点击"更多信息" → "仍要运行"。 从源代码构建:需要 Python 3.10+,运行 `pip install -r requirements.txt`。Microsoft Visual C++ Redistributable 通常已安装;如果 FD6 无法启动,请从此处[下载](https://aka.ms/vs/17/release/vc_redist.x64.exe)。 ## 使用方法 1. 启动 `FD6.exe`。点击 **上传图片...** 并选择一个 JPEG/PNG 文件。 2. 右侧面板:选择一个**配置文件**(推荐 `balanced`)和**停止于形状数**(通常为 1500 或 3000)。 3. 点击**开始**。观察实时预览如何重建你的图像。完成后,JSON 文件会自动保存在源图像旁边。 **注入:** 1. 启动你的目标游戏(**《极限竞速:地平线》3、4、5 或 6**)并打开贴花组编辑器。 2. 加载一个**至少有 N 个球体**的贴花组,其中 N 是你 JSON 文件的形状数量。保留已保存的 1500 球体 / 3000 球体模板以便快速重用 — 最快的方法是使用一个全新的、未编辑过的模板。 3. 在 FD6 中:从**目标**下拉菜单选择你的目标游戏,点击**上传 JSON**,然后点击**注入到 [游戏]**。 4. 观察对话框进度。**在注入过程中不要点击 FD6 或游戏中的任何东西** — 交互可能会在写入过程中重新分配游戏内存,导致操作失败。 5. 当状态变为 🟢 绿色时,贴花组已被涂上你的形状。 **将形状重新注入到一个已经涂画过的模板上**同样可行 — 当全新球体的指纹匹配失败时,定位器会回退到 RTTI 虚表扫描。预计在每次游戏会话的首次重新注入扫描时会多花 2-5 分钟;之后的扫描是即时的。 ## 《神力科莎:竞技版》支持 ACC 的支持是**基于文件的** — 没有实时内存注入。FD6 将一组文件(涂装 `.json` 文件夹 + 包含 PNG 纹理的皮肤文件夹)直接写入 ACC 的用户数据目录,游戏内的涂装选择器会在下次启动时读取它。 1. 从 ACC 标签页选择一个目标**车辆**(FD6 附带所有基础游戏车辆的目录)。目录决定了哪些纹理插槽可用。 2. 点击**上传图片...** 加载你想要印在车上的美术作品。FD6 目前将源 PNG 文件写入车辆 4096×4096 涂装图纸的左上角。计划在 v0.3.6 版本中实现基于每个车型 UV 的贴花位置放置。 3. 点击**导出**。FD6 会写入: - `Documents/Assetto Corsa Competizione/Customs/Cars/<车辆>/<涂装>.json` — ACC 选择器索引的元数据。 - `Documents/Assetto Corsa Competizione/Customs/Liveries/<涂装>/decals.png`(以及 `sponsors.png`)— 实际的纹理资源。 4. 启动 ACC → 车辆选择器 → 自定义标签页。新的涂装会立即出现。 ACC 导出不需要 ACC 运行,也不会触及 ACC 的进程内存 — 这只是对你 Documents 文件夹的纯文件写入,因此适用于《极限竞速》注入的封禁风险警告**不适用**于此。 ## ✅ 应做 / ❌ 不应做 - **应**在点击注入之前打开游戏的贴花编辑器。 - **应**保存一两个球体模板以便快速重用。 - **应**等待绿色状态 — 大型游戏的扫描可能需要几分钟。 - **不应**在活跃注入期间在游戏内编辑、添加、删除或移动形状。 - **不应**在 RTTI 回退阶段点击 FD6 中的任何东西。Windows 可能会将其标记为“无响应”;但这并非如此 — 请让它完成。 - **不应**在注入过程中关闭游戏或以管理员身份运行 FD6。 ## 故障排除 | 问题 | 解决方法 | |---|---| | 启动视频卡住 | 点击任意位置或按 Esc 键。始终有一个硬性的 30 秒自动跳过功能处于活动状态。 | | “无匹配置信度”错误 | 贴花编辑器未打开,或者模板的球体数量不足以满足 JSON 文件的形状数量。加载一个更大的模板。 | | 重新注入扫描似乎卡住 | 在大型游戏上,RTTI 回退阶段可能会静默运行 2-5 分钟。一旦找到候选地址,对话框将继续。 | | 形状偏移或缩放错误 | 提交一个 Issue,附上 JSON 文件、源图像以及游戏内结果的截图。 | | 游戏更新补丁,所有候选地址被拒绝 | 每个游戏的结构体偏移量可能已改变。提交一个 Issue — `fd6/inject/game_profiles.py` 中的配置文件需要更新。 | ## 从源代码构建 ``` git clone https://github.com/tokyubevoxelverse/ForzaDesigner6.git cd ForzaDesigner6 python -m venv .venv .\.venv\Scripts\Activate.ps1 pip install -r requirements.txt python -m fd6 # run from source pytest # run tests .\build_exe.bat # → dist/FD6.exe ``` ## 致谢 灵感来源于: - **forza-painter** by `the_adawg` (FH4/FH5 — MIT) - **geometrize-lib** by Sam Twidale (MIT) - **Primitive** by Michael Fogleman (MIT) - **bvzrays** 公开的 [forza-painter-fh6](https://github.com/bvzrays/forza-painter-fh6) (MIT)。FD6 使用了他发布的研究成果:CLiveryGroup 结构体字段偏移量、(X, -Y) 位置约定和 63 / 127 比例除数、确认 FH5 和 FH6 共享相同的结构体布局(这使得支持 FH3/FH4/FH5 成为可能),以及 MSVC RTTI 虚表扫描定位器方法(FD6 的 `rtti_locator.py` 通过 C++ 类型查找 `.?AVCLiveryGroup@@`)。FD6 **不**提供或加载社区分发的 `forza-codes.dat` 运行时模式文件 — 仅硬编码了单个基线 RTTI 类名。 FH6 贴花组的内存布局是针对此项目从头开始对 FH6 build 354.221 进行独立逆向工程得到的,后来与 bvzrays 的研究进行了交叉验证;两者在每个字段偏移量上都匹配。球体模板注入工作流(加载一个全新的球体组 → 在内存中通过指纹定位它 → 就地覆盖每个球体的字节)以及严格的 5/5 + 95% 满表验证门控是 FD6 的原创;两者都作为**主要**定位路径保留,RTTI 虚表扫描则作为重新注入到已涂画模板时的**次要**回退方案。 ## 免责声明 **使用风险完全自负。** FD6 通过修改运行中的《极限竞速:地平线》进程的内存来填充贴花组形状。它不会修补游戏可执行文件、安装驱动程序、修改存档文件,或尝试绕过任何反作弊或 DRM 系统。然而,**修改实时游戏进程的内存可能会被微软、Xbox Live 或游戏发行商(Turn 10 / Playground Games)解释为违反《微软服务协议》、《Xbox 社区标准》或相关《极限竞速》游戏的使用条款。这样做可能导致你的 Xbox/微软账户被临时暂停或永久封禁,丧失访问已购买游戏、在线服务、成就以及使用 FD6 创建的任何内容的权限。** Forza Designer 6 的作者和贡献者**不承担任何责任或义务**,也不对因使用此软件而产生的任何后果负责。通过下载、构建、安装或运行 FD6,你确认理解这些风险并完全接受。此工具按原样提供,采用 MIT 许可证,不提供任何保证。与 Turn 10 Studios、Playground Games、Microsoft、Xbox 或任何官方极限竞速品牌无关联、未获认可或赞助。 ## 许可证 [MIT](LICENSE) — 免费用于任何用途,但需注明出处。
标签:Assetto Corsa, Forza Horizon, JSON, Python, vinyl group制作, Windows应用, 图像处理, 图像识别, 图像转换, 图形处理, 实时预览, 无后门, 模组制作, 游戏定制, 游戏工具, 游戏模组, 游戏注入, 自动保存, 赛车游戏, 软件开发, 逆向工具