Hi, I just had an idea I'd like to explore, but my immediate thought was "this has a decent chance of requiring actual source-code changes."
So, the idea is this: I'm an avid watcher of speedrunning, and one thing I really enjoy is game randomizers. Often they'll swap, at random times, between emulated games.
So, obviously, you could probably randomize loading different episodes of Doom, Doom 2, and the other Dooms.
But like, how "deep" is mod loading? Like, (presumably with some code changes) could gzdoom load a bunch of mods, but then only play with a subset of them actually "in use?"
Basically, do mods overwrite parts of the game at load-time (during boot, so presumably you'd have to rewrite a lot of code), or at some later place like level loading (where a mod in memory could just, essentially, be ignored during level load to not apply its effects)?
I know I probably sound rambly and insane, but like... I hope this makes enough sense for someone to tell me if this is a "rewrite all of gZdoom" scale project, or a "rewrite level loading and a some other bits here and there" scale project, or whatever.
I'm not expecting this to be easy, by any stretch, but I'm trying to get an idea of how sane/insane a project this might be.
I just really like the idea of having a randomizer that takes swaps you between different MegaWads, each with its own weapon set / enemies. I know you could simulate some of this with some of the existing mod packs. Some level packs + Final Doomer. Or even just Samsara with its enemies pack. And then a smaller mod to autosave and autoload to swap the player between "games."
Is this possible? (Ideally someone quite familiar with the source)
Re: Is this possible? (Ideally someone quite familiar with the source)
This would be a major undertaking. It's certainly possible, but not without a lot of work, which it is very unlikely anyone will invest time in.
Doom's biggest weakness for on-the-fly file changes is that everything is entirely based on a virtual filesystem that is only created on startup, and ZDoom/GZDoom inherited that and cranked it up to 11. In order to load and unload mods on-the-fly, the entire file system has to be taken down and recreated every single time. The "restart" command can do this, but it also takes down other subsystems as well (so that they can be started in more proper states in lieu of the new file system when they come back up again), and due to lack of use and maintenance over the years it has progressively become less reliable; it's so niche of a feature that no one has bothered to even report on its bugs much less fix them. And I am also not sure it is such a great feature to leverage for a project like this.
Doom's biggest weakness for on-the-fly file changes is that everything is entirely based on a virtual filesystem that is only created on startup, and ZDoom/GZDoom inherited that and cranked it up to 11. In order to load and unload mods on-the-fly, the entire file system has to be taken down and recreated every single time. The "restart" command can do this, but it also takes down other subsystems as well (so that they can be started in more proper states in lieu of the new file system when they come back up again), and due to lack of use and maintenance over the years it has progressively become less reliable; it's so niche of a feature that no one has bothered to even report on its bugs much less fix them. And I am also not sure it is such a great feature to leverage for a project like this.
-
- Posts: 279
- Joined: Mon Jun 06, 2016 11:26 pm
- Preferred Pronouns: No Preference
- Operating System Version (Optional): Widnows 11
- Graphics Processor: nVidia with Vulkan support
Re: Is this possible? (Ideally someone quite familiar with the source)
Thanks so much! That answers exactly the question I was trying to ask. Yeah, I feared the answer was going to be that it was all loaded at startup in some manner like that. I definitely wouldn't want or ask anyone to work on this, I was just trying to figure out if I wanted to even bother investigating source changes, or just try to be creative and "fake it" in some way at the mod level instead, which seems to be the better option now.