Improve mod compatibility - load only data from ecwolf.pk3 related to current IWAD

Issue #288 wontfix
IoriBranford created an issue

Currently ECWolf loads all games' data, which adds some risk of data conflicts when playing mods.

e.g. An actor in Totengraeber, a WL6 mod, conflicts with a Blake Stone actor. This will occur with all builds since Blake Stone support was added.

totengraeber.pk3:actors/totstatics.txt:78:6:Error: Actor 'Gurney' already defined.

Loading only common and WL6-related data would avoid that issue. It could be facilitated by grouping the data by IWAD.

Sample ecwolf.pk3 structure:

  • common files
  • wolf folder

    • wolf files
  • blake folder

    • blake files
  • etc.

Comments (2)

  1. Braden Obrzut

    This is a “yes” and “no” thing. ECWolf is a unified engine like ZDoom so the idea is to have every feature from every game exposed no matter which game is being modded. This is only possible if all the definitions are available. ZDoom sort of got around the issue by DECORATE being introduced after all the games were supported, so ECWolf has this particular unfortunate issue that adding stuff from other games has potential to break mods. (Of course it’s easy to fix affected mods since you just need to do a find and replace on the actor names.)

    The plan to solve it, however, is support for namespaces. I believe LZWolf may have an implementation of this already. I’ll have to make a decision when it’s time to cut the 1.4 release if I want to take in the namespace support, or I might temporarily filter the blake stone actors out (since Blake Stone is preview status anyway). Filtering is not the solution I intend to use in the long run though.

  2. Braden Obrzut

    Decided to not filter the Blake Stone and Mac Wolf actors for the 1.4 release since the number of effected mods are small. Given the number of mod authors targeting the dev version there was perhaps higher risk pulling the actors vs the known quantity of broken 1.3 mods.

  3. Log in to comment