
▶ Trailer / tutorial on YouTube
Convert any image into a vinyl group for Forza Horizon 3, 4, 5, or 6.
Repo: https://github.com/tokyubevoxelverse/ForzaDesigner6 · License: MIT · Windows 10/11 x64
- Download
FD6.exefrom Releases. - Double-click — no installer, no admin rights. Windows SmartScreen → "More info" → "Run anyway".
Source build: Python 3.10+, pip install -r requirements.txt. Microsoft Visual C++ Redistributable is normally already installed; if FD6 fails to launch, grab it here.
Generate:
- Launch
FD6.exe. Click Upload Image… and pick a JPEG/PNG. - Right panel: pick a Profile (
balancedrecommended) and Stop at shapes (1500 or 3000 typical). - Click Start. Watch the live preview rebuild your image. The JSON auto-saves next to your source image when done.
Inject:
- Launch your target game (Forza Horizon 3, 4, 5, or 6) and open the Vinyl Group editor.
- Load a vinyl group with at least N spheres, where N is the shape count of your JSON. Keep saved 1500-sphere / 3000-sphere templates for reuse — fastest path is a fresh untouched template.
- In FD6: pick your target from the Target dropdown, click Upload JSON, then Inject into [game].
- Watch the dialog progress. Do not click anything in FD6 or the game during injection — interacting can reallocate the in-game memory mid-write and fail the operation.
- When the status turns 🟢 green, the vinyl group has been painted with your shapes.
Re-injecting onto an already-painted template works too — the locator falls back to an RTTI vtable scan when the fresh-sphere fingerprint misses. Expect an extra 2–5 minutes on the first re-injection scan per game session; subsequent ones are instant.
- Do open the game's vinyl editor before clicking Inject.
- Do keep one or two sphere templates saved for fast re-use.
- Do wait for the green status — large-game scans can take minutes.
- Don't edit, add, delete, or move shapes in-game during an active injection.
- Don't click anything in FD6 during the RTTI fallback phase. Windows may label it "Not Responding"; it isn't — let it finish.
- Don't close the game mid-injection or run FD6 as admin.
| Problem | Fix |
|---|---|
| Splash video hangs | Click anywhere or press Esc. A hard 30 s auto-skip is always active. |
| "No confident match" error | Vinyl editor not open, or template doesn't have enough spheres for the JSON's shape count. Load a bigger template. |
| Re-injection scan looks stalled | RTTI fallback phase can run silently for 2–5 min on a large game. The dialog resumes once a candidate is located. |
| Shapes offset or wrong scale | File an issue with the JSON, the source image, and a screenshot of the in-game result. |
| Game patched, all candidates rejected | The per-game struct offset may have shifted. Open an issue — the profile in fd6/inject/game_profiles.py needs updating. |
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.exeInspired by:
- forza-painter by
the_adawg(FH4/FH5 — MIT) - geometrize-lib by Sam Twidale (MIT)
- Primitive by Michael Fogleman (MIT)
- bvzrays' publicly available forza-painter-fh6 (MIT). FD6 uses his published research for: the CLiveryGroup struct field offsets, the (X, −Y) position convention and 63 / 127 scale divisors, the confirmation that FH5 and FH6 share the same struct layout (which made FH3/FH4/FH5 support feasible), and the MSVC RTTI vtable-scan locator approach (FD6's
rtti_locator.pylooks up.?AVCLiveryGroup@@by C++ type). FD6 does not ship or load community-distributedforza-codes.datruntime pattern files — only the single baseline RTTI class name is hardcoded.
The FH6 vinyl-group memory layout was independently reverse-engineered from scratch for this project against FH6 build 354.221 and later cross-validated against bvzrays' research; the two derivations matched on every field offset. The sphere-template injection workflow (load a fresh sphere group → fingerprint-locate it in memory → overwrite each sphere's bytes in place) and the strict 5/5 + 95% full-table validation gate are FD6 originals; both stay as the primary locator path, with RTTI vtable scan as the secondary fallback for re-injection onto already-painted templates.
Use entirely at your own risk. FD6 modifies the memory of a running Forza Horizon process to populate vinyl-group shapes. It does not patch the game executable, install drivers, modify save files, or attempt to bypass any anti-cheat or DRM system. However, memory modification of a live game process may be interpreted by Microsoft, Xbox Live, or the game's publisher (Turn 10 / Playground Games) as a violation of the Microsoft Services Agreement, the Xbox Community Standards, or the relevant Forza title's terms of use. Doing so may result in temporary suspension or permanent ban of your Xbox / Microsoft account, loss of access to purchased games, online services, achievements, and any content created with FD6.
The authors and contributors of Forza Designer 6 accept no responsibility or liability whatsoever for any consequences arising from the use of this software. By downloading, building, installing, or running FD6 you acknowledge these risks and accept them in full. This tool is provided as-is, MIT-licensed, with no warranties of any kind. Not affiliated with, endorsed by, or sponsored by Turn 10 Studios, Playground Games, Microsoft, Xbox, or any official Forza brand.
MIT — free for any use with attribution.

