MH-DawnRaid

Tutorials and discussions about Mapping - Introduce your own ones!
User avatar
OjitroC
Godlike
Posts: 3605
Joined: Sat Sep 12, 2015 8:46 pm

Re: MH-DawnRaid

Post by OjitroC »

Looks interesting - just played the first bit so far.

A quick question - it is not possible to fire through this doorway from this side
DawnR1.jpg
Is this intentional? It is rather a pity as it limits the way in which the map can be played - normally I would snipe as many opponents as I could see from this position or further back but I can't do this (with these weapons anyway).
Buggie
Godlike
Posts: 2698
Joined: Sat Mar 21, 2020 5:32 am

Re: MH-DawnRaid

Post by Buggie »

No. it is bug. i think i fix it.
You need enter once to this area for make hitscan via door work. Something block it. I will investigate this later.
User avatar
OjitroC
Godlike
Posts: 3605
Joined: Sat Sep 12, 2015 8:46 pm

Re: MH-DawnRaid

Post by OjitroC »

Emjoyable map :gj: Challenging but doable by one person (which is good for me).

A few things from the log

Code: Select all

Log: AmmoSniper4 fell out of the world!

ScriptLog: MH-DawnRaidV0.TeamCannon3 should never call base spawncarcass

ScriptWarning: Counter MH-DawnRaidV0.Counter1 (Function Engine.Counter.Trigger:018E) Accessed None 'EventInstigator'
Would be nice if you can fix the initial 'door' issue - it's not critical because, as you say, once one goes through and then retreats one can fire through the opening without any problems.
User avatar
Barbie
Godlike
Posts: 2792
Joined: Fri Sep 25, 2015 9:01 pm
Location: moved without proper hashing

Re: MH-DawnRaid

Post by Barbie »

At least Teleporter0, 1 and 13 do not work on (my) server. It looks like that you are teleported to the same place. Or that you are teleported back instantly.
"Multiple exclamation marks," he went on, shaking his head, "are a sure sign of a diseased mind." --Terry Pratchett
Buggie
Godlike
Posts: 2698
Joined: Sat Mar 21, 2020 5:32 am

Re: MH-DawnRaid

Post by Buggie »

It is because wrong prediction on client.
On client teleport enabled. On server no.
So client make prediction and tele you.
Server correct your position and return back.

Possible this because teleports bNoDelete. This set for preserve teleports rotation. Because without that on network you teleported in wrong direction, because rotation not replicated.

Maybe later i find some way which fix both bugs.
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: MH-DawnRaid

Post by sektor2111 »

Teleporters mentioned have bStatic - client is not having another Teleporters. If their settings are Wrong that's another story. There could be a kicker for throwing Pawn in desired direction but in this map it's still year 2002.... and I think a Pawn rotated in server will be rotated in client too... because actor's rotation it's part of replication.

When Teleporter is not in a big spot and Pawn reaches there, if teleporter is too small, pawn teleported might bounce in wall falling back into Teleporter...

Teleporter13 goes at Teleporter8 - entertaining is that Dispatcher4 might DISABLE Teleporter13 at a moment if it goes triggered.

In Sektor mind is the question: Why would disable a Teleporter without dealing with creatures ? Paths are available until Pawn is closer and then... it's stuck there by SpecialHandling task which returns NONE even if routecache points were already set + the whole NextOrdered PrevOrdered chain was already processed - useless.
User avatar
Barbie
Godlike
Posts: 2792
Joined: Fri Sep 25, 2015 9:01 pm
Location: moved without proper hashing

Re: MH-DawnRaid

Post by Barbie »

sektor2111 wrote: Sun Nov 21, 2021 7:18 amIn Sektor mind is the question: Why would disable a Teleporter without dealing with creatures ?
Only a guess: in assault mode the defenders should not be able to go to its destination any more.

Automatically merged

Buggie wrote: Sun Nov 21, 2021 3:48 am Server correct your position and return back.
<strike>But the opposite Teleporter6 works fine.</strike> :???:
<EDIT>
I tried the map again and now Teleporter6 didn't work neither.
</EDIT>
"Multiple exclamation marks," he went on, shaking his head, "are a sure sign of a diseased mind." --Terry Pratchett
Buggie
Godlike
Posts: 2698
Joined: Sat Mar 21, 2020 5:32 am

