Data addons
A data addon changes F1 25's content with operations only: no DLL and no launcher plugin. You list the changes in the operations block of its swofty.json, and the launcher applies them every time it builds a profile. Players install it on the Addons page. Content made for the Team Simplified suite, such as .serps packages and track zips, is a mod instead.
Make one
- Make a folder with a
swofty.jsonat its root (Your first data addon below). - Decide what you change and find its operation kind in the table below.
- Write the operation file and list it in
operations(Operations). - Install the folder, enable it on a modded profile, and run
swofty build; read every line of output (Check what a build did). - Test it in game with only your addon enabled (Test in game).
- Package it as a
.swoftyaddonand publish it (Package it).
What to change
| Change | Operation kind | Page |
|---|---|---|
| Teams, cars, drivers, rules, unlocks | database: set, add-row | Game database |
| Names and descriptions | assets: lang., lang. | In-game text |
| Textures, models, materials, worlds | erp: replace-resource, copy-resource, patch-pkg, ... | Textures and models |
| A special livery for one car | database and erp | Adding a livery |
| A track that ships with its own name | assets: track., lang., db. | A track with its own name |
| A menu layout | erp: replace-resource on a scene | Editing menus |
| A new in-game screen | screens | In-game UI |
| A loose game file | files | File operations |
Operations lists every kind, how each reaches the game and in what order they apply.
What's in this section
| Page | Covers |
|---|---|
| Operations | What an operation is, every operations field, the prefixed kinds in assets files, build and runtime routes, order and conflicts |
| Game database | Find a key, change a value, add a row, rename a track |
| In-game text | Stock tags and your own strings |
| Textures and models | Inspect archives, replace and copy resources, mip files, !pkg edits |
| Adding a livery | A complete data addon: a special livery in the picker |
| A track with its own name | Ship a community track in an addon and name it |
Your first data addon
This addon makes a stop-go penalty last 10 seconds with one database operation:
my-addon/
├── swofty.json
└── db/
└── changes.json{
"schema_version": 1,
"id": "yourname.stop-go-10",
"name": "10-second stop-go",
"version": "1.0.0",
"author": "Your Name",
"description": "Stop-go penalties last 10 seconds.",
"kind": ["database"],
"compat": { "game": "f1_25", "game_builds": [">=25251167"] },
"operations": {
"database": ["db/changes.json"]
}
}{
"schema_version": 1,
"ops": [
{ "op": "set", "select": "rules.stop_go_penalty", "field": "penalty_duration", "value": "10" }
]
}Leave out native and launcher: those carry code. kind lists the categories the Addons page shows (database, erp, ui, files). See the addon manifest for every field.
Install the folder, enable it on a modded profile, and build:
swofty addons install ./my-addon
swofty addons enable yourname.stop-go-10
swofty buildThe vanilla profile takes no addons, so build a modded one. swofty build writes the result to $DATA/cache/overlay/<profile>/<buildhash>/ and leaves the game folder alone. To play it, press Play in the launcher.