Skip to content

feat(filesystem): Implement complete mod loading through -mod (Withdrawn) - #3091

Closed
Jaredl-Dev wants to merge 1 commit into
TheSuperHackers:mainfrom
Jaredl-Dev:feat/complete-mod-loading
Closed

feat(filesystem): Implement complete mod loading through -mod (Withdrawn)#3091
Jaredl-Dev wants to merge 1 commit into
TheSuperHackers:mainfrom
Jaredl-Dev:feat/complete-mod-loading

Conversation

@Jaredl-Dev

@Jaredl-Dev Jaredl-Dev commented Aug 10, 2026

Copy link
Copy Markdown

No description provided.

Jaredl-Dev added a commit to Jaredl-Dev/GeneralsGameCode that referenced this pull request Aug 10, 2026
Jaredl-Dev added a commit to Jaredl-Dev/GeneralsGameCode that referenced this pull request Aug 10, 2026
Jaredl-Dev added a commit to Jaredl-Dev/GeneralsGameCode that referenced this pull request Aug 10, 2026
Jaredl-Dev added a commit to Jaredl-Dev/GeneralsGameCode that referenced this pull request Aug 10, 2026
@Jaredl-Dev
Jaredl-Dev force-pushed the feat/complete-mod-loading branch from deae37a to 024b98c Compare August 10, 2026 06:22
Jaredl-Dev added a commit to Jaredl-Dev/GeneralsGameCode that referenced this pull request Aug 10, 2026
Jaredl-Dev added a commit to Jaredl-Dev/GeneralsGameCode that referenced this pull request Aug 10, 2026
Jaredl-Dev added a commit to Jaredl-Dev/GeneralsGameCode that referenced this pull request Aug 10, 2026
@Jaredl-Dev
Jaredl-Dev force-pushed the feat/complete-mod-loading branch from 024b98c to a3b6a31 Compare August 10, 2026 18:08
Jaredl-Dev added a commit to Jaredl-Dev/GeneralsGameCode that referenced this pull request Aug 10, 2026
Jaredl-Dev added a commit to Jaredl-Dev/GeneralsGameCode that referenced this pull request Aug 10, 2026
Jaredl-Dev added a commit to Jaredl-Dev/GeneralsGameCode that referenced this pull request Aug 10, 2026
Jaredl-Dev added a commit to Jaredl-Dev/GeneralsGameCode that referenced this pull request Aug 10, 2026
Jaredl-Dev added a commit to Jaredl-Dev/GeneralsGameCode that referenced this pull request Aug 10, 2026
Jaredl-Dev added a commit to Jaredl-Dev/GeneralsGameCode that referenced this pull request Aug 10, 2026
@Jaredl-Dev
Jaredl-Dev force-pushed the feat/complete-mod-loading branch from a3b6a31 to 6705fd2 Compare August 10, 2026 18:32
Jaredl-Dev added a commit to Jaredl-Dev/GeneralsGameCode that referenced this pull request Aug 10, 2026
Jaredl-Dev added a commit to Jaredl-Dev/GenLauncher_GO that referenced this pull request Aug 10, 2026
TheSuperHackers/GeneralsGameCode#3091 gives the Zero Hour client an ordered
mod overlay file system, so the launcher no longer has to make mods visible
by mutating the user's game folder.

Launch is now: verify integrity, resolve and validate mod layers, append one
quoted -mod operand per selected mod, patch, and add-on in selection order,
then start the process. Nothing is written to the game directory, so there is
nothing to journal, back up, clean up, or recover.

Removed:
- The deployment subsystem: FileSystemDeploymentService, DeploymentStateStore,
  DeploymentLaunchPreparationService, the file planner, path resolver, result
  types, and the hard-link creator, plus their ~1,500 lines of tests.
- The .gib storage rename. Installed archives keep the .big extension the
  client globs for; BigFileVariantPath and its call sites are gone.
- Base-game script hiding. Mod layers now override game-directory files, which
  is what that hack existed to work around.
- Startup deployment recovery, shutdown cleanup, game-switch cleanup/recovery,
  and the same-drive recommendation, which only mattered for hard links.
- The administrator requirement. Game-folder writes were its only driver, and
  an elevated launcher handed its integrity level to every game it started.

Added:
- IModLayerResolutionService and its FileSystem implementation, which validate
  each layer against the constraints the client enforces: the directory exists,
  every *.big below it really starts with BIGF, the path is representable in
  the active ANSI code page, no file exceeds MAX_PATH, and the path carries no
  double quote. A bad operand otherwise ends in a modal error and _exit(1).
- BigArchiveFile, which classifies archives by header the way the client does.
  Manual import now renames BIGF files to .big and quarantines files named as
  archives that the client cannot open.
- A CLAUDE.md that imports AGENTS.md and points at the per-project ones, so
  Claude Code loads the same rules every other agent already reads.

Symbolic-link rejection coverage is unchanged: it guards launcher-owned
storage, not the deleted hard-link path, and matters more now that the client
reads that storage in place. Only the two hard-link-specific tests were
dropped, and the new mod layer resolver gained the same linked-root test its
sibling services already have.

