XC_Engine [20] - XC_Core [7b] - XC_IpDrv

ShaiHulud
Adept
Posts: 459
Joined: Sat Dec 22, 2012 6:37 am

Re: XC_Engine [19] - XC_Core [7] - XC_IpDrv

Post by ShaiHulud »

Thanks sektor. I just want to add one last post to this discussion to round things out, and then I'll stop off-topicing the thread. I started experimenting with bot variables:

Code: Select all

    bCamping = true;
    Destination = Location;
    Focus = Location;
    AmbushSpot = None;
    MoveTarget = None;
    Enemy = None;
    Acceleration = vect(0, 0, 0);
    CampTime = 10;

    fOldPeripheralVision = PeripheralVision;
    fOldSightRadius = SightRadius;
    fOldHearingThreshold = HearingThreshold;
    fOldAlertness = Alertness;
    bOldWantsToCamp = bWantsToCamp;

    PeripheralVision = 0.0;
    SightRadius = 0.0;
    HearingThreshold = 0.0;
    Alertness = 0.0;
My thought was to try to make the bot deaf and blind to world events, and to therefore prevent the native code from having any stimuli to react to. This worked reasonably well, but there were still occasions where things would get interrupted once Sleep() had begun. So I was looking around in Bot.uc, seeing things like:

Code: Select all

bReadyToAttack
Disable('Bump');
LastAcquireTime
LastSeenTime
LastSeeingPos
LastSeenPos
...and then I noticed state GameEnded. This turned out to be just what I needed. Unbeknownst to me, unrealscript had a perfect mechanism for dealing with situations like this - the ignore statement! So I basically just copied the ignore statement from GameEnded to the start of my state, and now things are working swimmingly.

Ah, that's the trouble with a problem domain. You don't know what you don't know, until you know it. I had no idea that this existed until an hour ago. Well, I'm sure I've seen the ignore statement, but I've... um, largely ignored it's significance previously.
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: XC_Engine [19] - XC_Core [7] - XC_IpDrv

Post by sektor2111 »

Yes "Game Ended" is another way...
Hint: In MH2 used by me I have eliminated stupid monsters attack before game start and invisible weapons by using this state for monsters. Actually if nobody play, it's useless to do iterators and new actors if map will change soon - that's my dumb logic.
"Auto State" contains a lot of executions which simply are not needed if no hunter is there - including original solution in making a weapon from Skaarj invisible if has spawned and held so early. I could awake them at first player joined but... nah... if game is not started nobody moves around. Yes, GameEnded saved me - during this time I could remove some of them which are useless (maps with a crap-ton of them added in level crashing at teaming problem due to internal iterators).

Edit:Another mention:
Let's say a Level type LongCorridor having XC Links will save even a NON XC Server from crashing... as follows:
- 2 Pathnodes will replace WarpZoneMarkers and...;
- WarpZoneMarkers will have 100.. 00 ExtraCost... because;
- human tester fooling around those paths might do something funny:

Code: Select all

Critical: appError called:
Critical: WarpZoneMarker MH-__________.WarpZoneMarker15 (Function Engine.WarpZoneMarker.SpecialHandling:0000) Infinite script recursion (250 calls) detected
Exit: Executing UObject::StaticShutdownAfterError
Critical: FFrame::Serialize
Critical: UObject::ProcessEvent
Critical: (WarpZoneMarker MH-__________.WarpZoneMarker15, Function Engine.WarpZoneMarker.SpecialHandling)
Critical: APawn::HandleSpecial
Critical: UObject::ProcessEvent
etc...
And then probably these craps have no "SpecialHandling" deal for player (lol to custom games HideAndSeek types) but they do have now (at least I have done some changes around):

Code: Select all

/* SpecialHandling is called by the navigation code when the next path has been found.  
It gives that path an opportunity to modify the result based on any special considerations
*/

/* FIXME - how to figure out if other side actor is OK and use intelligently for all dests? 
*/
function Actor SpecialHandling(Pawn Other)
{
//Ns Add: More intelligently is preventing a crash based on default zero deal, geniuses !
	if (PlayerPawn(Other) != None))
		return Self;
