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

Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: XC_GameEngine [build 9]

Post by Higor »

This is fun, moved lots of stuff into static vars and added more garbage collector stuff that should properly deinitialize/reinitialize temporary refrences, you know... in hope of fixing the v451 Linux GC issues.
To my surprise, now the Linux UT won't even attempt to find the XC_GameEngine class in the binary.

Should I just give up and drop it already?
User avatar
Chamberly
Godlike
Posts: 1963
Joined: Sat Sep 17, 2011 4:32 pm
Personal rank: Dame. Vandora
Location: TN, USA
Contact:

Re: XC_GameEngine [build 9]

Post by Chamberly »

Keep going, you will get there. :) Linux seem to have a crazy set up I guess.
Image
Image
Image Edit: Why does my sig not work anymore?
User avatar
sektor2111
Godlike
Posts: 6411
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: XC_GameEngine [build 9]

Post by sektor2111 »

Higor wrote:To my surprise, now the Linux UT won't even attempt to find the XC_GameEngine class in the binary.
Wooow, that's interesting it might be the best ever fix to write a mess called engine 451x and even removing any option for any extension able to fix it... "Well done", UTPG? I don't know where do we can find another "group of programmers" for such job... :( .

Higor, whatever is claimed and fixed indeed for version 451 (brute force, lunch bug, unreliable bug, etc.) put them into XC_Engine and let people to use 436. I already went to 436 even if I'm using Win platform, I simply wanna do a fast check into a Level and Editor is doing sucks in 451 - and THAT thing won't help me and neither others, I'm almost to quit thinking at any 451... :thudown:
User avatar
sektor2111
Godlike
Posts: 6411
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: XC_GameEngine [build 9]

Post by sektor2111 »

If you intend to help tweaking VIA XC_Engine I'll point you into another chapter SP, Coop, MH related. - MOVERS again.

Some of those "cool" Level designers used stupid values into Mover timers because they probably never heard of bTriggerOnceOnly or they cannot breath normally and they aren't receiving too much oxygen inside their brain.

Results:
- If level has more movers like that, something will get rammed and things will stop working properly;
- less movers but... insane values, resulted in a 451 Win server unable to be contacted by player... and I was wondering what was wrong there or it was caused by another internal 451 "fix", I cannot say what goes wrong but maybe you will find a bad thing that needs a CLAMP before to mess up Level completely.
RocketJedi
Inhuman
Posts: 850
Joined: Wed Mar 12, 2008 7:14 pm
Personal rank: I.T Master
Location: New York
Contact:

Re: XC_GameEngine [build 9]

Post by RocketJedi »

just added Version 9 to our RX server. So far so good.
https://www.vulpinemission.com
Image ROCKET-X8 Server
Image MONSTERHUNT w/ NALI WEAPONS 3 + RX8
Image BUNNYTRACK NY
Image SNIPER DEATHMATCH
Image InstaGib + ComboGib + Jailbreak
Image ROSEBUM ROCKET-X RB
User avatar
sektor2111
Godlike
Posts: 6411
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: XC_GameEngine [build 9]

Post by sektor2111 »

Qwerty wrote:just added Version 9 to our RX server. So far so good.
Good for you... yes it works, but I'm talking about games using more default stuff added and delivering not really the best ever levels. If Higor works and spoke about 451 troubles, they exist and are known by people which were coding mods.
SC]-[WARTZ_{HoF}
Adept
Posts: 426
Joined: Tue Feb 21, 2012 7:29 pm

Re: XC_GameEngine [build 9]

Post by SC]-[WARTZ_{HoF} »

Qwerty wrote:just added Version 9 to our RX server. So far so good.
Have you noticed if the XC_GameEngine helps prevent server crash exploits?
Image
Image
Image
RocketJedi
Inhuman
Posts: 850
Joined: Wed Mar 12, 2008 7:14 pm
Personal rank: I.T Master
Location: New York
Contact:

Re: XC_GameEngine [build 9]

Post by RocketJedi »

SC]-[LONG_{HoF} wrote:
Qwerty wrote:just added Version 9 to our RX server. So far so good.
Have you noticed if the XC_GameEngine helps prevent server crash exploits?
All the patches that I know of have been posted here on this forum. Such as servercrashfix1.1 and securevalidate. Not sure if this new engine helps with bad server setups / inexperienced admins. I did want to look into how people use ip spoofing though http://en.wikipedia.org/wiki/IP_address_spoofing
https://www.vulpinemission.com
Image ROCKET-X8 Server
Image MONSTERHUNT w/ NALI WEAPONS 3 + RX8
Image BUNNYTRACK NY
Image SNIPER DEATHMATCH
Image InstaGib + ComboGib + Jailbreak
Image ROSEBUM ROCKET-X RB
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: XC_GameEngine [build 9]

Post by Higor »

I hate stuff about server security, but I'll do something about it.
About the v451 related fixes:
- ShowPath requires bAdmin (or local game) - DONE
- ShowInventory requires bAdmin (or local game) - next in TODO list
- Disable brute forcing the admin login - TODO (a separate watcher actor will handle this given i can't edit class sizes).

Dynamic array UScript support for local/server sandboxes implemented, as well as appSeconds() and MakeColor( R, G, B, opt A)... all of them using the same opcode format as Unreal227, HUEHUEHUE.
User avatar
sektor2111
Godlike
Posts: 6411
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: XC_GameEngine [build 9]

Post by sektor2111 »

Higor wrote:- ShowPath requires bAdmin (or local game) - DONE
NO, is f..ed up not done, it could be limited at 20 requests/session or configurable into INI not removed C'Mon who the heck are those UTPG to claim this a fix ? They could reduce that bullshit log causing lags and file spam. Bot does these natives a lot of times but... no logs. AND now days we are using PI at 100 MHz to launch UT servers ?
Because of this "fix" I Implemented (with a few hours of work) a new player-class in a custom DM game able to track an enemy pawn using Bot Pathing. I'm also interested in CTF to track way to Flag if map is not so known or has too many similar zones... also I've done this. I did not see yet many people brutalizing server with this subject, else they can be banned properly. And to complete UTPG's stupid fixes, the question is: What they did against ServerKill chapter ? Let me answer: NOTHING.

Yes, Brute Force it was a need - good job. Unrealiable buffer is NOT DONE, removing bullshit strings is NOT DONE.
Higor wrote:Say, is version 440 the one worth using and developing on?
I haven't been able to see if they changed the class/struct sizes on that one.
Could be an option and added goodies from 451 (if exist any).
As for previous mentioned chapter WayBeacon is unseen On-Line, whoever is abusing it might be candidate to a permanent ban, at least I don't mind other IP added into my lists, I already have a few millions, one more is not the end of world. And because we just debated this chapter I think I can rewrite technology against abusing... using an external guard or... internal guard, LOL.
Last edited by sektor2111 on Tue Mar 03, 2015 7:24 pm, edited 1 time in total.
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: XC_GameEngine [build 9]

Post by Higor »

Say, is version 440 the one worth using and developing on?
I haven't been able to see if they changed the class/struct sizes on that one.

BBL 7 hours, semester is ON!
User avatar
sektor2111
Godlike
Posts: 6411
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: XC_GameEngine [build 9]

Post by sektor2111 »

Into UScript side I have tweaked ShowPath. If you think this supposed 451 fix is good you can use it but I got over that using other player and other beacon more shinny and a nice player... Is nice because else will fly (not in game, out of game)...
In case you have suggestions to accelerate things a bit I'll present you heat fragments to tell what you think.
Edit: Fragment from my classes (that's why I still want screwed headers - other XC_Engine.u would be awesome for me)

Code: Select all

exec function ShowPath()
{
	//find next path to remembered spot

	if ( Level.TimeSeconds - LastSeekTime < 5)
	{
		log (Self.GetHumanName()$" attempt abusing ShowPath()."); //Log it or count it in order to Destroy it
		return;
	}
	FindPath(); //Split here if time passed
}

function FindPath()
{
	local NsWayBeacon Nw;

	Node = None;
	foreach ChildActors (class'NsWayBeacon',Nw)
	{
		if (!Nw.bInRemoval)
		{
			ClientMessage("Look for The Lamp around you. Don't get messy.");
			return;
		}
	}
	LastSeekTime = Level.TimeSeconds;
	if (Self.PointReachable(Destination))
	{
		ClientMessage("Your destination seems reachable.");
		return;
	}
	else
	{
		Node = FindPathTo(Destination);
		if ( Node != None )
		{
//			log(Self.GetHumanName()$" found path."); //Removing only this
			Spawn(class 'NsWayBeacon',Self,'',Node.Location);
//			bHasBeacon = True;
		}
		else
		{
			log (Self.GetHumanName()$" didn't find path.");
			ClientMessage("Unable to find a path to desired spot.");
		}
	}
}
Of course I'm talking about NsWayBeacon

Code: Select all

class NsWayBeacon extends WayBeacon;

//temporary beacon for server-find navigation
//And a lil loved

var bool bInRemoval;

function Touch( Actor Other )
{
	if ( Other == Owner )
	{
		bInRemoval = True;
		if ( Owner.IsA('NsTournamentPlayer') )
		{
			NsTournamentPlayer(Owner).FindPath();
		}
		Destroy();
	}
}

defaultproperties
{
     bStatic=False
     bHidden=False
     bOnlyOwnerSee=True
     RemoteRole=ROLE_DumbProxy //see if needs other frequency to avoid more bandwidth
     LifeSpan=8.000000
     DrawType=DT_Mesh
     DrawScale=0.500000
     AmbientGlow=40
     bCollideActors=True
     LightType=LT_Steady
     LightBrightness=125
     LightSaturation=125
}
I can put these into any whatever XC_Engine.u and other things GameInfo like, etc. AT this moment are integrated in customs DM CTF. But they can be a common part as they are or modified.
Mainly by using another Engine.u tweaked well, things will work much better.
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: XC_GameEngine [build 9]

Post by Higor »

If the goal is to display a path to a player, it's best to do it the way UT3 does.
External actor calling the pathfinding functions, and continuously drawing a path ahead of you as you walk over it, with some nice arrow shaped actors appearing and disappearing...

Accesible via mutate or whatever.

PD: XC_Engine.u is a thing for v10.
Although you'll only be able to see and use XC_TravelManager, XC_EditorLoader and maybe the yet-to-be-done player anti brute forcer Object.
I can't make a XC_GameEngine UnrealScript counterpart because the parent GameEngine class doesn't have one, and I'm unable to serialize the XC_GameEngine class from an U file without getting a failed assertion.
Things would have been far easier had Epic (Or UTPG!!) defined Engine.GameEngine in UnrealScript as well.

PD2:
Had to remap my rear audio jacks as the front speaker one stopped working.
This piece of crap of computer is getting closer to expiration date.
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: XC_GameEngine [build 10]

Post by Higor »

Build 10 changes

Included XC_Engine.u

Added missing CPF_Const flag to XC_Engine defined variables.
Removed bHackingInit boolean.
Added dynamic array support, uses same opcodes than Unreal 227.
Added AppSeconds() and MakeColor( R, G, B, optional A) using 227 opcodes as well.
Redefined some XC_GameEngine vars into static vars.
Fixed debug logs showing up in enhanced GetMapName() despite being disabled.
Encroachment checks won't cause self-encroaching.
Added v451 ShowPath lag exploit fix.
Added v451 ShowInventory lag exploit fix.
Added AdminLoginHook, sample actor being XC_Engine.XC_ServerActor
Added 'Version' property to XC_GameEngine, stored in defaults so it's accesible via GET XC_GameEngine VERSION.

Partial sources contain all the new usable native functions.
XC_Engine.XC_EditorLoader contains coding guidelines on the new opcodes (and arrays).
Linux binary not included due to package not being able to bind.
Updates to most documentation files.

XC_ServerActor documentation included:
==================================
XC_ServerActor server actor readme
==================================

=============
Installation:

Requires XC_GameEngine.
On the Server/Game main ini:

[XC_Engine.XC_GameEngine]
ServerActors=XC_Engine.XC_ServerActor

If you don't have a XC_GameEngine entry, copy it from GameEngine instead of making a new one or ugly things happen.


============
Description:

This AdminLoginHook actor will allow external handling of AdminLogin calls
originating from PlayerPawn actors.
This gives the server the ability to deny the GameInfo.AdminLogin call.

In this case, the XC_ServerActor prevents players from brute forcing the AdminLogin.

=====================
Settings (On UT.ini):

The default settings are as follow:

Code: Select all

[XC_Engine.XC_ServerActor]
MaxBadLoginAttempts=100
LoginTryAgainTime=4.000000
bKickAfterMaxLogin=False
A bad login attempt is a login that occurs quickly after another (defined by LoginTryAgainTime)
Bad logins are automatically discarded and the player has to wait in order to be able to login again.
These bad logins are counted, when a player reaches MaxBadLoginAttempts, either:
- Block AdminLogin until player reconnects.
- Kick player if bKickAfterMaxLogin=true.

====================================
AdminLogin hook Description for coders

This is a PreLoginHook actor, it autoregisters itself to XC_GE's PreLoginHooks list and
gains the ability to interfere with a player's PreLogin function.

How does this happen?
The following pseudocode explains it:

Code: Select all

exec function AdminLogin( string Password)
{
	if ( XCGE_Allow(self) )
		Level.Game.AdminLogin( self, Password);
}

This allows every hooked actor to alter the Error and FailCode values with simple unrealscript code.
The only requirements are to register the actor with the following console command:

Code: Select all

event PostBeginPlay()
{
	ConsoleCommand( "AdminLoginHook "$Name);
	//Warning: SaveConfig() is called on this actor by XC_GameEngine before map switch.
}

And to implement this function as you see it right here (register will fail otherwise):

Code: Select all

event bool AdminLoginHook( PlayerPawn P)
{
	... //Your code here
	return true; //If you want the call to pass
	return false; //If you want to interrupt the player from reaching GameInfo.AdminLogin
}
User avatar
Wises
Godlike
Posts: 1089
Joined: Sun Sep 07, 2008 10:59 am
Personal rank: ...

Re: XC_GameEngine [build 10]

Post by Wises »

I think a great bruteforce blocker is like this,

double the time between logins , starting with 5 seconds for the first incorrect password.
so in seconds ,

5,10,20,40,80,160,180,360 (6 minutes) , 12 Minutes , 24 minutes , etc.

^_^
Post Reply