Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Suggestion] Heretic: Option to disable Strobe Lights #1244

Open
Noseey opened this issue Dec 7, 2024 · 5 comments · May be fixed by #1246
Open

[Suggestion] Heretic: Option to disable Strobe Lights #1244

Noseey opened this issue Dec 7, 2024 · 5 comments · May be fixed by #1246

Comments

@Noseey
Copy link

Noseey commented Dec 7, 2024

While playing through heretic recently, I noticed that there is a huge amount of (unnecessary) strobe lights in this IWAD. There are some clever uses of it, e. g. to simulate water reflection, but they are few and far between. Most of the time it is just annoying and has headache potential.

As some kind of "accessability" feature for my next playthrough, I created an option to disable the strobe lights (incl. flash-lights and glowing-lights) in the option menu. I see it in a similar realm like disabling / reducing weapon bobbing to aid against motion sickness.

master...Noseey:crispy-doom:Disable_LightPulsing_Option

If there is interest in such an option for the official Crispy Heretic, I'd be glad to create a PR. Let me know your thoughts!

@fabiangreffrath
Copy link
Owner

We already have this in Crispy Doom. It's an a11y feature that's only accessible from the setup, though. Please keep in mind that the engine must remain demo compatible even with this feature enabled, which required me to hop through some loops for Doom:

https://github.com/search?q=repo%3Afabiangreffrath%2Fcrispy-doom%20a11y_sector_lighting&type=code

@fabiangreffrath
Copy link
Owner

Namely, T_LightFlash() calls P_Random() to determine how long the next light level is kept, which in turn affect when it is called the next time. I had to circumvent this with the additional sector->rlightlevel variable which is used in rendering.

@Noseey
Copy link
Author

Noseey commented Dec 9, 2024

We already have this in Crispy Doom. It's an a11y feature that's only accessible from the setup, though.

Oh.. maybe I should have had a look at Doom first... 😁

Namely, T_LightFlash() calls P_Random() to determine how long the next light level is kept, which in turn affect when it is called the next time. I had to circumvent this with the additional sector->rlightlevel variable which is used in rendering.

Yeah, I know. this caused me quite some headache. In the end, I came to the very same solution, leaving the flash function untouched but instead introduced an fixedlightlevel-value that is considered in the renderer directly. I tested it using 3 demos and having a look at the demo-reel, so far it seems good compatibility-wise. A second pair of eyes might be helpful, however.

Hm, going forward, should I adapt my solution to match the doom setup approach then?

@fabiangreffrath
Copy link
Owner

Hm, going forward, should I adapt my solution to match the doom setup approach then?

Yes, please do follow suit. I wouldn't want Crispy Heretic and Doom to divert in this regard.

@Noseey
Copy link
Author

Noseey commented Dec 15, 2024

Yes, please do follow suit. I wouldn't want Crispy Heretic and Doom to divert in this regard.

I have implemented it based upon the crispy-doom solution, the PR is created. 😃

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants