Skip to content
CAI
Software that uses CAICheck a score

Krutonium/OpenRCT2Launcher

43.4

Weak · 20 September 2026

4.4k

lines of production code

C#

with VB.NET

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a launcher and utility suite for the OpenRCT2 game, designed to manage game installations, updates, and user settings. It provides features for switching between stable and development builds, syncing save games and playtime with the OpenRCT.net service, and installing mods via an integrated store. Additionally, it includes a mod packing utility and handles low-level file operations like symlink management for game integration.

How it got here

2014 — Initial project setup and launcher development

5 changes.

This period established the repository structure and core infrastructure for the OpenRCT2 launcher, including CI configuration and build scripts. It introduced the main application with settings management, localization, and integration with the OpenRCT.net API for save syncing and playtime tracking. The work also involved adding necessary dependencies and a helper library for symlink management.

2015 — OpenRCT2 Launcher development

8 changes.

This period focused on building the core infrastructure and user interface for the OpenRCT2 Launcher, including utility libraries for file operations and configuration. It introduced key features such as OpenRCT.net integration for account management and mod installation, alongside a new UI framework and mod packing tools.

Features

Added assembly metadata and resource infrastructure for the ReparsePoint library

This change introduces the standard .NET assembly metadata (AssemblyInfo.cs) and the auto-generated resource and settings infrastructure (Resources.Designer.cs, Resources.resx, Settings.Designer.cs, Settings.settings) for the new ReparsePointLibrary. These files establish the library's identity, versioning, and localization capabilities, providing the necessary foundation for the library's functionality.

Launcher/ReparsePointLibrary/Properties · high confidence

Added threading helper and configuration constants for OpenRCT2

The library now includes a new \Funcs\ class providing a \RunWithInvoke\ extension method to safely execute actions on UI threads, preventing cross-thread exceptions. Additionally, \OpenRCT2Config.cs\ introduces a \Constants\ class defining file paths for the OpenRCT2 installation and configuration, along with enumerations for game settings such as screenshot format, measurement units, currency, and language, supporting the launcher's configuration and update mechanisms.

Launcher/ReparsePointLibrary/Classes · high confidence

Initial project setup and documentation

This entry covers the initial commit establishing the repository structure, including configuration files (.gitattributes, .gitignore), build scripts (BuildProject.bat, nuget-restore.bat), and CI configuration (appveyor.yml). It also includes the initial README.md which documents the launcher's capabilities, such as automatic updates, theme music copying, and save syncing, along with contributor credits.

(repo-wide) · high confidence

Initial release of the ORCT2ModPacker utility

This change introduces the ORCT2ModPacker tool, a new component for managing OpenRCT2 modifications. The utility provides functionality to pack mod directories into distributable ZIP archives containing metadata and preview images, and to unpack these archives into the appropriate OpenRCT2 game directories (such as ObjData, Data, Scenarios, and Tracks). The implementation includes the core packing and unpacking logic, along with the necessary Visual Studio solution and project configuration files to build the application.

Launcher/ORCT2ModPacker · high confidence

Initial release of the OpenRCT2 Launcher with build management and crash reporting

The launcher now allows users to download, install, and launch OpenRCT2 builds from the OpenRCT.NET API, supporting both stable and development branches. It features automatic update checks with user confirmation, SHA1 integrity verification for downloaded builds, and runtime generation of the OpenRCT2 configuration file. Additionally, the application integrates Exceptionless for crash reporting and uses the MahApps.Metro UI framework.

Launcher/LauncherWFP · high confidence

Integrated OpenRCT.net account management and store access

The launcher now includes a dedicated login interface for OpenRCT.net accounts, allowing users to authenticate and access the OpenRCT.net store directly within the application. This update introduces a store browser that displays content from the OpenRCT.net website and enables the installation of mods and addons (including .RCT2MOD files) with a single click. Additionally, users can configure settings to sync their save games and upload their played time to the OpenRCT.net service, with options to enable or disable these features in the configuration dialog.

Launcher/Launcher/OpenRCTdotNet · high confidence

Launcher UI overhaul with new Extras, First Run, and Options forms

The Launcher's user interface has been significantly updated with new Windows Forms for managing game extras, initial setup, and configuration. The new Extras form provides a centralized hub for managing OpenRCT.net integration (including login, save syncing, and web store access), installing RCT1 music, and using a Steam Stub. A custom First Run dialog now allows users to choose between Stable and Development builds on their first launch. The Options window has been redesigned with multiple tabs (Graphics, Localisation, Sound, GUI, Cheats, Launcher, Debugging, Twitch, Miscellaneous) to expose granular settings, including Twitch chat integration, day/night cycle toggles, and update preferences.

Launcher/Launcher/Forms · high confidence

New utility library for launcher configuration and file operations

The launcher now includes a new set of utility classes in the HelperLibrary.Utils namespace to manage configuration and system interactions. Users benefit from a new INI-based settings system (IniConfiguration) that replaces the previous launcher INI handling, allowing for more structured storage of options. Additionally, new file management utilities (FileActions) enable the launcher to copy and clear directories, and a robust command-line argument parser (CommandLineArgs) supports more flexible startup parameters. The ReparsePoint utility also provides improved handling for creating and managing symbolic links and junctions, which is critical for the launcher's game installation and path resolution logic.

Launcher/ReparsePointLibrary/Utils · high confidence

Behavioural changes

Launcher initialization and settings infrastructure established

