Skip to content

Driver Profile and Persistence

noteMASTER11 edited this page Jul 14, 2026 · 12 revisions

Driver Profile and Persistence

TaxiDriver stores user data outside the mod archive under:

%LOCALAPPDATA%\BeamNG\BeamNG.drive\current\settings\TaxiDriver\

The three documents are independent so a corrupt profile does not reset settings or wallet progress.

settings.json

{
  "schemaVersion": 1,
  "modVersion": "2.14.1",
  "language": "en",
  "rememberLanguage": false,
  "difficulty": "standard",
  "fontBoost": 2,
  "silentMode": false,
  "showRouteGuidance": true,
  "realisticMode": false
}

fontBoost is rounded and clamped to 0–5. Unsupported languages and difficulties return to defaults.

profile.json

{
  "schemaVersion": 1,
  "modVersion": "2.14.1",
  "fullName": "John Doe",
  "birthDate": "",
  "avatar": "🙂"
}
  • Names are trimmed, internal repeated spaces are collapsed, and length is limited to 160 bytes.
  • Birth date uses YYYY-MM-DD, must represent a valid calendar date, and accepts years from 1900 through the current year.
  • Avatar must be one of the 32 values defined in identity.lua.

Age is calculated by the UI and is not persisted.

progress.json

The progress document contains:

  • wallet balance;
  • current rating;
  • accumulated rating total and count;
  • completed ride count;
  • monotonically increasing sequence ID;
  • passenger reviews;
  • rating history;
  • balance history.

Representative structure:

{
  "schemaVersion": 1,
  "modVersion": "2.14.1",
  "balance": 24.75,
  "rating": 4.82,
  "ratingTotal": 48.2,
  "ratingCount": 10,
  "completedRides": 10,
  "sequence": 10,
  "reviews": [
    {
      "id": 10,
      "passengerName": "Amelia Howard",
      "emoji": "😍",
      "quality": 94,
      "fare": 12.85,
      "rating": 4.82,
      "timestamp": 1784040000,
      "outcome": "completed"
    }
  ],
  "ratingHistory": [{"index": 10, "value": 4.82, "timestamp": 1784040000}],
  "balanceHistory": [{"index": 10, "value": 24.75, "timestamp": 1784040000}]
}

Valid outcomes currently include completed, passengerExit, and driverAbandonment.

Reviews and history are not given a fixed retention limit. The UI paginates reviews in groups of six.

Validation and recovery

Every file has schemaVersion = 1. On extension load:

  1. the file is read inside pcall;
  2. schema and fields are sanitized;
  3. unsupported schema or invalid root data falls back to defaults;
  4. a canonical sanitized document is immediately written back.

If progress.json does not exist, the extension can import balance/rating values from BeamNG extension serialization once, then writes the new progress file.

Write points

  • Settings: when the settings page is saved or difficulty is changed.
  • Profile: when the profile identity page is saved.
  • Progress: completed ride, passenger exit, driver abandonment, fuel purchase, mission end, and extension unload.

Backup and reset

To back up progress, copy the complete settings/TaxiDriver directory while the game is not writing it.

To reset only one category, remove the corresponding JSON file. The next extension load recreates that file with defaults and leaves the other two documents untouched.

Clone this wiki locally