//End of Add
	if (Other.Region.Zone == markedWarpZone)
		markedWarpZone.ActorEntered(Other);
	return self;
}
/*
	if ( markedWarpZone.numDestinations <= 1 )
		return self;
	
	if ( markedWarpZone.OtherSideActor is OK )
		return self;
Ns Question: Why Engine returns a path if OtherSideActor is not OK ??? Why should it do routes in there ???

	if (TriggerActor == None)
	{
		FindTriggerActor();
		if (TriggerActor == None)
			return None;
	}
	return TriggerActor;			
}	 
*/
Eheh... the other "friend" WarpZoneInfo looks like do works better with less simulated stuff - someone doesn't understand who is AUTHORITY and who decides Locations - else I have written some breakers in State "DelayedWarp" in purpose to slow down tick crapping pawn iterations.
It's probably time to rewrite teleporters... Or not ?

Because I might have a recommendation toward Bot through Warp-Zones:
Add 2 Teleporters ruined into those zones (less collision as possible but still Enabled) do "PathsDefine" command. Find WarpZoneMarkers and put their cost 10000000 (something high) letting teleporters to manage routes - end of navigation troubles...
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: XC_Engine [19] - XC_Core [7] - XC_IpDrv

Post by sektor2111 »

Related to package fixing/conforming. Eh... sometimes dealing with these is a real challenge. I though that UnrealI and UnrealShare are bad one but it was "impressive" trying to recompile BotPack from Editor and from outside (UCC).
Conforming a fixed BotPack...
I'm wondering how the heck they compiled this thing as long as even script are unbelievable shitty as possible or modified on purpose. Class "Barrel3.uc" line 7 has nothing to do with Barrel3 and return instantly a compilation error at lodmesh. However, Editor is a genius compiling all trash with no problems. I have tried to recreate Source-Code and the way of getting sources is hilarious - Botpack compiles using even things from UnrealShare folder - outside of it's folder.
I'm not sure what do I missing but for sure Scripts from BotPack are far from reality.
I touched VIA Editor ChallengeVoicePack - in all NON Assault games order AssaultTheBase is not that impressive (CTF is another thing) for me doesn't make sense - nice change and it worked with a single problem (crappy one) No audible orders voices in that version, but a server done based on that thing it's fully operational. The fact is new conformed BotPack with new codes (fixing TimeDilation from client included with a very simple hack to trigger replication) well, is pretty smaller than original and goes with a few kb more in conformed status, proving that something is lost. In other way, by loading some UMenu UTMenu things around all goes in trash by Editor - files goes reduced at 50% and some content doesn't even exist and VIA UCC simply they won't compile due to some UWindow subclass problem (something not found which is there - was there since 3 years). Then by finally compiling something like a BotPack - a texture was missing ruining everything...
I have big questions how the heck did they compiled this thing, it was easy to do Engine.u, and the rest of major stock Packages but this BotPack looks as a profanity which doesn't make much sense.

Q: How can I use XCGE for figuring differences between Original and a Conformed Copy or if we have a cheap solution at this point?
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: XC_Engine [19] - XC_Core [7] - XC_IpDrv

Post by sektor2111 »

Okay while I was taking a break from fooling around BotPack, I quickly made a Level and a switched machines for performance testing. It looks like here funky things still happens between levels and even in game at playing local on a machine with no SSE instructions from any kind.
Some attach decal error occurs, else other SGirlSkins.PaletteXXX and UnObj line 260 at garbage collector, I suspect that XCGE attempts to use SSE instructions even if CPU doesn't have them because at a moment things goes crazy. I'm not sure if this map is evil at extremes since I was playing it a lot of times with no XCGE and it do seems to work properly.

It's a map with a bit of different Bot setup in purpose to not have advantage of predicting spawn and simply simulating like Boot is looking for items as human does without to know about them + using some Insta mutator might be convincing Bot to roam around rather than camping with no purpose.
[attachment=0]DM-Modolif.7z[/attachment]

