Page 1 of 1

Fog Zone

Posted: Sat Mar 28, 2020 5:17 am
by hee
A question for the sages of unreal.

I set up a fog zone. Checking the zone view it was clearly zoned out.......but no fog....as clear as a bell.

Has the fog zone been implemented...or am I daft?

Also the cloud zone was like a brick wall...instant death on entry (even as a ghost).

Re: Fog Zone

Posted: Sat Mar 28, 2020 7:59 am
by UnrealGGecko
Make sure the VolumetricLighting option in your renderer settings is set to true, happened to me a few times :P

Re: Fog Zone

Posted: Sat Mar 28, 2020 2:25 pm
by Barbie
hee wrote: Sat Mar 28, 2020 5:17 amI set up a fog zone. Checking the zone view it was clearly zoned out.......but no fog....as clear as a bell.
As UnrealGGecko indicated, make sure that you can see fog at all. Open for example map MH-Shrak3 and check if you can see the fog on the ground.

hee wrote: Sat Mar 28, 2020 5:17 amAlso the cloud zone was like a brick wall...instant death on entry (even as a ghost).
IMO "cloud" zone has nothing to do with clouds or fog - that zone destroys everything, even spectators or flags (forever) in CTF games. So cloud zones should be used with care.

Re: Fog Zone

Posted: Sun Mar 29, 2020 4:05 am
by hee
Thanks for the info. But considering the rendering overhead I have decided to solve the problem a different way.

@barbie

Just curious. If that is what a cloud zone does, why would anyone use it?

Re: Fog Zone

Posted: Sun Mar 29, 2020 1:36 pm
by Barbie
hee wrote: Sun Mar 29, 2020 4:05 amIf that is what a cloud zone does, why would anyone use it?
Probably it is intended to have projectiles shot into the sky vanishing instead of exploding at the map's border. This would also give the name a sense.

Re: Fog Zone

Posted: Sun Mar 29, 2020 4:41 pm
by Feralidragon
Barbie wrote: Sun Mar 29, 2020 1:36 pm
hee wrote: Sun Mar 29, 2020 4:05 amIf that is what a cloud zone does, why would anyone use it?
Probably it is intended to have projectiles shot into the sky vanishing instead of exploding at the map's border. This would also give the name a sense.
Yep, that's exactly why they exist.
The issue though is that they destroy everything, which is problematic for things like spectators, CTF flags, etc, but which can be fixed with a custom cloud zone excluding those from destruction.

Re: Fog Zone

Posted: Sun Mar 29, 2020 5:17 pm
by sektor2111
A CloudZone in a DM game is not exactly that critical, it will act like some "WhoPushedMe" mutator. Someone was shooting you, and you fall into CloudZone. This is counting as kill for the player which was shooting you - That's Why can be used. Why is happening this ? Because Pawn, ANY, in UT if takes damage from another Pawn in a non-team game usually is completing variable called ENEMY with pawn shooter. CloudZone takes in account this "Enemy" and it's calling the kill function accordingly. Of course the code doesn't check for actor entered what type is and what conditions must accomplish (visible, health, type of actor, ect) because it was pretty much poorly coded - somehow usual for 1999... I hope in future UT 469 this CloudZone will get some fix...

Re: Fog Zone

Posted: Sun Mar 29, 2020 9:51 pm
by Feralidragon
sektor2111 wrote: Sun Mar 29, 2020 5:17 pm I hope in future UT 469 this CloudZone will get some fix...
To not clutter this thread, could you elaborate more on this, namely which and how actors should be handled in a CloudZone here?

The ones that come to my mind are the spectators and CTF flags for instance, but I am sure you have a lot more cases in mind (you and everyone else), so those may at least be addressed in v469 before its release, otherwise it may only make it much later on into v470 or so.

Re: Fog Zone

Posted: Sun Mar 29, 2020 10:17 pm
by OjitroC
Feralidragon wrote: Sun Mar 29, 2020 9:51 pm To not clutter this thread, could you elaborate more on this, namely which and how actors should be handled in a CloudZone here?
Is that the right thread for this?

Decals are a problem - a CloudZone destroying Decals caused multiple crashes of Terraniux's MH-Mesopheric (a map entered in the 2018 mapping competition).