Re: MH-DawnRaid

Post by Buggie »

IDK about what Sektor talk at all (as usual). Even more: what I understand is totally wrong and irrelevant to discussed topic, so I not comment his post.

About topic: teleport consists from two points. But way enabled if enabled only source point. So one way can work when back way not work.
Also there complicated rules for disable or even enable teleporters (defenders must not tele to closed areas, and defenders must not able tele to back for attackers).
Also there goes replication. Usually destination point not relevant to client, so can happen some desync.

I not dive into it yet. Maybe later.

Automatically merged

Yea. As I now see teloprters here bStatic. Mapper want custom teleporter. But instead of modify properties of VisibleTeleporter he use Teleporter class which bStatic by default.
So it is not subject for replication. And client never know if server switch off teleporter.
So client misspredict player movement.

Solution: Make all teleporters and subclasses, not bStatic. Also ensure for set bNoDelete, For not lost rotation on teleport for network play.
As I see it no harm or side effects, except eat some replication channels. But this near negligible. OFC if you not built map with 500 teleporters...
User avatar
Barbie
Godlike
Posts: 2792
Joined: Fri Sep 25, 2015 9:01 pm
Location: moved without proper hashing

Re: MH-DawnRaid

Post by Barbie »

Buggie wrote: Sun Nov 21, 2021 12:13 pmteloprters here bStatic. […] So it is not subject for replication.
I thought the only difference of a static Actor is that Tick() is not executed?
<EDIT>
I noticed this:
Client's UnrealTournament.log wrote:Warning: Invalid or missing music format for Track 180
MH-DawnRaidV0-Levelproperties.jpg
MH-DawnRaidV0-Levelproperties.jpg (15.87 KiB) Viewed 382 times
</EDIT>
"Multiple exclamation marks," he went on, shaking his head, "are a sure sign of a diseased mind." --Terry Pratchett
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: MH-DawnRaid

Post by sektor2111 »

Buggie wrote: Sun Nov 21, 2021 12:13 pm IDK about what Sektor talk at all (as usual). Even more: what I understand is totally wrong and irrelevant to discussed topic, so I not comment his post.

About topic: teleport consists from two points. But way enabled if enabled only source point. So one way can work when back way not work.
Also there complicated rules for disable or even enable teleporters (defenders must not tele to closed areas, and defenders must not able tele to back for attackers).
Then let me explain what is about: MONSTERHUNT has NO Defenders TEAM anywhere - I see here a "MH-" map, and Yes, you know what I'm talking about here - this is not an Assault stage any more. Disabling Teleporters in this map stage has no purpose, it's just blocking Monsters.
Another day I'll throw out all data with no use - if map has no problem in BSP stage, also completely deleting teleporters, ALL of them. If this is a conversion, then I'll re-convert it as it should be in MonsterHunt. These AS stories are one of reasons why the author of Chronoshift map was disagree with such conversion.

PS: Next time I'll use a Translator but I doubt that is even needed. Good luck with conversions.
Buggie
Godlike
Posts: 2698
Joined: Sat Mar 21, 2020 5:32 am

Re: MH-DawnRaid

Post by Buggie »

> I thought the only difference of a static Actor is that Tick() is not executed?
Weird. My assumption and solution is wrong. It is not work at all.
bStatic nothing to do with that. But bAlwaysRelevant = true fix issue.

I read on wiki:
> Actors with bStatic or bNoDelete set to true are always relevant.
https://wiki.beyondunreal.com/Legacy:Relevance
But not find anything about that in source code.
Actor relevant if

