by JPL » Fri Jun 01, 2018 9:28 pm
Here's some thoughts on how this could work from the data side.
The top-level feature would be a new MAPINFO keyword called something like "overridemap", which works exactly like "map" keyword except that its block's contents override properties on any already-defined map by the same name instead of outright replacing the entirety of any previously defined one.
No idea what the code implications of this are, what the code for loading map defintions looks like, or more importantly when it runs in relation to other stuff, but if it's straightforward to just load in these overridemap blocks as each new wad is loaded, that's how I'd expect it to work as a user and modder.
As far as use cases, here are a few I can think of:
- make an existing map's exit switch travel to a special map not included in the original wad
- make a vanilla IWAD / PWAD level revisitable by declaring it part of a hub
- add one of the many useful map definition properties, eg NoIntermission, to an already-defined map
(obviously, mods doing these things would have additional logic that makes it a meaningful change, eg scripting that tracks the player across levels, RPG mechanics, etc)
As for what kind of mods would take advantage of this: there are a huge number of existing WADs that have identical structure (32 maps with secret exits at 15 and 31, etc) which could be modified without having to override meaningful wad-specific data like map names, specials, skies, etc.
As far as I can tell, there are still some things that can be defined in a map defintion that can't be defined or worked around in Zscript or ACS. As Rachael says, the current method of replacing map defintions doesn't work when you just want to make a tweak.
Here's some thoughts on how this could work from the data side.
The top-level feature would be a new MAPINFO keyword called something like "overridemap", which works exactly like "map" keyword except that its block's contents override properties on any [i]already-defined[/i] map by the same name instead of outright replacing the entirety of any previously defined one.
No idea what the code implications of this are, what the code for loading map defintions looks like, or more importantly when it runs in relation to other stuff, but if it's straightforward to just load in these overridemap blocks as each new wad is loaded, that's how I'd expect it to work as a user and modder.
As far as use cases, here are a few I can think of:
- make an existing map's exit switch travel to a special map not included in the original wad
- make a vanilla IWAD / PWAD level revisitable by declaring it part of a hub
- add one of the many useful map definition properties, eg NoIntermission, to an already-defined map
(obviously, mods doing these things would have additional logic that makes it a meaningful change, eg scripting that tracks the player across levels, RPG mechanics, etc)
As for what kind of mods would take advantage of this: there are a huge number of existing WADs that have identical structure (32 maps with secret exits at 15 and 31, etc) which could be modified without having to override meaningful wad-specific data like map names, specials, skies, etc.
As far as I can tell, there are still some things that can be defined in a map defintion that can't be defined or worked around in Zscript or ACS. As Rachael says, the current method of replacing map defintions doesn't work when you just want to make a tweak.