Re: Fog Zone

Posted: Mon Mar 30, 2020 5:23 am
by hee
Barbie wrote: Sun Mar 29, 2020 1:36 pm
hee wrote: Sun Mar 29, 2020 4:05 amIf that is what a cloud zone does, why would anyone use it?
Probably it is intended to have projectiles shot into the sky vanishing instead of exploding at the map's border. This would also give the name a sense.
Wow...that actually makes sense, but I am still not sure it is a good solution. There is a kind of intrinsic problem with maps. If you have any kind of open map simulating real terrain, it obviously cannot be infinite. There is always a border, so the question is how to handle it. If you had a cloud zone at the edge where a player could go, instead of merely being blocked, the player would die a gruesome death. If you had a good backdrop, the player might not even be aware of the border. If your map has jets, then it becomes even more problematic as even without a cloud zone, the border would be lethal. I suppose a cloud zone could be put specifically at the upper border of the map...but I don't know. I think if the upper border is high enough (and with open maps I have played it usually is) it would not have an effect on game play as you would be too busy to notice the ultimate fate of rocket misfires. But still...it is something to consider.

Re: Fog Zone

Posted: Mon Mar 30, 2020 9:47 am
by sektor2111
Spectators, decals, generally pawns already dead, for more others a test map would show more. Else CloudZone On-Line it's not that evil because destruction ON-Line it's... slow - and server WILL NEVER attach a decal anywhere.

Hey... Wiki, see this:

Code: Select all

void ADecal::execAttachDecal( FFrame& Stack, RESULT_DECL )
{
	guard(ADecal::execAttachDecal);
	P_GET_FLOAT(TraceDistance);
	P_GET_VECTOR_OPTX(DecalDir,FVector(0,0,0));
	P_FINISH;

	*(INT*)Result = 0;
	if( !GetLevel()->Engine->Client || !GetLevel()->Engine->Client->Decals ) //Level out of client won't do anything
		return;

#ifndef NODECALS
	if( Region.Zone->bFogZone ) //in Fog we don't have them (- but we can see them if already there LOL)
		return;
	if(!Texture) //At least this was smart check - respect - you could do more elsewhere too
	{
		debugf(TEXT("AttachDecal: No Texture"));
		return;
	}
	MultiDecalLevel = Min<INT>(MultiDecalLevel, 4);
It's why a server doesn't crash with decals in a CloudZone - only at other funky stuff without sanity checks, and then I can play my CloudZoned maps 100 times with no single crash until I might die starved.

Edit:
Not only CloudZone, but every single code which any of you is doing and performing "Destroy()" should have a sanity check for bStatic bNoDelete stuff - forget Epic "strategic" codes. I could see in old mods this blind removal of actors which in fact are never removed. To not mention mappers forcing destructive decorations as bStatic and what they do when you shot them...

Learn to eliminate bad actors in a more domestic way if actor in destruction it's causing more or less damage:
Fake destruction below if needed in mods (- perhaps even before PREBEGINPLAY in new game-types):

Code: Select all

Actor.Disable('Touch');
Actor.Disable('UnTouch');
Actor.Disable('Trigger');
Actor.Disable('UnTrigger');
Actor.Disable('Timer');
Actor.Disable('Tick');
//Actor.GotoState(''); //if after Level.bStartup
//or
//.Actor.InitialState =''; //during Level.bStartUp
Actor.Event = '';
Actor.Tag = '';
Actor.AttachTag='';
//Actor.SetBase(None); //if done later after Level.bStartUp
Actor.SetCollision(False,False,False);
Actor.SetCollisionSize(0,0);
Actor.DrawType(DT_None);
//More Skin stuff ? Bla bla Multiskins ect
Actor.bHidden=True;
//Optional craps
if (NavigationPoint(Actor) == None)
{
Actor.bCollideWorld = False;
Actor.SetPhysics(PHYS_Falling); //Jeronimo !
}
Eg: MonsterWayPoint doing damage at function Touch out of MonsterHunt game - same as AssaultRandomizer which should never be deleted ?
Else CloudZone can be more smarter... not stacking actors but you cannot destroy a Mover entered in that zone LOL...