Skip to content

feat(online): Mount archives by priority and read the data pack layers from settings - #648

Open
tintinhamans wants to merge 14 commits into
GeneralsOnlineDevelopmentTeam:mainfrom
tintinhamans:arctic/go/feat/data-layer
Open

tintinhamans wants to merge 14 commits into
GeneralsOnlineDevelopmentTeam:mainfrom
tintinhamans:arctic/go/feat/data-layer

Conversation

@tintinhamans

@tintinhamans tintinhamans commented Oct 24, 2026 •

Copy link
Copy Markdown

Merge after #653.

Archive priority was an accident of file names, and the core pack and community patch were hard coded. Every archive now has an explicit priority, and data_packs in settings.json has three layers: user, generals_online and community_patch. From the top the lookup is loose files in the game folder, -mod / -modDir, non-retail BIGs in the game folders, user, generals_online, community_patch, then retail.

"data_packs": {
  "user": { "enabled": true, "include_paths": [], "exclude_paths": [] },
  "generals_online": { "enabled": true, "include_paths": ["user:GeneralsOnlineGameData/GeneralsOnline_Core.big"] },
  "community_patch": { "enabled": true, "include_paths": ["user:GeneralsOnlineGameData/500_900_CommunityPatch_CoreINI.big"] }
}

include_paths entries are BIGs, folders of BIGs or *.big patterns (game:, user: or absolute), mounted in list order with the first one winning. exclude_paths exists on user only. It hides loose files and BIGs of the game folders, never the retail archives. A missing or invalid field keeps its default, and invalid entries are dropped and logged.

use_community_data_patch is read once as community_patch.enabled and dropped on save. -disableCommunityDataPatch turns the community_patch layer off for that launch only. Settings now load before the archives mount. The Generals data is mounted once, where Steam installs used to mount it twice, and ranks below the Zero Hour archives. scripts/pack_go_data.py builds the core BIG.

CRC handling is untouched. Deployment: the updater ships GeneralsOnline_Core.big to <user data>\GeneralsOnlineGameData\, and the Launcher's community patch checkbox should write data_packs.community_patch.enabled (the old key is still migrated).

@tintinhamans
tintinhamans force-pushed the arctic/go/feat/data-layer branch from b454e9c to aaea4c1 Compare October 24, 2026 17:59
@tintinhamans tintinhamans changed the title feat(online): Load archives by tier instead of by file name feat(online): Mount archives by priority and read the archives list from settings Oct 24, 2026
@tintinhamans
tintinhamans force-pushed the arctic/go/feat/data-layer branch from aaea4c1 to e16219c Compare October 24, 2026 22:00
@tintinhamans
tintinhamans force-pushed the arctic/go/feat/data-layer branch 2 times, most recently from 6ef5fa6 to 1f2a608 Compare October 25, 2026 11:15
@tintinhamans tintinhamans changed the title feat(online): Mount archives by priority and read the archives list from settings feat(online): Mount archives by priority and read the data pack layers from settings Oct 25, 2026
tintinhamans and others added 13 commits October 27, 2026 14:32
@tintinhamans
tintinhamans force-pushed the arctic/go/feat/data-layer branch from 1f2a608 to 693c371 Compare October 28, 2026 01:47
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.

3 participants