The launcher's core project configuration is now defined, establishing the application entry point (FrmLauncher), enabling visual styles, and configuring single-instance behavior. A comprehensive settings system has been added, introducing user preferences for update checks, automatic installation, and the ability to choose between Development or Stable builds. Additionally, the launcher now supports localization with resource files for English, German, and Dutch, and includes settings for OpenRCT.NET integration such as save-game syncing and playtime caching.

Launcher/Launcher/My Project · high confidence

OpenRCT2 Launcher introduces settings, update checks, and game integration

The launcher now features a configurable settings system (persisted in App.config) allowing users to toggle update checks, enable save-game syncing, and manage playtime tracking via the OpenRCT.net API. On first run, users are prompted to choose between Stable or Development builds, and the interface includes dedicated buttons for launching the game, checking for updates, and accessing options/extras. The launcher automatically detects the OpenRCT2 installation path, handles game updates asynchronously, and saves game configuration and playtime data upon exit.

Launcher/Launcher · high confidence

Solution structure updated to include HelperLibrary and Tests projects

The Launcher solution file has been updated to reference the HelperLibrary (ReparsePointLibrary) and Tests projects, alongside the existing Launcher and ORCT2ModPacker projects. This change reflects the addition of a library for managing symlinks and junction points, as well as the inclusion of unit tests for the symlink creation logic.

Launcher · medium confidence

Test coverage

Added a new test suite in the Launcher/Tests project that verifies the ReparsePoint utility class. The tests cover creating, moving, copying, and deleting directory symlinks, including specific validation for handling paths with spaces.

Launcher/Tests · high confidence

Dependencies

Launcher dependencies and build configuration updated

The launcher project files and NuGet package manifests have been updated to include several new dependencies: Newtonsoft.Json (v7.0.1), Exceptionless (v3.2.1424), ini-parser (v2.2.4), MahApps.Metro (v1.1.2), PropertyChanged.Fody (v1.50.3), and WindowsAPICodePack (v1.1.1). The build configuration targets .NET Framework 4.5 and 4.6, and ClickOnce manifest signing has been disabled.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 45 → 43 (-2.1)
  • Rubric changed (rubric-2026.08.18 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 56 → 52 (-4.2)
  • Architecture 89 → 89 (+0.2)
  • Maturity 43 → 38 (-5.0)
  • Readiness 34 → 34 (+0.0)
  • Security 80 → 77 (-2.9)

Resolved (10)

  • Bounded contexts not declared
  • Build did not complete in the analyzer
  • Inconsistent naming for ViewModel/Context classes. The codebase uses 'Context' as a suffix for view-models (e.g., MainWindowContext, WelcomeDataContext), but the base class or interface naming is not explicitly shown, however, the pattern is consistent within the namespace. However, looking at the list, we see 'MainWindowContext' and 'WelcomeDataContext'. This is actually consistent. Let's look for actual inconsistencies.
  • Inconsistent naming for interop/Windows API wrappers. Some members are static methods on the 'ReparsePoint' class (e.g., Create, Move, LookupPrivilegeValue), while others are nested types or separate classes. More importantly, the class 'ReparsePoint' is used for file system operations (symlinks), but the name 'ReparsePoint' is a specific Windows API structure/constant, not a general utility class name. This is a conceptual inconsistency where the class name reflects a specific API detail rather than the domain concept (e.g., 'SymlinkManager' or 'FileSystemLinker').
  • LLM evaluation failed
  • No exposed public API
  • Test reliability not measured — no test run produced results
  • XML-doc coverage: Launcher (Launcher/Launcher/Launcher.vbproj)
  • XML-doc coverage: ORCT2ModPacker (Launcher/ORCT2ModPacker/ORCT2ModPacker/ORCT2ModPacker.vbproj)
  • dormant codebase — no living knowledge left to concentrate

New (14)

  • Build failed
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no licence statement (README.md)
  • Documentation: no usage examples (README.md)
  • High secret: WD-SECRET-0004 (Launcher/Launcher/Launcher_TemporaryKey.pfx)
  • Leaked secret: private-key-store (Launcher/Launcher/Launcher_TemporaryKey.pfx)
  • MethodTooLong: GameConfigValues.New(…) (Launcher/Launcher/GameConfig.vb)
  • No dependency advisory monitoring
  • Secret: generic-api-key (Launcher/Launcher/LoginForm1.vb)
  • The property name 'LoadedCommand' is used in two different view model contexts (WelcomeDataContext and MainWindowContext). While the command name is consistent, the duplication across distinct context classes suggests a potential naming collision or lack of specific context in the name (e.g., 'WelcomeLoadedCommand' vs 'MainLoadedCommand'), though this is minor given the distinct namespaces.
  • WriteOnlyPrivateField (Launcher/LauncherWFP/Data/Context/MainWindowContext.cs)
  • WriteOnlyPrivateField (Launcher/ReparsePointLibrary/Utils/IniConfiguration.cs)
  • WriteOnlyPrivateField (Launcher/ReparsePointLibrary/Utils/IniConfiguration.cs)
  • redundant comment (Launcher/LauncherWFP/Data/Context/MainWindowContext.cs)

Architecture

  • Unchanged — 1 containers · 0 contexts · 0 edges

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

Krutonium/OpenRCT2Launcher was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 20 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 67527903a8c3b98320d03cfc3c9a6b4679975684 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-28e75b8e3254.