OpenWF Bootstrapper Manual

While the main feature of the bootstrapper (dwmapi.dll or wtsapi32.dll) is to use a custom server with the game, it has other features as well.

client_config.json

The bootstrapper's configuration is in OpenWF/client_config.json relative to your game folder. It has the following fields:

HTTP Interface

While the game is running, the you can visit http://localhost:6155/ to modify some of the above options, access additional features like teleportation, and use scripts.

Command Line Arguments

The bootstrapper adds the owfServerHost command line argument, which can be used to override the server_host in the config.

Tunables

When connecting to a server, the bootstrapper requests /custom/tunables.json to check the JSON object for the presence of the following fields:

The presence of a field disables the respective feature.

To aid in troubleshooting, the bootstrapper assumes that a compatible server responds to this request with status code 200 and a valid JSON object, otherwise showing a warning popup.

Traffic Deviations

Metadata Patches

Metadata Patches are loaded from OpenWF/Metadata Patches.txt, although you can also create a OpenWF/Metadata Patches/ folder and any text file inside of that will be loaded as well.

They are generally parsed line by line, with roughly the following steps being taken for each line:

  1. If the line starts with /, a new patch for the given absolute path is started. If the line ends on &, the next line that also starts with / will be added to this patch instead of creating a new patch.
  2. Leading and trailing tabs and spaces are removed from the line.
  3. If the line starts with &, that character is removed from the line and the rest of the line is assumed to be an absolute path to be added to the current patch.
  4. If the line starts with >, that character is removed from the line and the rest of the line is assumed to be an absolute path for which a new patch is created.
  5. If the line starts with r|, a replacement is added to the current patch in the form r|A|Z which means A in the metadata will be replaced with Z.
  6. If the line starts with s|, a regex substitution is added to the current patch, e.g. s|(.+)=1|$1=0 would change HasCooldown=1 to be HasCooldown=0.
  7. The line is added as a metadata prefix to the current patch. This works to add top-level properties but also to replace them because the game resolves duplicates by ignoring subsequent entries.

If multiple patches affect the same absolute path, they are combined.