JNechaevsky / international-doom

Small, functional and simple source ports, created with help, efforts and bits of code from people around the world.
https://jnechaevsky.github.io/inter-doom/
GNU General Public License v2.0
30 stars 2 forks source link

[Bug] Inter-Heretic: "Too many mace spots" crash in "The Realm of Parthoris 2015" #92

Closed NightFright2k19 closed 9 months ago

NightFright2k19 commented 9 months ago

When leaving E1M7 of "The Realm of Parthoris" with Inter-Heretic (latest dev build), the game crashes to desktop with the following message: "Too many mace spots."

This PWAD is supposed to be compatible with limit-removing vanilla ports and I didn't have any issue with it until that moment. For testing purposes, I have attached a zipfile containing the following:

rop_2015-test.zip

JNechaevsky commented 9 months ago

Ah, yes, mace spawning spots is also a limit. I'll have a look, AFAIR it was fixed in previous ID version.

NightFright2k19 commented 9 months ago

Playtesting finally paid off, it seems. :) If it's about the Firemace (thing #2002), I'm counting 12 on E1M8 when checking its THINGS lump in Slade. That's already too much? Geez...

JNechaevsky commented 9 months ago

Too much indeed, as vanilla limit is 8! All done, please have fun!

AFAIR, there are also a limits for ambient sounds (Heretic & Hexen) and ANIMDEFS (Hexen only...?). Have too look next.

NightFright2k19 commented 9 months ago

Thanks! I will finish my Inter-Heretic playlist first before moving on to Hexen.

So far I can confirm the following are working:

Still pending:

Meerschweinmann commented 9 months ago

Respect, Nightfright is a busy hardcore playtester :)

I can confirm "Heretic Treasure Chest" and "Dungeons and Monsters" too.

Blasphemous Experiments is in progress.

Did not know about H!Zone. Will have a look.

kitchen-ace commented 9 months ago

This definitely isn't demo-safe; while it's impossible for other demo-compatible ports to record demos on maps with more than 8 mace spots, it looks like inter-heretic can now record a demo on these maps that other ports can't play? Haven't tested myself, so sorry if that's not the case.

kitchen-ace commented 9 months ago

As far as Heretic mapsets:

I too have been doing a lot of "playtesting" :)

JNechaevsky commented 9 months ago

Whoa, I even don't know that such mods existing, what a list! But be fair, I'm rarely playing any mods, needles to say rarely playing at all, except for testing reasons. So in general, my favorite Heretic's map is this:

![image](https://github.com/JNechaevsky/international-doom/assets/21193394/113b173d-0bb2-4448-b516-69f1fc3f5c7f)

Just a stress-testing room with tons of visplanes and etc.

This definitely isn't demo-safe; while it's impossible for other demo-compatible ports to record demos on maps with more than 8 mace spots

This leads to terrible dilemma. 😕 Neither vanilla, nor Crispy or DSDA can't handle more than 8 mace spots, which means that map will bomb out with "Too many mace spots" message. Need to think what to do, leave such limit and error message doesn't seems to be good idea, and guarding it with "single player only" is even worse: imagine if The Realm of Parthoris was practiced a lot w/o demo record, and when tried to record a demo, player will come to E1M8 and surprisingly got error message. Frustration as it gets.

My only "one logics" idea at the moment is: "do not spawn maces on spots >= 8", i.e. something like this:

void P_AddMaceSpot(const mapthing_t * mthing)
{
    if (MaceSpotCount >= MAX_MACE_SPOTS) // MAX_MACE_SPOTS is still 8
    {
        // I_Error("Too many mace spots."); // do not bomb out...
        return; // ... just don't proceed with adding new spots.
    }
    MaceSpots[MaceSpotCount].x = mthing->x;
    MaceSpots[MaceSpotCount].y = mthing->y;
    MaceSpotCount++;
}

This will not fix such map (and demo) working with other ports, but at least will keep original game mechanics with 8 spots max. It's just an idea, I need to try it out.

JNechaevsky commented 9 months ago

Thinking more, this is better to be a cross-port standard, discussed with Fabian and Kraflab. I'll move this discussion to Crispy tracker, and if such standard will be defined, then I'll gladly follow it. If not, well, probably it will be okay to use full mace spot limit removing approach, as it will keep mod's author design intention.

Meerschweinmann commented 9 months ago
  • HYMN mostly works but there are a few ZDoom-isms. E1M9 has one that makes a lift unusable (too close to another linedef special), I forget what else. Also some non-power-of-two textures which makes things look a bit funny.

What a pity that some mods could be even vanilla/limit removing compatible, but it fails on too close linedefs or a wrong texture lump, because no one thinks about vanilla as GZDOOM can do every format. Non power of two textures can be extended in texture lump to the next power of two number and the normally unused space could be filled with the same patch that the texture consists of. That was what i made for my BIGDOOR texture pack, to make 320 or 384 pixel wide doors Crispy/Inter/Woof compatible.

And hey, thank you for mentioning those WADs. Some i did not know, so i downloaded them :)

