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

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

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

Post by Higor »

=============================
=== 20 update:

Fixed crash bug in maps with player start actors outside of the world.
Summon command can try the GameType's package.
BruteProjectile log spam gone.
Fixed mover to non-solid actor encroachment.
Moving Brush tracker on dedicated servers fully operational, identical behaviour as clients.

Added 3 general options to XC_Engine.ini: (game must be loaded once for these to appear)
- bFixBroadcastMessage
** Prevents players from broadcasting generic messages they're not supposed to broadcast.
- bSpectatorHitsTeleporters
** Spectators can hit teleporters.
- bListenServerPlayerRelevant
** The host of a listen server automatically adds his player class/skin to send list.

[Linux] 'XC_Engine' name properly registered, logs emanating from XC_Engine no longer start with 'None:'
This update deprecates the need to use Pure spectators in order to make them able to use teleporters.
Also deprecates AntiMsgHack (also implemented in Pure) by preventing message illegal broadcasting before it even reaches the message mutators.

If you're running a Coop or MH server with XC_Engine, updating is really beneficial due to the fixes in the moving brush tracer and mover encroachment.
SC]-[WARTZ_{HoF}
Adept
Posts: 426
Joined: Tue Feb 21, 2012 7:29 pm

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

Post by SC]-[WARTZ_{HoF} »

All {HoF} servers are updated to XCGEv20 and running well as far as I can see. Thanks Higor. :gj:
Image
Image
Image
Chris
Experienced
Posts: 134
Joined: Mon Nov 24, 2014 9:27 am

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

Post by Chris »

I like the FunctionReplace a lot, enables us to replace the root of problems rather than doing bruteforce checks in ticks and what not. I found it a bit messy replacing functions in states.
You suggested to subclass target class which was my first approach, and also to define a new derrivate state with the same name, which I did since it required another function from the parent state. This however resulted in "WithFunction=... not found". I ended up moving both functions out of the state and let them reside in the new class to make the compiler happy. Did I miss something or did you not encounter this case yet?
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

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

Post by sektor2111 »

I went for a simple solution, if we are speaking about ScriptedPawn states. Rewriting packages and conforming them properly... No longer pain.
Why ? Because I'm convinced that some states needs "Sleep" timers - this way helps a lot in preventing recursions crash limitation. A few minutes ago I solved TweenToRunning from Warlord - it's crapped by default because WarlordM doesn't have animation Dodge - has different dodges... By disabling/enabling XCGE these being correctly coded will always work fine.
For other packages which needs some fine tuning at Net compatibility, ReplaceFunction might be the solution.

Edit:
- Related to redirect problem -
I was emulating a noob admin updating server with a new version of a map but "forgetting" a redirect update. Conclusion: Redirected player getting bad old file will NEVER enter the server - PROBLEM IS NOT FIXED. In original default UT, player is getting the good file from game-server if redirect is wrong - a double download is better than a mismatch because THERE is NO REAL FILE IN CLIENT for mismatch - error returned is a FALSE one, download should start from game-server rather than rejecting player, in this case the newer download speed assigned by XCGE at direct file sending doesn't make sense.
User avatar
Barbie
Godlike
Posts: 2792
Joined: Fri Sep 25, 2015 9:01 pm
Location: moved without proper hashing

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

Post by Barbie »

Chris wrote:I like the FunctionReplace a lot [...] I found it a bit messy replacing functions in states
Because there seems to be a solution for replacing state code functions now - can this also be implemented in XC_Engine?
"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: XC_Engine [20] - XC_Core [7] - XC_IpDrv

Post by sektor2111 »

Before adding news I think it's recommended to fix BUGS first.

After Building paths with XC_PathBuilder if something needs a bit of push here and there at next Path Rebuild with XC_PathBuilder some items seems to no longer have myMarker - ( leaving InventorySpots visible for not being recreated/screwed ). In exchange, item in cause doesn't have anymore a marker. Why ?
[attachment=0]Items_wtf.PNG[/attachment]

As result some of my replacements are not OK as long as Item has no marker and it's being confused with a Deco drop item.
Probably I have to build paths ONCE only (even if result might go messy - will fix positions in clean state) because a secondary Pathing added after first one, is just screwing up stuff. Did anybody else figure this problem ? :?:
Attachments
InventorySpot has love for Eightball but Eightball doesn't love anyone around...<br />Occurred at secondary XC Paths Building...
InventorySpot has love for Eightball but Eightball doesn't love anyone around...
Occurred at secondary XC Paths Building...
User avatar
papercoffee
Godlike
Posts: 10443
Joined: Wed Jul 15, 2009 11:36 am
Personal rank: coffee addicted !!!
Location: Cologne, the city with the big cathedral.
Contact:

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

Post by papercoffee »

From Epic's UT forum:
nagytam wrote:In last years I always noticed significant speed differences among players on many, if not most of servers. And that stays for speed of simple running too. First idea was that faster players use some cheat, hack - and it is possible for instance with Cheat Engine - well, on servers without good anti-cheat. Usually, players near to server were faster, but not always. There is for instance Russian guy. known cheater, who is way too fast on German, Dutch servers - that's case of pure cheat, hack indeed, and I noticed yesterday even that he using aimbot for sure (killed me with enforcer from distance like a joke).
But enough about cheaters, I experienced something very interesting yesterday: server DDDs classit UT all weapons - relative new one, what using NewNet 0.9b, and experiences a lot with settings as I see. So, it started to kick me 2 days ago with message that my weapon fire speed is too high, so I need to fix it or connection. There is nothing I can fix here, or to remove some hack. Speed is normal. I don't know has it something that Internet service provider changed my modem last week. Probably not - it's newer model of modem, but generally everything is same, and my pings, lag is practically 100% same as I can feel. I'm pretty sure that false detection is result of variable lag - and that's is how my provider works. Then I decided to try with lower Network speed settings, so set there phone connection speed - and yes, it affected whole thing, although it set actually Cable speed, not Phone modem speed. I tried some other servers, and it was worse than with LAN setting. Restarted UT couple times too. But most interesting is what happened when I set it back to LAN, and went to DDDs server - on map Agony I have extreme high running speed, faster than earlier with speed relic !
That means some things: NET code is far from perfect. I had wrong idea about players with such high running speed, thinking they are cheaters (some may be it, of course) - the error is in netcode, whole UT timing, tick based system (very old, game is from 1999). This speed differences are worse than lag differences - what Zero ping tries to compensate.. I talked about speed differences to admins, but they are usually blind for it. And to accent it: may speed was at least 2x bigger than before. Then, speed depends much from map - another big flaw.
I write this in hope that some admins and Netcode programmers in first place will notice it, and do some much more intensive testings, what should include more players and feedback. Because as it is now, it is just bad, and whole online experience is poor - instead playing skill and experience connection and even pure luck is what matters mostly.
I'm experienced UT player. Since 1999. We had lot of LAN parties earlier, and that was whole different thing. There were no easy frags, player who dominated on all maps. And of course, were no speed differences. Funny thing was seeing some players which dominated on one server being very average on another server. While their ping was not bad at all.
Feralidragon wrote:Well, the main problem with such an old engine/game is that it blindly trusts the client too much for plenty of things.
Although there are newer engines and far newer games where it's even ridiculously and laughably worse, as if the developers didn't learn (or know?) anything over the years and completely shoved security aside, then you end up with players able to even spawn whatever they want server-side in some cases. Fortunately this is not the case for UT99, but it does trust position updates from the client and in a fixed CPU clock speed when it's variable these days.

I never looked much into it myself, but there are some mods which seem to prevent that particular problem with speed (although I am not sure if they fix the speed or kick the player instead), but would a developer want so, he/she could actually fix this from the root since it's pretty all controlled through UScript anyway so it's relatively "easy" to override and fix any behavior by extending and replacing the used class by players (PlayerPawn for the overall engine, TournamentPlayer for UT in particular, iirc).
The actual way to do it is debatable, but I am certain that it is possible to do it, since the engine's simplicity kinda plays in our favor in this case.

Unfortunately, however, the game is so short in developers nowadays that a real fix might never really come.
There's a XC_Engine out there though, mostly aimed for servers, but I don't know if it already fixes this to any extent (I am aware that it fixes a lot of things, from exploits to engine crashes, but other than that I don't really know exactly what).
User avatar
Chamberly
Godlike
Posts: 1963
Joined: Sat Sep 17, 2011 4:32 pm
Personal rank: Dame. Vandora
Location: TN, USA
Contact:

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

Post by Chamberly »

papercoffee wrote:From Epic's UT forum:
nagytam wrote:In last years I always noticed significant speed differences among players on many, if not most of servers. And that stays for speed of simple running too. First idea was that faster players use some cheat, hack - and it is possible for instance with Cheat Engine - well, on servers without good anti-cheat. Usually, players near to server were faster, but not always. There is for instance Russian guy. known cheater, who is way too fast on German, Dutch servers - that's case of pure cheat, hack indeed, and I noticed yesterday even that he using aimbot for sure (killed me with enforcer from distance like a joke).
But enough about cheaters, I experienced something very interesting yesterday: server DDDs classit UT all weapons - relative new one, what using NewNet 0.9b, and experiences a lot with settings as I see. So, it started to kick me 2 days ago with message that my weapon fire speed is too high, so I need to fix it or connection. There is nothing I can fix here, or to remove some hack. Speed is normal. I don't know has it something that Internet service provider changed my modem last week. Probably not - it's newer model of modem, but generally everything is same, and my pings, lag is practically 100% same as I can feel. I'm pretty sure that false detection is result of variable lag - and that's is how my provider works. Then I decided to try with lower Network speed settings, so set there phone connection speed - and yes, it affected whole thing, although it set actually Cable speed, not Phone modem speed. I tried some other servers, and it was worse than with LAN setting. Restarted UT couple times too. But most interesting is what happened when I set it back to LAN, and went to DDDs server - on map Agony I have extreme high running speed, faster than earlier with speed relic !
That means some things: NET code is far from perfect. I had wrong idea about players with such high running speed, thinking they are cheaters (some may be it, of course) - the error is in netcode, whole UT timing, tick based system (very old, game is from 1999). This speed differences are worse than lag differences - what Zero ping tries to compensate.. I talked about speed differences to admins, but they are usually blind for it. And to accent it: may speed was at least 2x bigger than before. Then, speed depends much from map - another big flaw.
I write this in hope that some admins and Netcode programmers in first place will notice it, and do some much more intensive testings, what should include more players and feedback. Because as it is now, it is just bad, and whole online experience is poor - instead playing skill and experience connection and even pure luck is what matters mostly.
I'm experienced UT player. Since 1999. We had lot of LAN parties earlier, and that was whole different thing. There were no easy frags, player who dominated on all maps. And of course, were no speed differences. Funny thing was seeing some players which dominated on one server being very average on another server. While their ping was not bad at all.
Every thing in nagytam's post have nothing to do with XC_Engine.
More rambling
However, what the guy experienced was some random cheater using newnet exploit and cheat that can occurs when the server is using the newnet version that doesn't have this patched. Unless the cheat maker made a new cheat to bypass that updated newnet version - again - I can't confirm this. It's a world of mouse and cat chase.

Some servers don't cover up well enough on anti-cheats, anti-tweaks, and any other variable mods to prevent such cheating.

The connection problem can be anything between a bad route to a couple of other reasons. Not many people understands this but when they do some IP route trace and using a MTR to find out which connection is causing the problem they can send the copy of that to the server admin so the server admin can forward that to their server host provider IF the host does anything about it (NFO is one of them.) Beyond that, I'm not sure what does the host do.

So you want to know what XC_Engine does? Everything is in the first post at the beginning of the topic. Yes, there are different terminology there. Yes, not many people understand. Yes, there are a lot of benefits regardless they know or not, but it will be noticed such as fewer crashes and so on. Yes, the documentation IS included.
Image
Image
Image Edit: Why does my sig not work anymore?
User avatar
Barbie
Godlike
Posts: 2792
Joined: Fri Sep 25, 2015 9:01 pm
Location: moved without proper hashing

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

Post by Barbie »

From Epic's UT forum
FYI the URL is in here.
"Multiple exclamation marks," he went on, shaking his head, "are a sure sign of a diseased mind." --Terry Pratchett
User avatar
papercoffee
Godlike
Posts: 10443
Joined: Wed Jul 15, 2009 11:36 am
Personal rank: coffee addicted !!!
Location: Cologne, the city with the big cathedral.
Contact:

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

Post by papercoffee »

Barbie wrote:
From Epic's UT forum
FYI the URL is in here.
Ah, I forgot to put the URL in my Post. Thanks.
User avatar
Chamberly
Godlike
Posts: 1963
Joined: Sat Sep 17, 2011 4:32 pm
Personal rank: Dame. Vandora
Location: TN, USA
Contact:

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

Post by Chamberly »

papercoffee wrote:
Barbie wrote:
From Epic's UT forum
FYI the URL is in here.
Ah, I forgot to put the URL in my Post. Thanks.
Still, XC_Engine is not gonna help everything for him about his situation. You probably getting the wrong idea what XC_Engine do.
Image
Image
Image Edit: Why does my sig not work anymore?
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

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

Post by sektor2111 »

I read those in big parts

I cannot be sure about one thing because I don't have machines for testing such things, but XC_Engine replaces some ServerMove problem if you check well resources... The fact is... I don't know if admins are using it, some confirmation is needed and posting issues HERE because HERE is XC_Engine thread (not section) toward that ServerMove enhancement. To be honest with you, I've implemented that already in my default Engine used in server... but like I said, I don't know if it do helps for speed hacking in cause - my hardware and connection are not that good for doing public servers. For the rest of aiming things XC_Engine is not an anti-cheat (perhaps not yet so to speak...). Since I saw people looking in "all Internet" and they did not see XC_Engine :loool: , perhaps the cheater is playing in servers where admin is doing nothing toward new changes a la 2017 and where things are pretty much outdated, making a mess where places are cute for him for jerking at others...

Part two:
If this guy is a known cheater, how the heck his/her identity is not shared everywhere to be banned properly by all admins ? You see ? Admins are sleeping in shoes at this point so they deserve this mess because the do not care what they do, with other words they do not stick together.
There is a custom game launcher which should be pointed to these people and warning them about speed problems heading to a ban. Hey, player, update your UT unless you'll want to play OFF-Line only, but no one cares as I can see so far.

It was only a long post boring me and... in a wrong location. Why ? Because EPIC seems to not care that much about UT'99, at least I did not see any intention for an Engine Update regarding to XC_Engine coming from community. So to speak community is maintaining this game. They could at least to do an official launcher for new CPU types but... nobody moves a finger there. Or I'm wrong ? Did they last night debate UT'99 problems until 4:00AM ? :ironic: My bad then...
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

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

Post by sektor2111 »

Note for XCGE v20
I finally could play some MH-LongCorridor map without troubles (using an XC_MonsterHunt not other conform MH). As a matter of fact, unloading stuff during travel took I think half of minute if not even more - everything was like stuck. Client has lost connection, I have reconnected multiple times - useless during this process. After a while new map was loaded, I could join and then... client crashed - probably client side did not managed travel properly.... not such a big deal I was expecting such reaction...
Due to time spent for garbage collecting process I'm wondering if that actor recycle system works or not - Game was around 298 minutes, almost at time-limit which I set. Garbage reported was around 68k refs... no regens used for spam, just 4 Bots and me, with a small break during this session.
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

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

Post by Higor »

Small prototype of XC_Core here, the difference is that all LZMA code has been stripped from it and instead it'll dynamically load a LZMA library in order to gain its functionality.
LZMA library has been built using the LZMA SDK version 16.04 which is placed in public domain.

Technical details:
- So far XC_Core only invokes one CPU thread for LZMA compression, so the lzmacompress commandlet may be a bit slower for now.
- Windows: LZMA.dll built from 'lzmalib' project, using Visual C++ 6.
- Linux: LZMA compression is finally possible now, the LZMA.so binary was built using GCC 4.6.3 (Ubuntu 14).
- Linux: LZMA.so doesn't have multithreaded compression support (it was never implemented in the SDK!)
- Fixed up a messed up LzmaDecompress external symbol... but kept the old one to avoid breaking modules that use it, meaning current XC_Engine/XC_IpDrv versions won't be broken.
- The LZMA library stays loaded until application end for now (gotta figure out a way to make it unload if XC_Core gets unloaded, in BOTH platforms)

If there's more significant features that should go in XC_Core, now's the time.
As soon as I cleanup the code some more, XC_Core will have it's full repository in GitHub
XC_Core_LZMA.7z
(179.69 KiB) Downloaded 72 times
===== EDIT:
It's possible to compile the LZMA library yourself, if you want faster build or another LZMA version.
I used VC++6 to not to prompt to install newer MSVC (or equivalent) libraries.

This is the makefile created to build LZMA.so on Linux, put it on 'C' folder of the LZMA SDK.

Code: Select all

CC = gcc

CFLAGS = -c -m32 -O2 -Wall -D_7ZIP_ST
LDFLAGS = -shared
TARGET_LIB = LZMA.so

SRCS = Alloc.c LzFind.c LzmaDec.c LzmaEnc.c LzmaLib.c
OBJS = $(SRCS:.c=.o)

.PHONY: all
all: ${TARGET_LIB}

$(TARGET_LIB): $(OBJS)
	$(CC) ${LDFLAGS} -o $@ $^

$(SRCS:.c=.d):%.d:%.c
	$(CC) $(CFLAGS) -MM $< >$@

include $(SRCS:.c=.d)

.PHONY: clean
clean:
	-${RM} ${TARGET_LIB} ${OBJS} $(SRCS:.c=.o)
	-${RM} ${TARGET_LIB} ${OBJS} $(SRCS:.c=.d)
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

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

Post by Higor »

Attachments
XC_Core_7b.7z
(220.87 KiB) Downloaded 247 times
Post Reply