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

Hexen: torch goes too dark #73

Closed kitchen-ace closed 9 months ago

kitchen-ace commented 9 months ago

When you use the torch, it's supposed to make the level bright, and oscillate the light level a bit. In inter-hexen the light oscillates way too far, with the lowest value being pretty dark.

Also affects crispy-hexen, but only truecolor builds.

JNechaevsky commented 9 months ago

So that's how most useful artifact decided to remind about itself. 😦 Thank you for pointing out, I have to investigate what is happening.

JNechaevsky commented 9 months ago

Oh my, that darn thing again:

+++ international-doom/src/hexen/r_main.c   Thu Feb  8 11:33:15 2024
@@ -23,7 +23,6 @@
 #include "r_local.h"

 int viewangleoffset;
@@ -974,7 +973,7 @@
     if (player->fixedcolormap)
     {
         fixedcolormap = colormaps + player->fixedcolormap
-            * 256 * sizeof(lighttable_t);
+            * 256 /** sizeof(lighttable_t)*/;
         walllights = scalelightfixed;
         for (i = 0; i < MAXLIGHTSCALE; i++)
         {

I have figured out in Heretic, sizeof() multiplier literally breaks invulnerability colormap there, but missed it in Hexen. Thanks again, I'll take care about Crispy Hexen as well.

JNechaevsky commented 9 months ago

@kitchen-ace, @Meerschweinmann, @NightFright2k19,

While we here, there is one templating thing to do, but I would like to ask for your opinions. Here's how torch working in vanilla:

https://github.com/JNechaevsky/international-doom/assets/21193394/b895ce69-aba5-45bd-b51c-411c4fb79544

See? It's like a... Sequence of lighting changes, then sequence of stable lighting. If "stable lighting" sequence will be removed, then animation will looks like this:

https://github.com/JNechaevsky/international-doom/assets/21193394/3d766c6d-d95d-48fd-8a0e-eb0c85a13a90

Somehow it feels more realistic or smooth, and such correction must be demo-safe. It you wish to try out, just replace this like:

        else if (!(leveltime & 16) && player == &players[consoleplayer])

With:

        else if (player == &players[consoleplayer])

In Heretic and Hexen respectively, and then recompile executables.

And just in case git pull will be unhappy after changes, just reset sources to git-friendly using git reset --hard command.

Meerschweinmann commented 9 months ago

Depending on how many and which sort of wood i throw in my oven, my living rooms lightening is like Hexen Vanilla lighting or your new unstable lighting. So both types are realistic in my opinion 😀

Both types look good.

When i am home i will have a "live" look.

kitchen-ace commented 9 months ago

I actually find that change oddly uncomfortable. It looks nice as an effect, but playing with it or even watching that video is kind of unpleasant for me.

Meerschweinmann commented 9 months ago

I have tested both versions on several displays.

One thing i did not notice on my display at work with the minimized videos was, on brighter displays the vanilla lightning is more pleasant as it does not change so fast between darker and brighter.

Sure in reality with a torch and some wind the non-vanilla version is more realistic, but on big bright screens i feel it very hectic. So i would prefer the vanilla version.

Or, if it is not too much work, as an option in the menu.

And hey, i noticed that almost all Inter-Hexen options in the menu are back in the latest build :)

JNechaevsky commented 9 months ago

That's was a really extensive test, thank you both!

So, it is obliviously a no-go then. Yesterday I have checked it in a tiny game window (day job, after all), but later in the evening tried it out on a big monitor. Yeah, it feels incorrect, probably too intensive light changing. It could be useful for some kind of custom sector effect, but it's out of scope for vanilla specifics. And as Fabian would say: "If unsure or in doubts, use vanilla approach then".

As about menu option - better to avoid such micro-switches by all costs, I made a lot of such mistakes (i.e. "features for features") in 6.x versions of the port, and definitely don't want to repeat it again. Because of this, few cools small things are missing:

Despite of being cool things, both of these are making small unoptional changes in game mechanics, even by being guarded to "single player only" to prevent demo/netgame desyncs. Maybe one day in the feature it will be worth to revisit such improvement and place them into "Cosmetical" gameplay section, but really not now.

Meerschweinmann commented 9 months ago

"If unsure or in doubts, use vanilla approach then", wise words from Mr. Greffrath :) Something similar i wanted to say yesterday, but was not sure how to say it in english. Both lighting versions have their pros and cons. Someone likes this more, the other that. Inter-DOOM (including Heretic and Hexen) is part of the faithful ID-Tech1 ports. So you can say it is vanilla behavior and you have a reason why you have done it this way.

And if an option brings demo or netgame desyncs and can only be used in certain cirumstances it is probably not really worth it.

For those who want to mod ID-Tech1 gameplay far beyond what ID-Tech1 games could do, there is GZDOOM.

JNechaevsky commented 9 months ago

Yeah, language barrier is the worst thing ever exist. 😕 True color render may offer some crazy effects, even something like "double vision" effect after getting hurt (a-la Doom 3) is possible. Possible, but better avoid such things.

Full screen status bar is almost there, it behaves on same manner as in Heretic (wide/non-wide). I just need to make a new genetic armor icon, I don't want to use previous one and want to draw something better. Until then - just a 🐷 as placeholder!

image

Meerschweinmann commented 9 months ago

That looks good to me, even with the cute pig 😀

NightFright2k19 commented 9 months ago

A very good and functional HUD. I rarely play fullscreen in vanilla ports, but I'm digging it, anyway.

When I look at that AC display: I have an option in my "Fullscreen Statusbar Mod" which converted AC back into the traditional 1-100 scale. Not that hard to do, knowing that AC 20 = 100% (so basically AC=Armor/5). Maybe that's also an idea for this port.