ec- / Quake3e

Improved Quake III Arena engine
GNU General Public License v2.0
1.15k stars 148 forks source link

fs_basegame behavior with mods errors with Couldn't load default.cfg #260

Open WHS-Phoenix opened 6 months ago

WHS-Phoenix commented 6 months ago

Tried to run Generations Arena in Team Arena mode with the following launch options:

"C:\Games\Quake 3 132\quake3e.x64.exe" +set fs_basegame missionpack +set fs_game generations

Console reports:

----- FS_Startup ----- ...found 16 cached paks ...loaded in 8 milliseconds

9364 files in 16 pk3 files Couldn't load default.cfg

I do not have this problem with Quake3 1.32b or IOquake3. The correct behavior is for Q3A to load assets from baseq3, missionpack, then generations folders.

ensiform commented 6 months ago

fs_basegame missionpack implies you are not having baseq3 anymore. And missionpack does not ship a default.cfg

EDIT: Looks like this is sort of a regression in behavior but I think it was done on purpose, however @ec- can maybe comment better why it was done. IIRC fs_basegame behavior was created originally in the vanilla game to allow you to base mods off of others while still also loading fs_game baseq3 too. But this no longer is the case here.

ensiform commented 6 months ago

Would you prefer restoring behavior or maybe an extra cvar like fs_extragame or something?

ec- commented 6 months ago

I'd rather add support for multiple (space-separated) values in fs_basegame or something like that

WHS-Phoenix commented 6 months ago

@ensiform If you're not using Quake3e without baseq3 (a standalone build) wouldn't you be changing the base path on compile anyway? In that context fs_basegame would seem to serve no purpose.

@ec- So, something like "+set fs_basegame baseq3 missionpack +set fs_game modname", with the argument sequence for fs_basegame determining load priority?

ensiform commented 6 months ago

It would be useful still for example with baseoa or something standalone. But IMHO how many mods do you really want to.

The basepath may still differ but you can still have a different default mod path such as with the OpenArena example I guess, since basepath is the root not the mod subdir.

WHS-Phoenix commented 6 months ago

For my own project I did some tinkering and worked around it to restore the search order since Generations is dependent on baseq3 existing. If an official change comes I'll update my codebase to include but for now it works for me.

ec- commented 4 months ago

Applied in https://github.com/ec-/Quake3e/commit/93cb4701f3ca8e38849cd3fcb270be77b4aec331, please test by using +set fs_basegame "baseq3/missionpack"

WHS-Phoenix commented 4 months ago

It functions, however any boolean conditions that I have checked against fs_basegame within the game source fail since they are expecting "missionpack", not "baseq3/missionpack". Examples would be spawning in Team-Arena specific weapons as opposed to replacing them with alternatives (eg, Shotgun for TA Nailgun, Lightning Gun for TA Chaingun, and Grenade Launcher for TA Prox Launcher, and ammo, et al). I can fix that in my mod by changing the string comparison to account for this, though I'm not sure if any other projects out there explicitly check fs_basegame for any of their internal logic.