Review PR#6: Verify mod loading alignment with r2modmanPlus architecture#7
Closed
Review PR#6: Verify mod loading alignment with r2modmanPlus architecture#7
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Reviewed PR#6's modded launch implementation against r2modmanPlus (ebkr/r2modmanPlus) architecture and mod loading behavior using DeepWiki documentation. Verified alignment with established patterns for BepInEx injection, profile management, and doorstop configuration.
Core Architecture Alignment ✅
PR#6 correctly implements r2modmanPlus's fundamental approach:
{dataFolder}/{gameId}/profiles/{profileId}/BepInEx/, only doorstop files injected to game directorydoorstop_config.inipointing to profile'sBepInEx.Preloader.dllwinhttp.dll(or variants),doorstop_config.ini, and metadata files_state/bootstrap/{owner}-{name}/{version}/enabled=falsewithout removing filesLaunch Flow Matches r2modmanPlus ✅
8-stage sequence aligns with r2modmanPlus:
game-dashboard.tsx)base-dependencies.ts)bepinex-bootstrap.ts)copyBepInExToProfile())injectLoaderFiles())updateDoorstopConfig())spawn())trackProcess())Key Behavioral Differences
Mod Linking Approach
r2modmanPlus: Explicitly copies mod files from profile to game directory via
ModLinker.linkProfileFiles()PR#6: Mods remain in profile directory, loaded by BepInEx via doorstop's absolute path reference
Analysis: PR#6's approach is cleaner—avoids file copying overhead while achieving the same result. BepInEx loads plugins directly from
{profileRoot}/BepInEx/plugins/when initialized from the profile path.Platform Support
Current: Windows-only (returns error for Linux/macOS)
r2modmanPlus: Full Windows/Linux/macOS support with wrapper scripts and Proton handling
Recommendation: Document as known limitation. Platform expansion can follow r2modmanPlus's wrapper script pattern when needed.
Launch Instructions
r2modmanPlus: Complex
GameInstructionssystem with dynamic token substitution (@BEPINEX_PRELOADER_PATH, etc.)PR#6: Simplified direct configuration—injects files and updates doorstop config without abstraction layer
Analysis: Simpler and more maintainable while achieving identical functionality.
Verification Points
[UnityDoorstop]and[General]formatsRecommendation
APPROVE - PR#6 successfully implements r2modmanPlus's proven architecture while modernizing the codebase. Differences are either improvements (no file copying) or acceptable trade-offs (Windows-first, simpler instructions). The implementation maintains the critical profile-based isolation and doorstop injection patterns that make r2modmanPlus reliable.
References
electron/launch/launcher.ts(lines 108-374),electron/launch/bepinex-bootstrap.ts(lines 241-393)docs/MODDED_LAUNCH_FLOW.md,docs/IMPLEMENTATION_STATUS.md