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 ​

  1. Make a folder with a swofty.json at its root (Your first data addon below).
  2. Decide what you change and find its operation kind in the table below.
  3. Write the operation file and list it in operations (Operations).
  4. Install the folder, enable it on a modded profile, and run swofty build; read every line of output (Check what a build did).
  5. Test it in game with only your addon enabled (Test in game).
  6. Package it as a .swoftyaddon and publish it (Package it).

What to change ​

ChangeOperation kindPage
Teams, cars, drivers, rules, unlocksdatabase: set, add-rowGame database
Names and descriptionsassets: lang.set, lang.tableIn-game text
Textures, models, materials, worldserp: replace-resource, copy-resource, patch-pkg, ...Textures and models
A special livery for one cardatabase and erpAdding a livery
A track that ships with its own nameassets: track.add, lang.set, db.setA track with its own name
A menu layouterp: replace-resource on a sceneEditing menus
A new in-game screenscreensIn-game UI
A loose game filefilesFile operations

Operations lists every kind, how each reaches the game and in what order they apply.

What's in this section ​

PageCovers
OperationsWhat an operation is, every operations field, the prefixed kinds in assets files, build and runtime routes, order and conflicts
Game databaseFind a key, change a value, add a row, rename a track
In-game textStock tags and your own strings
Textures and modelsInspect archives, replace and copy resources, mip files, !pkg edits
Adding a liveryA complete data addon: a special livery in the picker
A track with its own nameShip 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
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"]
  }
}
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:

sh
swofty addons install ./my-addon
swofty addons enable yourname.stop-go-10
swofty build

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

Publishing