Skip to content

nullforce-forks/ForzaDesigner6

 
 

Repository files navigation

Forza Designer 6 (FD6)

Forza Designer 6 splash

Watch the FD6 trailer
▶ Trailer / tutorial on YouTube

FD6 badge

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


Install

  1. Download FD6.exe from Releases.
  2. 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.


How to use

Generate:

  1. Launch FD6.exe. Click Upload Image… and pick a JPEG/PNG.
  2. Right panel: pick a Profile (balanced recommended) and Stop at shapes (1500 or 3000 typical).
  3. Click Start. Watch the live preview rebuild your image. The JSON auto-saves next to your source image when done.

Inject:

  1. Launch your target game (Forza Horizon 3, 4, 5, or 6) and open the Vinyl Group editor.
  2. 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.
  3. In FD6: pick your target from the Target dropdown, click Upload JSON, then Inject into [game].
  4. 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.
  5. 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 / ❌ Don't

  • 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.

Troubleshooting

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.

Build from source

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

Credits

Inspired 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.py looks up .?AVCLiveryGroup@@ by C++ type). FD6 does not ship or load community-distributed forza-codes.dat runtime 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.


Disclaimer

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.

License

MIT — free for any use with attribution.

About

Forza Designer 6. Convert any image into a Forza Horizon 6 vinyl group. Now open source and compatible with Forza Horizon 3, 4, 5, and all Forza Horizon 6 builds. Built from the ground up for Forza Horizon 6.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 99.3%
  • Batchfile 0.7%