Another whatever problem, almost all time when I start UT I'm using the mostly red skin not what colors I was picking last session - this might be a little frustrating (cousin with some old New Net Skin troubles). I'm not sure if everything goes fine at playing OFF-Line. I gotta admit map starting is a MH one but there is MHv504 which allows skin changes and I had last color held, the only color change was happening after a CTF game where I was playing RED or BLUE, for DM never happened to switch at red only. DM has more freedom of colors I don't get why I'm turned to red almost all time. I will do more research here but... by removing some stuff from XC_Eng...u file server's log at skin part related to XAN are more relaxed than before, because XC logs were funny at a moment. "Did not find boss11 so load boss11" - so to speak it sounds like I did not find water so I will drink water.

Edit: Half of things have been false alarm - I was using some carcass tweaks involving variables from extra abstract class - which doesn't exist :loool: . I have removed that entire tweak and... I placed a self guard for mutator. If game is ending it goes to destruction. I think is better to let the thing down before initialize any game-travel for properly get into garbage collector. I'm gonna do some other tests.
Attachments
DM-Modolif.7z
Modolif - map with some... Other setup...
(1.03 MiB) Downloaded 80 times
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: XC_Engine [19] - XC_Core [7] - XC_IpDrv

Post by sektor2111 »

Today's observation:

Code: Select all

/* Adjust hit location - adjusts the hit location in for pawns, and returns
true if it was really a hit, and false if not (for ducking, etc.)
*/
simulated function bool AdjustHitLocation(out vector HitLocation, vector TraceDir)
It simply do works properly as a NON-SIMULATED. a new Kicker works non-simulated, other movement and damaging stuff is server job as well. Probably this is crashing like that teleporter fix which seems to work better if client doesn't screw server's decisions in any way...
I simply think is a little wrong in original because client will not decide where the hit is being done, but server does.
_________
Edit: Umm... a morning idea toward inventory class in whatever function:

Code: Select all

	if ( bStatic || bNoDelete )
	{
		log (Self.Name$" has retarded setup... Perform movement hacking...",'Engine');
		bRotatingPickup = False;
		bFixedRotationDir = False;
		RotationRate.Pitch = 0;
		RotationRate.Yaw = 0;
		RotationRate.Roll = 0;
		ConsoleCommand("SET"@SELF@BSTATIC 0);
		ConsoleCommand("SET"@SELF@BNODELETE 0);
	}
And we will know what we have:
UnrealTournament.log wrote:

Code: Select all

ScriptLog: Add mutator LessTele3.LessTele
ScriptLog: MH-MonstersOfSpam-v116+Fix2.LessTele0  has been loaded and started.
ScriptLog: LessTele0 has added 0 additional PlayerStart types...
ScriptLog: 16 0
Engine: ripper0 has retarded setup... Perform movement hacking...
Engine: ShockRifle0 has retarded setup... Perform movement hacking...
Engine: minigun0 has retarded setup... Perform movement hacking...
Engine: UT_FlakCannon0 has retarded setup... Perform movement hacking...
Engine: ripper1 has retarded setup... Perform movement hacking...
Engine: ShockRifle1 has retarded setup... Perform movement hacking...
Engine: UT_FlakCannon1 has retarded setup... Perform movement hacking...
Engine: minigun1 has retarded setup... Perform movement hacking...
Engine: ripper2 has retarded setup... Perform movement hacking...
Engine: ShockRifle2 has retarded setup... Perform movement hacking...
Engine: minigun2 has retarded setup... Perform movement hacking...
Engine: UT_FlakCannon2 has retarded setup... Perform movement hacking...
Engine: UT_FlakCannon3 has retarded setup... Perform movement hacking...
Engine: ripper3 has retarded setup... Perform movement hacking...
Engine: ShockRifle3 has retarded setup... Perform movement hacking...
Engine: ShockRifle4 has retarded setup... Perform movement hacking...
Engine: ripper4 has retarded setup... Perform movement hacking...
Engine: UT_FlakCannon4 has retarded setup... Perform movement hacking...
Engine: ShockRifle5 has retarded setup... Perform movement hacking...
Engine: UT_FlakCannon5 has retarded setup... Perform movement hacking...
Engine: ripper5 has retarded setup... Perform movement hacking...
Log: Spawning new actor for Viewport WindowsViewport0
And client will get movement info (no move) and cannot mess them because they are authoritative touched regarding to client's Level - like I said "Server is The Man" and The Man said "Jump !" Client asking "How high ?" and not "Why ?".
I can call this animality more scientific for matching academic terms: Gorgeosus Fixus.
"Fix2" :rofl:... it might do works in other trash Levels bringing them on the right ground.
Edit:
Forum script Censored some quotes from above's console command code.
Last edited by sektor2111 on Sat Feb 18, 2017 8:21 am, edited 3 times in total.
Chris
Experienced
Posts: 134
Joined: Mon Nov 24, 2014 9:27 am