Code: Select all

			// only check visibility on already visible actors every 0.3 + 0.2R seconds
			if ( !Channel || NetDriver->Time-Channel->RelevantTime>0.3 )
				CanSee = ActorCanSee( Actor, InViewer, Viewer, Location );
			//TraceTime+=appSeconds();
			if( CanSee || (Channel && NetDriver->Time-Channel->RelevantTime<NetDriver->RelevantTimeout) )
			{
ActorCanSee:

Code: Select all

UBOOL ActorCanSee( AActor* Actor, APlayerPawn* RealViewer, AActor* Viewer, FVector SrcLocation )
{
	guardSlow(ActorCanSee);
	if( Actor->bAlwaysRelevant || Actor->IsOwnedBy(Viewer) || Actor->IsOwnedBy(RealViewer) || Actor==Viewer || Actor==RealViewer
		|| Viewer==Actor->Instigator )
		return 1;
	else if( Actor->AmbientSound 
			&& ((Actor->Location-Viewer->Location).SizeSquared() < 0.3*Actor->WorldSoundRadius()*Actor->WorldSoundRadius()) )
		return 1;
	else if( Actor->Owner && Actor->Owner->bIsPawn && Actor==((APawn*)Actor->Owner)->Weapon )
		return ActorCanSee( Actor->Owner, RealViewer, Viewer, SrcLocation );
	else if( (Actor->bHidden || Actor->bOnlyOwnerSee) && !Actor->bBlockPlayers && !Actor->AmbientSound )
		return 0;
	else
		return Actor->GetLevel()->Model->FastLineCheck(Actor->Location,SrcLocation);
	unguardSlow;
}
there no any mention bNoDelete or bStatic.
Usual teleporter bHidden = True, bBlockPlayers = False, AmbientSound = None, so ActorCanSee always return 0.

As I say before - it is mapper mistake, use hidden teleport here. He must use VisibleTeleport with chaged display settings.
Instead he place noncollide Barrel with DT_Sprite and teleport texture.

So proper way fix this - make all teleporter bAlwaysRelevant if they able during game change state and/or location/direction.

Automatically merged

Small example.
dm-!!!!!teleport_bug.zip
(2.9 KiB) Downloaded 6 times
Start on dedic server. Touch trigger, and go to corner with teleport.
For a moment you able see green room, before server correct wrong local prediction.
Via
editactor class=teleporter
you can ensure it is bEnabled even after touch trigger.
You can edit this locally and flicker stop.

Automatically merged

Kohan: What's the thing about ZoneInfo always being relevant? bAlwaysRelevant isn't set in it, though it is set in LevelInfo.

Dimension4: ZoneInfos are bNoDelete, so they are always relevant
ZoneInfo by default bAlwaysRelevant. And if you set it to False, ZoneInfo stop replicated.

So
ZoneInfo and its subclasses are always relevant. ~~~ Category:Legacy To Do is this because it has bAlwaysRelevant? If so, indicate bAlwaysRelevant should not be set to false for instances of ZoneInfo or its subclasses.
too wrong.
User avatar
Barbie
Godlike
Posts: 2792
Joined: Fri Sep 25, 2015 9:01 pm
Location: moved without proper hashing

Re: MH-DawnRaid

Post by Barbie »

Buggie wrote: Sun Nov 21, 2021 6:19 pm So proper way fix this - make all teleporter bAlwaysRelevant if they able during game change state and/or location/direction.
Or use a sub class where bStatic == false. (Just tried that successfully.)
About the comments in BeyondWiki: better add a comment which explains the correct situation.
"Multiple exclamation marks," he went on, shaking his head, "are a sure sign of a diseased mind." --Terry Pratchett
Buggie
Godlike
Posts: 2698
Joined: Sat Mar 21, 2020 5:32 am

Re: MH-DawnRaid

Post by Buggie »

> Or use a sub class where bStatic == false. (Just tried that successfully.)
Not really. In any case Actor not replicated.
If you set bNoDelete = true, then nothing changed. Flicker is still here.
If you not set it, then, because actor not replicted, no flicker, but exists next problems:
1. Server move you, no any local prediction. So you on wrong position for ping time (or possible even two pings). For DM it can be critical.
2. No local prediction means no any rotation correction, because it done on client side, not by server. Server not able properly handle set rotation at all.
So any teleport must be bNoDelete if you want preserve correct rotation of Pawn.
Even for visible teleporters. Because correction for rotation depends from both teleporters. And second teleporter too far for be relevant, which destroy local prediction.
So we return were we started - only one proper solution - bAlwaysRelevant.
Post Reply