Accepted regressions, since the PR is Zero Hour only: Generals keeps the legacy
single-operand -mod, GeneralsOnline still launches without arguments, and World
Builder starts without mod content and warns before doing so.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Jaredl-Dev added a commit to Jaredl-Dev/GeneralsGameCode that referenced this pull request Aug 11, 2026
Jaredl-Dev added a commit to Jaredl-Dev/GeneralsGameCode that referenced this pull request Aug 11, 2026
Jaredl-Dev added a commit to Jaredl-Dev/GeneralsGameCode that referenced this pull request Aug 11, 2026
@Jaredl-Dev
Jaredl-Dev force-pushed the feat/complete-mod-loading branch from 6705fd2 to e01726f Compare August 11, 2026 00:16
Jaredl-Dev added a commit to Jaredl-Dev/GeneralsGameCode that referenced this pull request Aug 13, 2026
Jaredl-Dev added a commit to Jaredl-Dev/GeneralsGameCode that referenced this pull request Aug 13, 2026
Jaredl-Dev added a commit to Jaredl-Dev/GeneralsGameCode that referenced this pull request Aug 13, 2026
Jaredl-Dev added a commit to Jaredl-Dev/GeneralsGameCode that referenced this pull request Aug 13, 2026
Jaredl-Dev added a commit to Jaredl-Dev/GeneralsGameCode that referenced this pull request Aug 13, 2026
@Jaredl-Dev
Jaredl-Dev force-pushed the feat/complete-mod-loading branch from c98a5d1 to cd6d9ac Compare August 13, 2026 20:07
Jaredl-Dev added a commit to Jaredl-Dev/GeneralsGameCode that referenced this pull request Aug 13, 2026
Jaredl-Dev added a commit to Jaredl-Dev/GeneralsGameCode that referenced this pull request Aug 13, 2026
Jaredl-Dev added a commit to Jaredl-Dev/GeneralsGameCode that referenced this pull request Aug 13, 2026
@Jaredl-Dev
Jaredl-Dev force-pushed the feat/complete-mod-loading branch from cd6557a to 78a5f58 Compare August 13, 2026 22:03
Jaredl-Dev added a commit to Jaredl-Dev/GeneralsGameCode that referenced this pull request Aug 13, 2026
Jaredl-Dev added a commit to Jaredl-Dev/GeneralsGameCode that referenced this pull request Aug 13, 2026
Comment thread Core/GameEngineDevice/Source/VideoDevice/Bink/BinkVideoPlayer.cpp Outdated
Jaredl-Dev added a commit to Jaredl-Dev/GeneralsGameCode that referenced this pull request Aug 14, 2026
Jaredl-Dev added a commit to Jaredl-Dev/GeneralsGameCode that referenced this pull request Aug 14, 2026
@Jaredl-Dev
Jaredl-Dev force-pushed the feat/complete-mod-loading branch from 78a5f58 to 44315a4 Compare August 14, 2026 17:47
@Jaredl-Dev

Jaredl-Dev commented Aug 17, 2026

Copy link
Copy Markdown
Author

I’ll be closing this PR toward the end of this month. I need to shift my focus to personal and career-related priorities, so I won’t be able to continue maintaining it beyond this month.

Comment thread Core/GameEngineDevice/Source/Win32Device/GameClient/Win32Mouse.cpp Outdated
Comment thread GeneralsMD/Code/GameEngine/Source/Common/GameEngine.cpp Outdated
@Jaredl-Dev
Jaredl-Dev force-pushed the feat/complete-mod-loading branch from 44315a4 to 3a6fdec Compare August 17, 2026 23:04
Jaredl-Dev added a commit to Jaredl-Dev/GeneralsGameCode that referenced this pull request Aug 17, 2026
Jaredl-Dev added a commit to Jaredl-Dev/GeneralsGameCode that referenced this pull request Aug 17, 2026
Jaredl-Dev added a commit to Jaredl-Dev/GeneralsGameCode that referenced this pull request Aug 17, 2026
Jaredl-Dev added a commit to Jaredl-Dev/GeneralsGameCode that referenced this pull request Aug 17, 2026
Jaredl-Dev added a commit to Jaredl-Dev/GeneralsGameCode that referenced this pull request Aug 17, 2026
@bobtista

Copy link
Copy Markdown

I'd add "BIG-backed mod movies work with ffmpeg but not bink" to known limitations in the description, and maybe update it to say "BIG-backed animated cursors fall back to the base cursor" if that makes sense (maybe omit it altogether as that was the original behavior anyway). Also I'd do a bunch more validation showing all the features work.

@Jaredl-Dev
Jaredl-Dev force-pushed the feat/complete-mod-loading branch from 3a6fdec to d1ab45c Compare August 18, 2026 01:44
@greptile-apps

greptile-apps Bot commented Aug 18, 2026

Copy link
Copy Markdown

No reviewable files after applying ignore patterns.

@Jaredl-Dev Jaredl-Dev changed the title feat(filesystem): Implement complete mod loading through -mod feat(filesystem): Implement complete mod loading through -mod (Withdrawn) Aug 18, 2026
@Jaredl-Dev Jaredl-Dev closed this Aug 18, 2026
@Jaredl-Dev
Jaredl-Dev deleted the feat/complete-mod-loading branch August 18, 2026 01:47
@Jaredl-Dev

Jaredl-Dev commented Aug 18, 2026

Copy link
Copy Markdown
Author

This PR was closed because, as I worked on and tested it, I discovered several other areas of the engine that need to be reworked or updated before the implemented functionality can be viable. One critical issue is the engine's inability to support long filesystem paths exceeding 260 characters, which can cause mod files to be silently skipped.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants