DarkDoomZ v1.10 [idgames]
Forum rules
The Projects forums are only for projects. If you are asking questions about a project, either find that project's thread, or start a thread in the General section instead.
Got a cool project idea but nothing else? Put it in the project ideas thread instead!
Projects for any Doom-based engine (especially 3DGE) are perfectly acceptable here too.
Please read the full rules for more details.
The Projects forums are only for projects. If you are asking questions about a project, either find that project's thread, or start a thread in the General section instead.
Got a cool project idea but nothing else? Put it in the project ideas thread instead!
Projects for any Doom-based engine (especially 3DGE) are perfectly acceptable here too.
Please read the full rules for more details.
- Caligari87
- Admin
- Posts: 6174
- Joined: Thu Feb 26, 2004 3:02 pm
- Preferred Pronouns: He/Him
- Contact:
Re: DarkDoomZ [Finished]
Hotfixed in v1.9b (available at same link), thanks for the report!
-
- Posts: 69
- Joined: Tue Sep 01, 2020 7:48 pm
- Graphics Processor: Intel (Modern GZDoom)
Re: DarkDoomZ [Finished]
now we need horror monsters settings to fit with this mode (like slenderman,freddy krueger or siren head)
Re: DarkDoomZ [Finished]
I have been trying to modify the flashlight so that it alerts monsters for as long as it is switched on.
I have tried inserting A_AlertMonsters(512); in various places around the code. The closest that I have come to success is having monsters be alerted when the flashlight is switched on, but the effect is only momentary and not constant. I'd like to make it so that the light alerts monsters all the time that it is switched on to give the player a reason to switch it off rather than just wandering around with the beacons of Gondor constantly lit all of the time with no consequences.
Can anyone give me a clue as to how to do this please?
I have tried inserting A_AlertMonsters(512); in various places around the code. The closest that I have come to success is having monsters be alerted when the flashlight is switched on, but the effect is only momentary and not constant. I'd like to make it so that the light alerts monsters all the time that it is switched on to give the player a reason to switch it off rather than just wandering around with the beacons of Gondor constantly lit all of the time with no consequences.
Can anyone give me a clue as to how to do this please?
- Dr_Cosmobyte
- Posts: 2759
- Joined: Thu Jun 04, 2015 9:07 pm
- Location: Killing spiders.
Re: DarkDoomZ [Finished]
Hmmm, maybe the flashlight can "fire" a custom projectile that spawns an item (let's call it "AlertThing"). And make it loop while firing this actor that alerts monsters on a small radius, like A_AlertMonsters(32,AMF_EMITFROMTARGET).
The other thing i thought is to add a custom DamageType and a PainState for monsters like Pain.Flashlight and make them go to the wander/see state.
The other thing i thought is to add a custom DamageType and a PainState for monsters like Pain.Flashlight and make them go to the wander/see state.
Re: DarkDoomZ [Finished]
That's certainly a possibility, the problem is, that I'm unable to find a way to make anything happen more than once. I've tried adding an instruction to spawn a projectile but, just like the alerting, I could only get it to happen when I pressed the toggle button rather than constantly emitting the projectile.
This is the area of the code where I had that success:
If I change
to
the monsters awake when I press the flashlight toggle (or I get one projectile (and another when I toggle the light off) if I put a projectile instruction in there) - but I don't understand why because, by my reading of that, the Use state loops. No?
Putting the Alert into the ToggleActive function, at least the way that I did it, just broke the function: I got a loud click when activating the light (as if the on and off sounds played simultaneously) but no light and, from that point on, I couldn't even get the click again without starting a new game.
This is the area of the code where I had that success:
Code: Select all
States {
Spawn:
ROCK A -1;
Stop;
Use:
TNT1 A 1 { invoker.ToggleActive(); }
loop;
}
virtual void ToggleActive() {
if(Active) { Active = false; owner.A_StartSound("DDZ_Flashlight_Off", CHAN_AUTO, 0, 0.5); }
else { Active = true; owner.A_StartSound("DDZ_Flashlight_Off", CHAN_AUTO, 0, 0.5); }
}
Code: Select all
TNT1 A 1 { invoker.ToggleActive(); }
Code: Select all
TNT1 A 1 { invoker.ToggleActive(); A_AlertMonsters(512);}
Putting the Alert into the ToggleActive function, at least the way that I did it, just broke the function: I got a loud click when activating the light (as if the on and off sounds played simultaneously) but no light and, from that point on, I couldn't even get the click again without starting a new game.
- Caligari87
- Admin
- Posts: 6174
- Joined: Thu Feb 26, 2004 3:02 pm
- Preferred Pronouns: He/Him
- Contact:
Re: DarkDoomZ [Finished]
Put the alert in the DoEffect() override, under the Active check. This will have it run every tick so long as the flashlight is on.
That said, this very simply alerts monsters in hearing range as if the player were constantly firing a gun. Some optimizations could include only calling it once a second, for example.
Personally I actually like the projectile idea, where it alerts monsters based on where the beam is hitting, but that is a tad more complex.
Code: Select all
override void DoEffect() {
super.DoEffect();
Quality = CVar.GetCvar("ddz_fl_quality").GetInt();
Type = CVar.GetCvar("ddz_fl_type").GetInt();
Mount = CVar.GetCvar("ddz_fl_pos").GetInt();
if(Active) {
owner.A_AlertMonsters(512);
Code: Select all
if(Active) {
if (level.time % 35 == 0) { owner.A_AlertMonsters(512); }
Re: DarkDoomZ [Finished]
Brilliant! That's exactly the information that I needed. Thank you. And now that I know where to add it, I have also managed to get a projectile firing repeatedly using that same section of code. So I can mess with the straight A_AlertMonsters option, or set up a a projectile version and see which suits me the best.
Thanks again and to Dr_Cosmobyte for the projectile idea.
BTW, I do also like the custom pain state that sends the enemies into a wandering idle state too. I don't think that I'll use that this time, but I'll hang on to the idea because it could come in useful.
[edit]
While poking around, I noticed this:
Both use DDZ_Flashlight_Off so, as far as I can see, the sound defined in SNDINFO called DDZ_Flashlight_On is never used.
Thanks again and to Dr_Cosmobyte for the projectile idea.
BTW, I do also like the custom pain state that sends the enemies into a wandering idle state too. I don't think that I'll use that this time, but I'll hang on to the idea because it could come in useful.
[edit]
While poking around, I noticed this:
Code: Select all
virtual void ToggleActive() {
if(Active) { Active = false; owner.A_StartSound("DDZ_Flashlight_Off", CHAN_AUTO, 0, 0.5); }
else { Active = true; owner.A_StartSound("DDZ_Flashlight_Off", CHAN_AUTO, 0, 0.5); }
-
- Posts: 1145
- Joined: Mon Oct 05, 2015 8:37 am
Re: DarkDoomZ [Finished]
This looks like a good idea of improvement for DarkDoomZ! Do you plan on releasing it to the public?
If so, will you upload it as a separate download or is your modification going to be integrated to the main file?
If so, will you upload it as a separate download or is your modification going to be integrated to the main file?
Re: DarkDoomZ [Finished]
I hadn't really planned on releasing a modified version of DarkDoomZ. I guess I could post something here if I get something that I'm happy with.
What I have currently got working is a projectile that flies out about as far as the effective range of the flashlight roughly every half second. It alerts any monsters that it comes within 256 units of. So, in most cases, it gives the impression that the light shining in the direction of the enemies is what alerts them.
I've also kept just the raw alerting of monsters from the player location. Every second, the player also alerts monsters in a 256 unit radius (may tweak). So, that gives the impression that the monsters are getting woken up by detecting someone nearby with a flashlight even if it isn't pointed directly at them.
None of the above is toggleable or adjustable in any way - and it might be beyond me to do that. So, I'll happily post what I have (when I have it) and if someone wants to make a better, more professional, version for integration into a modification of DarkDoomZ, then they can. To be honest, the bits that I have done are the easy ones and if someone can do the trickier stuff, they could easily replicate what I have done themselves.
What I have currently got working is a projectile that flies out about as far as the effective range of the flashlight roughly every half second. It alerts any monsters that it comes within 256 units of. So, in most cases, it gives the impression that the light shining in the direction of the enemies is what alerts them.
I've also kept just the raw alerting of monsters from the player location. Every second, the player also alerts monsters in a 256 unit radius (may tweak). So, that gives the impression that the monsters are getting woken up by detecting someone nearby with a flashlight even if it isn't pointed directly at them.
None of the above is toggleable or adjustable in any way - and it might be beyond me to do that. So, I'll happily post what I have (when I have it) and if someone wants to make a better, more professional, version for integration into a modification of DarkDoomZ, then they can. To be honest, the bits that I have done are the easy ones and if someone can do the trickier stuff, they could easily replicate what I have done themselves.
- vsonnier
- Posts: 80
- Joined: Wed Apr 10, 2019 11:22 pm
- Graphics Processor: nVidia with Vulkan support
- Contact:
Re: DarkDoomZ [Finished]
I've implemented for Brutal Doom Black Edition a working solution, which roughly lies on the following principles:
1) A Lamp beam is a cone of half-angle Theta. Therefore, A beam intersects a monster if the angle between the Vector_Player_To_Monster and the Vector_Player_To_Beam_Direction <= Theta.
which translates to is_alerting = (Vector_Player_To_Monster dot Vector_Player_To_Beam_Direction ) > cos (Theta)
2) Iterate Monsters around Player , test and for each (is_intersecting = true) AND (CheckSight = true) do monster.lastheard = Player
3) Profit !
I've also added other goodies like simulating a "real electric torch" where you can make the Light beam more or less wide, i.e more or less intense accordingly (supposing constant power), and consequently alterting monsters also accordingly : the more concentrated, the farther away monsters can be alerted.
Those additions may be rather complicated, but only 1) and 2) are needed to implement a Light altering monsters like Brutal Doom v21 has, only smarter
Here is in attachement the core Zscript used to implement all this, using Caligari87 FlashLight as base of course, hope you will find it usefull.
Edit:
Vector_Player_To_Monster and Vector_Player_To_Beam_Direction are supposed to be unit vectors there, obviously.
A previous version of the BE Flashlight, done before I heard of ShericalCoordinates function and examples (https://zdoom.org/wiki/SphericalCoords), can be found here as a standalone addon :
https://www.moddb.com/mods/brutal-doom/ ... l-doom-v21
This code is more DIY and monster position was taken from its "foot" so is not entirely correct but I didn't bother to update the addon yet.
1) A Lamp beam is a cone of half-angle Theta. Therefore, A beam intersects a monster if the angle between the Vector_Player_To_Monster and the Vector_Player_To_Beam_Direction <= Theta.
which translates to is_alerting = (Vector_Player_To_Monster dot Vector_Player_To_Beam_Direction ) > cos (Theta)
2) Iterate Monsters around Player , test and for each (is_intersecting = true) AND (CheckSight = true) do monster.lastheard = Player
3) Profit !
I've also added other goodies like simulating a "real electric torch" where you can make the Light beam more or less wide, i.e more or less intense accordingly (supposing constant power), and consequently alterting monsters also accordingly : the more concentrated, the farther away monsters can be alerted.
Those additions may be rather complicated, but only 1) and 2) are needed to implement a Light altering monsters like Brutal Doom v21 has, only smarter
Here is in attachement the core Zscript used to implement all this, using Caligari87 FlashLight as base of course, hope you will find it usefull.
Edit:
Vector_Player_To_Monster and Vector_Player_To_Beam_Direction are supposed to be unit vectors there, obviously.
A previous version of the BE Flashlight, done before I heard of ShericalCoordinates function and examples (https://zdoom.org/wiki/SphericalCoords), can be found here as a standalone addon :
https://www.moddb.com/mods/brutal-doom/ ... l-doom-v21
This code is more DIY and monster position was taken from its "foot" so is not entirely correct but I didn't bother to update the addon yet.
- Attachments
-
- FlashLight_BlackEdition2.txt
- (6.01 KiB) Downloaded 79 times
- ClessxAlghazanth
- Posts: 159
- Joined: Sun Feb 17, 2019 9:29 am
Re: DarkDoomZ [Finished]
Not what's wrong but flashlight only seems to lighten a circular area around the player , no matter what the settings are (flashlight placement , density etc)
On GZDoom 4.6.1 gles , using Opelgl es renderer , hw acceleration
Tried on both vanilla and mods including DRLA , Beautiful Doom , Doom Incarnate etc but the result is same
Any ideas on this ?
Best regards
On GZDoom 4.6.1 gles , using Opelgl es renderer , hw acceleration
Tried on both vanilla and mods including DRLA , Beautiful Doom , Doom Incarnate etc but the result is same
Any ideas on this ?
Best regards
- Caligari87
- Admin
- Posts: 6174
- Joined: Thu Feb 26, 2004 3:02 pm
- Preferred Pronouns: He/Him
- Contact:
Re: DarkDoomZ [Finished]
Spotlights in GZDoom are a fairly "modern" rendering feature, so I'm almost 100% certain this is due to lacking shader support on either your video hardware / drivers, or the GLES renderer due to the very old hardware support it targets. Nothing I can do about it on my end unfortunately.
Re: DarkDoomZ [Finished]
Spotlights do not work properly in GLES - period. I don't know what could or should be done about it, though.
Re: DarkDoomZ [Finished]
great mod, I use it to make everything just a little dimmer