Re: XC_Engine [19] - XC_Core [7] - XC_IpDrv

Post by Chris »

Any chance that you can implement proper support for a server to send native libraries too? NPLoader isn't really working that well.
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: XC_Engine [19] - XC_Core [7] - XC_IpDrv

Post by sektor2111 »

By sending natives to client we might develop the probability for sending a malware. A DLL will not respect "sandbox" if doesn't want that. Already UT can save lousy content outside of sandbox VIA logs and they can be... BAT files if we want. Else, I'm not that concerned as long as WIN98SE is being mainly out, because we can save an AutoExec.Bat there, and not a friendly one.
Chris
Experienced
Posts: 134
Joined: Mon Nov 24, 2014 9:27 am

Re: XC_Engine [19] - XC_Core [7] - XC_IpDrv

Post by Chris »

sektor2111 wrote:By sending natives to client we might develop the probability for sending a malware. A DLL will not respect "sandbox" if doesn't want that. Already UT can save lousy content outside of sandbox VIA logs and they can be... BAT files if we want. Else, I'm not that concerned as long as WIN98SE is being mainly out, because we can save an AutoExec.Bat there, and not a friendly one.
Is this your idea against NPLoader too? Yes it allows code to execute outside the UScript environment, and so does every other program you download on the internet, which means you should take the same percaution there. For major changes we sometimes require to write something native, and should see the benefits of it. If you are concerned about a native mod downloaded to your client you could perhaps request to look at the code and see what it does, or have a member do so if accepted by author. Could serve as a verification.


EDIT:
I did some experiments with drawing markers around movers. So it hit me... you can't FastTrace movers (Pretty obvious)... for now my solution was to decrease the vector by a fraction to trace outside the BSP of the mover.. but obviously that is not a flawless solution. Do you have any idea on this, Higor?
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: XC_Engine [19] - XC_Core [7] - XC_IpDrv

Post by sektor2111 »

More Notes:
1- By Playing map DM-Modolif Off-Line multiple times one by one, at a moment garbage collector is crashing game as it usually do in such case when something is not working as should.
2- By playing that CTF map Our_Neighbors with only 10 brushes and no one solid brush Game might run 10 times one by one and... it is never crashing.

For first case I was interested after reading forum about U227 featured Editing Mixed with UT's Editor - to be honest I dropped map back into UT Editor and I have finished it there... because some things went uglier that into UT's Editor - that's the truth... and both of them did bugged things.

For second case Nothing else than UT's Editor was used for building map as simple as it is.

My guessing (in hoping to wrong here) U227's Editor probably has added something in map which UT doesn't have but it do allocates some space in memory for that thing. At travel and Level re-initialization I think some pointer wants to remove an object which was never been created - because UT doesn't have it. Then everything is going down-hill if we blabbering with objects which have only description but they have never been added anywhere. And I think this is the story with "extended" editors creating stuff which won't exist in UT games and makes garbage collector to do... a sort of Accessed None, which in C++ natives means a CRASH looking like a memory corruption (FArray screwed with null things ?) - which I don't have as long as all applications and machine stay running for hours without any need for restart. I was looking a few minutes at that line UnObj and I really don't get WTF does that crash if not something like a void pointed there.
User avatar
esnesi
Godlike
Posts: 1018
Joined: Mon Aug 31, 2015 12:58 pm
Personal rank: Dialed in.

Re: XC_Engine [19] - XC_Core [7] - XC_IpDrv

Post by esnesi »

First of all, i wanna thank you for your effort you still put in this game _O_

I got a little problem which might also be interesting for you, i hope ;)
It's not XC related, but i hope you might wanna do something with it!

