1.6.0 ​

Swofty Launcher for F1 25 1.6.0 adds the standard library: a shared registry that addons add records to, with the core applying them in the game. Addons made for 1.5 and earlier work as before.

Standard library ​

  • The registry holds cars, liveries, engine sounds, career seasons and ratings, era boxes, teams, drivers and wearables as records. Addons add records, make variants of them and layer edits on top, and the core applies the result in the game.
  • Thirty registries ship, each with a schema. An addon that is only data files, with no DLL, adds records to any of them from its registry/ folder.
  • Teams, drivers and wearables apply from records. A new team gets its names, colours, side data, logos and drivers' suits, helmets and gloves without a database file edited by hand. One logo image per place is scaled to every texture array that place feeds, and a place with no image uses the donor team's logo.
  • A career season can name up to 12 team slots, and career::apply_teams dresses them as the season's teams. A team an addon adds to a season shows on the new-career Team Select and in the career with its own names, colours and logo, and its new drivers get career rows.
  • Liveries and engine sounds apply from records. An engine sound redirects to the addon's own bundle file.
  • Variant era boxes use the base's tile art, show a literal title as written and keep the base's team rows.
  • A driver record with no donor names a driver row that already exists.
  • A career freezes each season's line-up, ratings and rules into its save, season by season. The save default is dry in 1.6.0: the size is logged and nothing is written unless SWOFTY_REGISTRY_SAVE=on.
  • Career contents, Team HQ tabs, the career wizard, characters, strings and addon options sit in registries underneath their 1.5 calls, and addons that call them behave the same.
  • Game hook points: career.calendar.add_activity, career.contract.decide, career.contract.sign, session.fuel.load, session.player.control, ai.controller.update, car.controllers.rebuilt and hud.spectator.visible.
  • Career operations: apply_lineup, set_driver_ratings, swap_drivers, set_slots, set_seat, set_car_number, set_look, apply_teams, teams::set_logo and tracks::set_track_fuel.
  • The core sizes the game's database from the records addons register, so a profile past 838,860 records boots with every record applied. After each boot it writes how full the database is.
  • career.calendar, career.mode and vehicle.handling are stored and applied nowhere. The log names any registry that has records and nothing that applies them.
  • Stat ids are kept in one store per install. The core's reports and state files (registry/effective.json, conflicts.json, room.json, ids.json and the career index) are in the launcher's data folder, not the game folder.

Addons ​

  • Progressive Career reads its seats and ratings from the registry, calls the career operations, reports each season's year and uses the hook points instead of its own wraps. Choose Driver shows the seats other addons' records give a season, and a team a record adds to a season races in the career. Its 1.5 exports stay.
  • Classic Seasons registers each season's cars, liveries, sounds, era boxes and shared drivers as records. Seasons 2016 to 2024 build the same game as before.
  • Career Editor uses the hook points and operations.
  • Two example addons ship in the templates: a what-if history editor and an engine sound pack with a V10 variant of the 2017 box.

Launcher ​

  • Developer mode adds the swofty dev tools: new, link, run, logs, check, test and pack. pack writes registry.lock.json.
  • Play checks each addon's requires, breaks and conflicts. A missing requirement or a breaks on an installed addon stops Play and names the fix. A conflicts shows a warning.
  • Each profile has its own addon storage. Saves stay shared, and each career records which profile started it.
  • The conflicts view shows the core's last conflicts, and an addon's tile shows a status line when something it registered did not apply. Send Logs adds effective.json, conflicts.json and catalog.json.
  • swofty test plans and runs addon tests: plan, run, shell and fixture capture|list|check. The none, boot and benchmark environments run in game, and the title screen is passed by the virtual pad after 15 seconds. Tests run in a save sandbox that leaves your own saves unchanged. The route and career environments and the career load, advance and save now commands are experimental and do not work yet.
  • If the game database has no room for a profile's records, the next launch moves older addons' database edits to the file route and pads the table. That costs one restart.

Not in 1.6.0 ​

  • The tracks system comes in a later 1.6 release.