Skip to content

2. Addons ‐ For Authors

Arthur edited this page Oct 27, 2026 · 8 revisions

Mod Structure

Information on the files and data used by addons and how to generate them can be found here.

Mod folder

The structure for a mod folder will look like this:

├── mods
    ├── Knight Rider/
        ├── media
        ├── plugins
        ├── database.json
        ├── mod.json
        └── strings.json

Media folder

The media folder for a mod acts exactly like the mediapc or mediaoverride folders from previous versions of Extra Options, but solely dedicated to assets belonging to the mod.

Plugins folder

The plugins folder servers as a quick way into the game's code for any DLL-based hooks a mod may require. All and any DLLs inside this folder will be loaded by the game.

The source code for an example plugin is available in the source code for Extra Options.

Mod.json

This is the file where metadata about your mod is stored.

Example:

{
  "format_version": 1,
  "id": "fm5-cut-rims-pack",
  "name": "Forza Motorsport 5 - Removed Rims Pack",
  "author": "Arthur",
  "version": "1.0.0",
  "description": "An addon rim pack featuring all the wheels from Forza Motorsport 5 that were cut in Forza Horizon 2.",
  "database": "database.json",
  "media": "media",
  "dependencies": []
}

The most important bit of info here is the ID. It must not contain spaces, underscores, or other unconventional characters. Stick to A-Z, 0-9, and - itself.

If your mod does not require a media folder and only ships database edits, remove the "media": "media", line from this file. The opposite applies when shipping only asset overrides inside media and no database changes.

Database.json

This file holds all the information about the changes you want to perform to the game's gamedbRC.slt database file.

Strings.json

This file holds all the information related to localization strings you want to edit or append to the game's string bank.

Check the string hashes wiki page for more details.

Mod Data

These are other files found in mod packages that can non-destructively edit data.

Carbin.json

This file holds all the information related to the changes you want to perform to a given car's *.carbin file. It must be placed relative to where the real carbin would be in the vanilla files.

Example:

├── mods
    ├── Fast 7 Toyota Supra - TRD Parts/
        ├── media
            ├── TOY_SupraFast7_98
                ├── TOY_SupraFast7_98.carbin.json
        ├── database.json
        ├── mod.json

Using the script

None of these JSON files, apart from Mod.json, are meant to be written from scratch. The source code for Extra Options provides a Python script, alongside a batch file, to generate them with ease.

The script will take in a vanilla file from the base game as a first input, then an edited version of it as a second input. The differences between them will be written to the JSON format previously mentioned.

Clone this wiki locally