0.2.0 ​

Swofty Launcher for F1 25 0.2.0 splits the app's content into addons and mods, adds a Mods page for content packages and tracks, and loads mod content in memory while the game boots.

Download it from Releases. The Windows zip and the Linux tar.gz each hold the launcher and swofty in bin/ and the in-game loader in loader/.

Addons and mods ​

  • Addons are code, settings and in-game UI. They were called mods before this version. Mods are content packages such as .serps files, with no code. Addons, mods and maps explains the difference.
  • The launcher's Addons page, the swofty addons commands and the in-game loader use the new name. Plugins load from swofty/addons/, and the old swofty/mods/ folder still loads.
  • The old swofty mods install, enable and disable forms are forwarded to swofty addons.

The Mods page ​

The Mods page comes from Team Simplified, a built-in addon that reads .serps packages made with Simplified Studio. It is based on the Simplified Suite by Team Simplified. See Mods and tracks.

  • Drop a .serps file, a mod zip, a mod folder or a track zip anywhere on the launcher window, or use Import…. Addon folders, .swoftymod files and addon zips dropped on the window install as addons.
  • The library is shared by every profile. Each profile keeps its own order and switches, and the mod lower in the list wins.
  • Each mod is compared with the clean game files at import. The expanded row shows WHAT IT CHANGES and CONFLICTS, and the row tags show which mods it overrides.
  • The build applies only the records, resources, text entries and files each mod changes. Mods that change different rows of the database or different resources of an archive combine.
  • Removals of database records apply only when the mod was made for the installed game version.
  • swofty mods list, import, enable, disable, move and remove do the same from the command line.

Tracks are mods ​

  • Community tracks import on the Mods page like any other mod, and there is no Maps page. A track's id is its track code, or <code>-track when a mod in the library already has that id. Importing a track again replaces it.
  • With the in-game loader from this version there is no limit on how many tracks are on. Each track's archive goes to its own path, 2025_asset_groups/environment_package/tracks/<code>/<code>.erp, and its asset groups register at boot. Without asset group support the limit is eight.
  • Tracks from $DATA/maps/ move into the library, turned on in the same profiles, the first time the launcher starts or a swofty command runs. swofty --help, swofty --version and mistyped commands leave the data folder alone.
  • swofty maps is another name for swofty mods.
  • Track packages made with the Simplified Track Installer import as ordinary .serps mods.

Custom Grid Size on tracks ​

Custom Grid Size now reaches community tracks. At build the launcher gives each track's world enough grid slots, garages and pit boxes for the chosen grid size. Sepang goes from 24 grid slots, 12 garages and 12 pit boxes to 28, 14 and 14 for 28 cars. The new garages have no dressing.

ADDON SETTINGS ​

The in-game menu entry under Career is now ADDON SETTINGS. It lists every enabled addon and track. Built-in addons that only add launcher pages, such as Team Simplified, are not listed.

Runtime assets ​

The in-game loader now applies content in memory while the game boots, and the game files stay stock. swofty build writes swofty/assets.json and swofty_core reads it.

KindWhat swofty_core doesStatus
groupRegisters asset groupsStable
erpReplaces and adds resources inside archivesStable
dbChanges game database recordsStable
langSets and adds language stringsStable
fileOverlays loose game filesExperimental
  • An experimental kind runs in memory only when "runtime_assets" in $DATA/config.json names it. Otherwise it is built into the game folder.
  • "build_assets" in $DATA/config.json keeps erp, db or file on the build route.
  • swofty build lists every conflict, with the addon or mod that wins.

Asset API and Loading mods at runtime cover the details.

For modders and addon authors ​

  • operations.assets in swofty.json names asset op files with group.register, erp.put-resource, db.set, db.put-record, db.remove-record, lang.set, lang.table, file.put and warn.
  • operations.files and file.put now replace and add loose game files.
  • Native plugins load mods from their own code with swofty/assets.hpp (API version 4, the assets capability), and "early": true loads a plugin before the game database.
  • The build installs a third-party addon's plugin DLLs, and the files listed in files on its operations.native entry, to swofty/addons/<id>/ in the game folder, and the loader loads them from there in load order.
  • The build hash covers every source file an op names.
  • The stock language files are read out of the game's executable, and .lng files can be read, written and compared.
  • The Launcher API lets an addon add sidebar pages, import dropped files, run a build hook, add swofty commands and add a summary to profile cards. Built-in addons use it in Rust.
  • Third-party addons get the same through a helper program named in a launcher block in swofty.json. The helper talks JSON lines over stdin and stdout. templates/launcher-addon is a working example.

Launcher ​

  • The title bar shows the version.
  • The sidebar shows Profiles, Addons and each addon's pages as tiles, with the addon's name above its pages. A button at the bottom switches it to a list.
  • Addons can have an icon. Team Simplified shows its logo.
  • Turning an addon off hides its pages. Team Simplified is on by default and can be turned off per profile.
  • The play bar only shows a status when there is something to act on, such as a crash or settings waiting to rebuild.
  • Changes made in the launcher while a build runs are kept.

Docs ​

The docs are split into two tabs:

  • Tutorials for players: installation, addons, mods and tracks, profiles, in-game settings and restoring the game.
  • Reference for developers: Creating mods, Creating addons, the Standard library, the Game API, the file formats and the swofty command line.

Old page addresses redirect to their new pages.

Known issues ​

  • Time Trial on an added track does not load: Okayama crashes and Sepang stays on the loading screen. Use a Grand Prix.
  • On added tracks, Custom Grid Size places the extra grid slots and garages in a straight line from the last stock ones, and garages from 13 up have no dressing.
  • erp.replace-resource, erp.add-resource, erp.remove-resource and erp.add-mipmaps are not built. Removals of resources in mods are left out, and the build warns with their count.
  • Text changes need the in-game loader.
  • Track-select pictures share one invitational event picture, invitational_image_2.
  • 7z and RAR archives are not read. Unpack them and import the folder.
Publishing