Cause iam getting a bit clueless here lol.
I know we are being targetted atm with flood attacks / ddos.
I think get busy importing ip ranges int he firewall is an endless job.

I would hope for something like:
MaxConnPerIPPerMin=x ;)

Code: Select all

DevNet: NotifyAcceptingConnection: Server MyLevel accept
NetComeGo: Open MyLevel 03/14/17 14:36:12 182.110.214.78:41673
NetComeGo: Open MyLevel 03/14/17 14:36:12 182.85.195.232:42376
NetComeGo: Open MyLevel 03/14/17 14:36:12 182.85.195.232:49664
NetComeGo: Open MyLevel 03/14/17 14:36:12 182.110.214.78:57804
XC_Engine: Empty connection after 2.029173 seconds.
XC_Engine: Empty connection after 2.029173 seconds.
NetComeGo: Close XC_TcpipConnection3828 03/14/17 14:36:12
NetComeGo: Close XC_TcpipConnection3820 03/14/17 14:36:12
XC_Engine: Empty connection after 2.026749 seconds.
NetComeGo: Close XC_TcpipConnection3832 03/14/17 14:36:12
NetComeGo: Open MyLevel 03/14/17 14:36:12 115.148.66.193:37808
NetComeGo: Open MyLevel 03/14/17 14:36:12 115.148.66.193:37809
NetComeGo: Open MyLevel 03/14/17 14:36:12 182.110.214.78:33349
NetComeGo: Open MyLevel 03/14/17 14:36:12 115.148.66.193:37810
NetComeGo: Open MyLevel 03/14/17 14:36:12 182.110.214.78:45366
NetComeGo: Open MyLevel 03/14/17 14:36:12 182.85.195.232:57248
NetComeGo: Open MyLevel 03/14/17 14:36:12 182.85.195.232:51876
XC_Engine: Empty connection after 2.004279 seconds.
XC_Engine: Empty connection after 2.004279 seconds.
XC_Engine: Empty connection after 2.004279 seconds.
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: XC_Engine [19] - XC_Core [7] - XC_IpDrv

Post by sektor2111 »

I still don't get why you didn't ban China already - not endless IPs - just countries with problems, because IP addresses are not endless. There are countries lists generators (web services on purpose) and the only need is using copy-paste list from there.
User avatar
esnesi
Godlike
Posts: 1018
Joined: Mon Aug 31, 2015 12:58 pm
Personal rank: Dialed in.

Re: XC_Engine [19] - XC_Core [7] - XC_IpDrv

Post by esnesi »

26000 rules imported.
Lets see how it goes ;)
ShaiHulud
Adept
Posts: 459
Joined: Sat Dec 22, 2012 6:37 am

Re: XC_Engine [19] - XC_Core [7] - XC_IpDrv

Post by ShaiHulud »

I was under the impression that UT is agnostic about file locations as long as a desired file can be located among one of the listed paths - including in the cache folder. But apparently I'm mistaken.

Using DynamicLoadObject to try to access properties of a file that I know to be in the cache list fails ("Can't find file for package"). Does XC_Engine offer any potential for doing this?
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: XC_Engine [19] - XC_Core [7] - XC_IpDrv

Post by Higor »

That goes to package finding and loading.
UE1's package loading looks at CD and UT folders, with GUID being an optional requirement for net games but it cannot find packages on cache folder, unless manually ordered to do so (client joining).
It only works if the package's already loaded due to package renaming.

I could totally write loading functions that can search packages by GUID only, or search in caches, but there's a lot of things to consider.
Unloading a failed package (because it doesn't contain the required import) before trying another one with same name, being unable to load another package with same name because there's already one loaded before the load call, etc.
Also, hooking loading calls from places other than unrealscript isn't exactly a clean process.
ShaiHulud
Adept
Posts: 459
Joined: Sat Dec 22, 2012 6:37 am

Re: XC_Engine [19] - XC_Core [7] - XC_IpDrv

Post by ShaiHulud »

Thanks Higor. That does sound painfully hard to implement reliably. Don't worry about it, I was just curious as to whether this could be done using existing tools.
Post Reply