Repository navigation
2. Addons ‐ For Authors
Information on the files and data used by addons and how to generate them can be found here.
The structure for a mod folder will look like this:
├── mods
├── Knight Rider/
├── media
├── plugins
├── database.json
├── mod.json
└── strings.json
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.
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.
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.
This file holds all the information about the changes you want to perform to the game's gamedbRC.slt database file.
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.
These are other files found in mod packages that can non-destructively edit data.
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
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.