Skip to content

Game registry

Dark Daskin edited this page Apr 30, 2026 · 1 revision

The game registry keeps the list of installed Unity games available for modding. You configure a game instance once and then refer to it in mod project files. This prevents storing machine-dependent paths to games in the mod sources and facilitates team-based development.

Games are referred by the build system by game name (derived from game files) and optional version (either derived from game files or set manually).

Managing the game registry

Via Visual Studio

The primary way to manage the game registry is via the corresponding option page located at Tools → Options → Unity Mod Studio → Games. Here you can add, update, or remove a game entry. Games can also me mass imported from the list of installed programs or from the Steam library. Finally, you can update all games in the list, ensuring that the information stored in the game registry is up-to-date.

Games options page

Adding a game by path

To add a game by manually specifying its path click the Add button.

Game properties window

In the Game properties window you first need to specify the game path by either writing it in the corresponding text field or browsing for it by clicking the "…" button next to it. If the specified path points to a valid Unity game, other properties will be filled automatically.

You don't need to specify the mods path unless the game is not supported by specific Unity Mod Studio extensions. In that case, an absolute path or a path relative to the game path can be specified in the corresponding text field.

The display name is only used to display the games in the list. You can leave it automatically filled or change to anything else. The display name with game version appended must be unique.

The game version is used to distinguish between instances of the same game. It can be left empty if you do not plan to support multiple versions of the game in your mods. However, some game-specific extensions (such as RimWorld) require the version to be always set. In that case this field is filled automatically. The game name with game version appended must be unique.

The mod deployment section specifies how the mod should be deployed into the mods directory.

  • Disabled: when it is selected, no files are copied to the mods directory.
  • Copy: when it is selected, only required files are copied to the mods directory. Additionally you can set the Copy the source code checkbox to copy the source code files as well. The intermediate build files are never copied.
  • Link: when it is selected, a symbolic link to the mod solution directory is created. This can save some build time and space on disk.

The Unity Doorstop section specifies how the Unity Doorstop mod loader is used.

  • Disabled: Doorstop is not deployed into the game directory. Debugging will not work.
  • Use for debugging: Doorstop is deployed into the game directory but does not load the mod.
  • Use for debugging and mod loading: Doorstop is deployed into the game directory and configured to load the mod.

The Use alternate DLL name checkbox allows to rename Doorstop DLL to 'version.dll' instead of 'winhttp.dll'. Might be required for some games.

Updating a game

To update a game select it from the list and click the Update button. The same Game properties window will open, allowing to change the properties.

Removing a game

To remove a game select it from the list and click the Remove button.

Importing games

To import one or more games from the list of installed programs or from the Steam library click the corresponding button.

Add games window

In the Add games window you can select one or more games to add and click OK to add them to the registry.

Updating all games

By clicking the corresponding button you can request a re-scan of all listed games. This can be useful to keep the game registry up-to-date in case one or more games are updated (e.g. via Steam).

Via MSBuild

The UnityModStudio.Build package adds several MSBuild targets which can me used to manage the game registry.

Adding a game by path

Run the following console command in the project directory: dotnet msbuild -t:AddGameToRegistry -p:GamePath=path\to\game. This will add a game to the registry, leaving all other properties at their default values. If needed, more properties can be specified using -p:Name=Value syntax.

  • GameDisplayName.
  • GameModsPath.
  • GameVersion.
  • ModDeploymentMode: Disabled, Copy, or Link.
  • DeploySourceCode: true or false.
  • DoorstopMode: Disabled, Debugging, or DebuggingAndModLoading.
  • UseAlternateDoorstopDllName: true or false.

Updating a game

Run the following console command in the project directory: dotnet msbuild -t:UpdateGameRegistry -p:GameName="Game name". This will update the game which corresponds to the specified search properties. If needed, more properties can be specified using -p:Name=Value syntax.

Properties to search by:

  • GameInstanceId.
  • GameDisplayName.
  • GameName.
  • GameVersion.

Properties to set:

  • GamePath.
  • GameModsPath.
  • ModDeploymentMode.
  • DeploySourceCode.
  • DoorstopMode.
  • UseAlternateDoorstopDllName.

Removing a game

Run the following console command in the project directory: dotnet msbuild -t:UpdateGameRegistry -p:GameName="Game name". This will remove the game which corresponds to the specified search properties from the registry. If needed, more properties can be specified using -p:Name=Value syntax.

Properties to search by:

  • GameInstanceId.
  • GameDisplayName.
  • GameName.
  • GameVersion.

Store location

The list of installed games is stored in %LOCALAPPDATA%\UnityModStudio\GameRegistry.json. You may copy this file to the same location on the target machine if you need to build your project on a machine which does not have the extension installed.