Meerschweinmann commented 9 months ago

Thinking more, this is better to be a cross-port standard, discussed with Fabian and Kraflab. I'll move this discussion to Crispy tracker, and if such standard will be defined, then I'll gladly follow it. If not, well, probably it will be okay to use full mace spot limit removing approach, as it will keep mod's author design intention.

This is probably the wisest decision to find a common way before each port solves it differently.

kitchen-ace commented 9 months ago

What a pity that some mods could be even vanilla compatible, but it fails on too close linedefs or a wrong texture lump, because no one thinks about vanilla as GZDOOM can do every format.

One thing to keep in mind is that, unlike Doom, Heretic has had very little in the way of ports somewhere between ZDoom and vanilla until recently, and also is generally less popular than Doom. In 2013 your options for Heretic that went beyond vanilla limits were basically ZDoom and Doomsday; there was also heretic-plus but that was pretty niche outside of some speedrunning use, and even it can't handle all the maps in HYMN because it only raises the rendering limits and at least one map (E1M7) goes beyond those raised limits.

Anyhow HYMN might be worth fixing up for full support in inter-heretic/dsda/crispy, as its a good mapset overall and not too much work to fix up fully, plus the licence permits it (though best to ask individual mappers anyhow to be safe). I made a partially fixed version for myself but it was mostly texture fixes, more game-breaking problems I just noclipped through.

Meerschweinmann commented 9 months ago

@kitchen-ace , yeah that is true. Unfortunately both Raven games don't get the love that they deserve. Back in the days as these games were released i had not the feeling that they are so niche than today. We had played the hell out of them in coop with our good old Novell NI1000 and NI2000s.

And yes, the available source ports have something to do with the way everything evolved. Source port wise i used DOOM Legacy with 3DFX Voodoo Card parallel to the vanilla exes till someday i found Doomsday. And many years Doomsday was the port for me that could play Heretic and Hexen too.

As i went older i feeled those fancy features like texture filtering and 3D monsters looked wrong and wanted the feeling like i had it in memories as i was a teen in the 90s, but faithfully polished. And there shined Russian DOOM and Crispy. And now we are here :)

What i wanted to say with "some mods could be vanilla compatible" is not a Heretic only thing. Sometimes the BOOM or GZDOOM exclusivity is not really necessary. Sometimes the mappers don't think about to make their maps widely compatible, it does them not matter or sometimes i read in the textfile that they only knew how to map for this or that. That would be a nice project to make maps vanilla-compatible. There are options to do convenyor belts like functions in vanilla i had seen last days. An Eviternity one or two will never be vanilla compatible but if the reasons are only some too close linedefs or textures that are not power of two, that should be managable.

kitchen-ace commented 9 months ago

What i wanted to say with "some mods could be vanilla compatible" is not a Heretic only thing. Sometimes the BOOM or GZDOOM exclusivity is not really necessary.

Oh I agree with this completely. I've seen many maps for ZDoom that could easily be made compatible for vanilla. Except "easily" is a bit of a loaded word; they would be easy for me to convert, but for a new mapper that is still struggling to understand Doom modding at all, not having to worry about all of vanilla's quirks can be a big relief.

But yes, I do still appreciate when mappers take the time to make their projects as compatible as possible, and can be frustrated when there's a reliance on GZDoom that could be worked around without compromising the map's visuals or gameplay at all.