Skip to content

Configuration

This page describes Reloaded3's configuration file format details.

TODO: Ingest for settings outside of Reloaded3 origin

TODO: How we store global configuration in Application Profiles

Requirements

These are the requirements for Reloaded3 configurations.

  • Layer Support
    • Ability to have 'layers', such as hardware-specific settings.
    • Example: You don't want to boot the game in wrong resolution when syncing loadout between devices.
  • Minimal Size
  • Live Editing
    • Must be able to edit settings live.
  • Netplay Support
    • Must be able to be synced over the network.
    • This entails small configs, and a standardized way to apply them.
  • Source Generation Friendly
    • Must be able to generate source code from the configuration.
    • Or the Configuration from the source code.
  • Cross-Language Support
    • Must be able to be used in any language.
    • Not just language with native source generation support (e.g. C# and Rust).
  • Grouping of Configuration Items
    • For example, all settings related to a specific feature.
    • Or all settings related to a 'player' in a local multiplayer game.
  • Sensible Defaults
    • Mods and Packages should be able to ship sensible defaults.
  • Conditional Settings
    • For example, showing setting B only if setting A is enabled.

Non-Requirements

  • Support for every possible kind of data.
    • Some very domain specific configurations may still use separate binaries.

UX for Configuration 'Layers'

The UX around this is stupidly complicated.

The planned UX for the time being is the following.

  • Package settings UI is scoped per loadout.
  • Package configs can declare groups.
  • Groups can opt in to be 'globally configurable' (a.k.a. show_global)
    • This automatically puts them in a 'Global' section in the UI.
    • Alternatively a user may manually add them to the global section.

Sections

In reading order.

Section Description
Config Schema How configuration options are defined.
Source Generation How we generate source code from config schema.
Binary Format How Reloaded3 configuration files are written to disk.