XC_Engine v25 for UTPatch469a

A Collection of XC_Engine Works.
User avatar
SC]-[WARTZ_{HoF}
Site Admin
Posts: 426
Joined: Wed May 10, 2017 7:08 am

XC_Engine v25 for UTPatch469a

Post by SC]-[WARTZ_{HoF} »

XC_Engine - XC_GameEngine extension for UT99 v469a by Higor.

UT99 org thread ------> https://ut99.org/viewtopic.php?f=63&t=1 ... 36850d1f3b


XC_Engine_Full_25.7z
XC_Engine v25
(720.78 KiB) Downloaded 429 times

===========
Setting up:
===========
Place XC_Engine files in your ~UT/System/ directory.

/** Auto-installer scripts

Run XC_Enable.bat/XC_Enable_nohome.sh scripts in order to auto-config XC_Engine stuff
The scripts will enable the engine, net driver and editor addons.

See "XC_Setup.txt" for more info.
**/

In case the above fails, or a different setup is needed, follow these steps.
The new GameEngine we want to load has to be specified in UnrealTournament.ini (or it's server equivalent) as follows.

Code: Select all

[Engine.Engine]
;GameEngine=Engine.GameEngine
GameEngine=XC_Engine.XC_GameEngine
;NetworkDevice=IpDrv.TcpNetDriver
NetworkDevice=XC_IpDrv.XC_TcpNetDriver
Be adviced, when editing ServerPackages and ServerActors in a XC_Engine server, find the [XC_Engine.XC_GameEngine] entry!!!
Either remove it (and apply on GameEngine), or apply the changes on said (XC_GameEngine) entry instead.

Safe to use in v469, and on ACE servers since most hacks are reverted during online sessions.


=================
Features:
=================

- Global
Makes several properties from native only classes visible to UnrealScript, player commands and edit window (win32).
* See "Object properties.txt" for a list of newly visible properties.
Collision Grid replacing the old hash, loaded from CollisionGrid (.dll/.so)
Log file size reduction by grouping log spam and displaying how much log messages repeat.
UnrealScript patcher for servers and offline play, allows replacement of code in runtime.
IPv6 support through XC_IpDrv.

- Server
Moving Brush Tracker in Dedicated servers (movers block visibility checks), specific maps can be ignored.
* See "Server Exploits" for a list of patched exploits.
* See "Enhanced Netcode" for changes in relevancy netcode.
* See "TravelManager" for info on coop server enhancements.
Ability to send maps marked as 'no download' (Unreal SP content for example).

- Client / Player:
Prevents servers from using 'Open' and 'ClientTravel' commands to open local files on the client.
Clients no longer send options 'Game' and 'Mutator' in their login string.
More info displayed during file download: amount of files, data pending installation.
* See "AutoCacheConverter.txt" for info on the ingame cache converter.


====================
Other documentation:
====================
- LZMA
- Editor
- S3TC in Editor
- Paths Builder
- Object properties
- Self Dynamic Loading
- Script Compiler


================
Extra commands.
Check other documentation files for more commands.
================
- EditObject Name=Objectname Skip=skipcount
Client, Win32 only.
Brings up a property editor dialog of an object with a specified name.
Skip= is optional and can be used to bring up a newer objects with said name.

Example: "EditObject Name=MyLevel Skip=1" Brings up play level's XLevel properties.
Example: "EditObject Name=MyLevel" Brings up Entry level's XLevel properties.

- DumpObject Name=Objectname
Dumps object in question's memory block into a file (with the object's name), only dumps the first object with matching name.
If the object is a UFunction, then it will also save a file name FUNCTIONDATA.bin with the script code (serialized TArray<BYTE>).

- LogFields Name=classname
Logs all of the UnrealScript visible properties of the specified class, with property flags, offset, size and array count.
Boolean properties have their bitmask info logged instead of array size.

- LogClassSizes Outer=packagename(optional)
Prints in log a huge list of classes and their size in memory.
If the Outer=packagename parameter isn't used (or fails), it will print all classes's sizes.

- ToggleDebugLogs - DebugLogs
Toggles additional logging, for developers.
Disabled by default, saved in [XC_Engine.XC_GameEngine] config entry.

- ToggleRelevancy - ToggleRelevant
Requires bUseLevelHook.
Toggles XC_Level relevancy loop on net servers, see "Relevancy loop.txt" for details.


====================================
Functions patched/hooked in runtime:
====================================
See XC_Engine_Actor and XC_Engine_UT99_Actor for a full list of script patches.


=================
Credits:
=================
I would like to thank my fellow betatesters
- Chamberly
- ~V~
- Nelsona
- SC]-[LONG_{HoF}
- $carface (and the legions of Siege apes)
- AnthRAX
- SicilianKill

And all of Cham's development server visitors for the help in bugfixing this.


Changelog from 24:
v469 porting:
- Removed FMallocThreadedProxy
- Removed String Property replication hook (Linux)
- Removed bInterceptMalloc, bFasterUpload, bDisableTimingFix settings
- Removed GET and SET command reimplementations
- Removed AdminLogin hook.
- Removed RELIABLE_BUFFER assertion workaround.
- Removed signal handlers (Linux)
- Removed framerate limiter and FPS command.
- Removed ServerPackages UTX reordering to last.
- Removed Singular function fix.
- Removed Raw Input hook.
- Removed UnrealScript dynamic array addons (*1)
- Removed StripSourceCommandlet
- Removed modified Editor visualization of reachSpecs.
- BinarySerializer uses new Pointer type (*4)

Fixed broken demoplay (v24 bug).
XC_GameEngine config autogenerated on boot.
XC_GameEngine config clears removed variables from previous versions.
XC_TcpNetDriver config autogenerated on boot.
Pause/Unpause updated immediately on net clients.
Boss skins may have team colored faces [Ex: Boss5T_0] (not on bots yet)
XC_IpDrv now supports IPv6.
Fixed various XC_IpDrv HTTP downloader bugs
- Works with HFS redirects that return content-length=0 instead of error 404
- Now works in Linux clients.
Improved CollisionGrid codebase, fixed some crashes in Linux.
Experimental savegame system (commands not final).
Added "GlobalFunctions" script compiler hack (Win32) (*2)
Revamped automatic LZMA compressor. (*3)
Respawning no longer causes telefrags (untested on NewNet).


(*1) Dynamic arrays no longer automatically expand +1 when using the
accessor, now you must use the v469 specific semantics to modify the
capacity of a dynamic array:
- Array.Length (use this to get or set the length)
- Array.Insert( int At, optional int Count=1)
- Array.Remove( int At, optional int Count=1)
You may still use the v469 compiled code in old v436 servers as long
as they're running XC_Engine on it.


(*2) You may define functions as 'globals' in the same way the XC_Engine
global functions are defined, simply create a class named "GlobalFunctions"
in your mod, define all the functions there and you'll be able to call
those functions in ANY object.
Just make sure the object you're calling these functions on are compatible
with the contents of said functions, and if the function doesn't have a
'final' keyword, make sure the object indeed has the function before calling.
Example: LCWeapons_0024's weapon interface https://github.com/CacoFFF/LCWeapons-UT99


(*3) The automatic LZMA compressor will now store all of it's persistent
cache into "UT/LzmaCache/", the options for it will be in the "LzmaCache.ini"
file on said directory.
It allows the server admin to control how much memory and disk storage is
used for the LZMA data.
Additionally, XC_Engine clients will wait until the compression is done
before starting to download the data, which ensures they download the
compressed files.

(*4) The Pointer type was added in v469 to make 64 bit support possible.
If you created a subclass of BinarySerializer, you may need to recompile
it in order for it to work in XC_Engine 25.
Nelsona
Posts: 1739
Joined: Sat Sep 30, 2017 5:03 am

Re: XC_Engine v25 for UTPatch469a

Post by Nelsona »

If you have asked about UT469 and XC_Engine supposed v25 and Evil Sniper update opinion.

This is happening mainly all time when I want to play the same map Off-Line - WHEN THE Heck will this get fixed once forever ?
MapSwitch_SameMap.PNG
MapSwitch_SameMap.PNG (10.56 KiB) Viewed 10513 times
Can we just stop audio calls until garbage collector finishes and new map is loaded ? WTF !? THAT trash original UT is not doing this so often as unstable as it is.

You see ? This year I won't update anything until these are going to be solid as rock and ALL fixed as it should be a software running in XXI century.
To not forget that minigun sound is not like a minigun sound, it's like an audio stream error from some borked CD.

The fascinating thing is that I predicted these "fixes" - that's why I posted those previous old things at ut99.org - first was out of XP support, now is bugged as hell - I'll stop here to not get mad... because no, I'm not calm at all...

And that slow minded "genius" has problems with "ProgressMessages", for sure that's the critical issue in all stage... and not other results from a super duper "compiler" - a TRASH floating in XXI century.

Nope... I'll keep my private server at older 440 and XC 24 if these are going to work this way.

The only flawless latest update operated by me and fully functional was UGold227i, the rest is blabbering around.

Next: I'm not going to try running an old demo-record... I'll just drink a wine and I'll move in bed.
UncodeX Stuff
Not often maintained
My UT Mapping works...
Learn the rules like a pro, so you can break them like an artist.
- Pablo Picasso -
Nelsona
Posts: 1739
Joined: Sat Sep 30, 2017 5:03 am

Re: XC_Engine v25 for UTPatch469a

Post by Nelsona »

All right, someone else has whatever issue at collisiongrid in whatever map. I don't know why I think some of these might be because... game runs out of memory if not... corruptions for some reason(s) - still need disabling this feature.

I've requested a smarty builder for UT - if we talk about whatever 227 stuff ported in the newer UT469 patch - I see Higor did not say anything about manual reachSpecs handling support, 227 has this thing. So... okay, let it be UGold227i then - perhaps I'm asking too much... my apology for disturbing.
UncodeX Stuff
Not often maintained
My UT Mapping works...
Learn the rules like a pro, so you can break them like an artist.
- Pablo Picasso -
Nelsona
Posts: 1739
Joined: Sat Sep 30, 2017 5:03 am

Re: XC_Engine v25 for UTPatch469a

Post by Nelsona »

XC_Engine25 works in 469b ONLY in Editor, in game... lulu...
UncodeX Stuff
Not often maintained
My UT Mapping works...
Learn the rules like a pro, so you can break them like an artist.
- Pablo Picasso -
User avatar
SC]-[WARTZ_{HoF}
Site Admin
Posts: 426
Joined: Wed May 10, 2017 7:08 am

Re: XC_Engine v25 for UTPatch469a

Post by SC]-[WARTZ_{HoF} »

Maybe Higor has an update I missed.
Nelsona
Posts: 1739
Joined: Sat Sep 30, 2017 5:03 am

Re: XC_Engine v25 for UTPatch469a

Post by Nelsona »

I've only read about adding back range option for devs in Editor but I could not see anything yet - perhaps because 469b is not that public.
Anyway for my needs it looks operational, I don't know what does it do regarding to older mods coming with C++ natives. Of course, first time I got some funky messages, I switched to Galaxy, then, finally it started (I had to to switch partitions here and reinstall OS... it looks like original HDD is going to an end or partitions must be recreated... refreshed)
UncodeX Stuff
Not often maintained
My UT Mapping works...
Learn the rules like a pro, so you can break them like an artist.
- Pablo Picasso -
Nelsona
Posts: 1739
Joined: Sat Sep 30, 2017 5:03 am

Re: XC_Engine v25 for UTPatch469a

Post by Nelsona »

Here and there XC_Engine25 won't create Navigation chain in next 469, and Builders might have a dumb reaction at completing fields...

Code: Select all

Log: Garbage: objects: 39704->39641; refs: 517388
Critical: FEditObjectItem::MatchComboSelection
Critical: FEditObjectItem::ComboSelectionEndCancel
Critical: WComboBox::InterceptControlCommand
Critical: WM_HSCROLL
Critical: MessagePump
Critical: MainLoop
Exit: Executing UObject::StaticShutdownAfterError
Exit: UGalaxyAudioSubsystem::ShutdownAfterError
Exit: Executing UWindowsClient::ShutdownAfterError
Log: DirectDraw End Mode
Exit: UD3D9RenderDevice::ShutdownAfterError
Exit: UD3D9RenderDevice::ShutdownAfterError
Exit: UD3D9RenderDevice::ShutdownAfterError
UncodeX Stuff
Not often maintained
My UT Mapping works...
Learn the rules like a pro, so you can break them like an artist.
- Pablo Picasso -
User avatar
SC]-[WARTZ_{HoF}
Site Admin
Posts: 426
Joined: Wed May 10, 2017 7:08 am

Re: XC_Engine v25 for UTPatch469a

Post by SC]-[WARTZ_{HoF} »

ChamberlyToday at 5:54 AM
Yeah Higor didn't make an update to XC_Engine for v469b patch yet. Each time a patch is being released, he have to go through the whole code match again.
Nelsona
Posts: 1739
Joined: Sat Sep 30, 2017 5:03 am

Re: XC_Engine v25 for UTPatch469a

Post by Nelsona »

Yap... exactly here I was afraid... each 469 is different from the other previous one and then each 469 has it's own XC stuff - LOL.

Now let's see who will be able to figure after 6 - 60 months which version is for which update... :?

In other hand... Evil Sniper server won't be turned in a testing lab - more exactly I do not have plans to do that... ONLY when these are stable and solid we can... Think in first stage at updates, AFTER testing everything in a twin server for testing purpose not in any main HOF servers...
UncodeX Stuff
Not often maintained
My UT Mapping works...
Learn the rules like a pro, so you can break them like an artist.
- Pablo Picasso -
Nelsona
Posts: 1739
Joined: Sat Sep 30, 2017 5:03 am

Re: XC_Engine v25 for UTPatch469a

Post by Nelsona »

Let's see some "227" adds in 469 and let's have a prediction what a compilation does when it's done using this stuff in plain UT:

Code: Select all

// 227 backports
function bool IsAlivePawn(Pawn P)
{
	return P != None && !P.bDeleteMe && P.Health > 0;
}

function bool HasAliveEnemy()
{
	return IsAlivePawn(Enemy) && Enemy != self;
}

function bool IsLiveActor(Actor A)
{
	return A != None && !A.bDeleteMe;
}
This is ScriptedPawn (warning at MH coding...) in newer UT. These functions called in plain UT will deliver a successful crash because UT up to 451b is not having them. Eh ? Does it worth then ? I see community loving this game but working harder to ruin it... These checkers could be part of a new mod running in such a version instead of being implemented.

Yes, it's a new year... HAPPY... like it has never been before.

Then
I removed IpV6 protocol from my machines - I have my reasons... so excuse me, but I cannot check if it works or if it worth testing it. These IP ranges cannot be handled that easy...
UncodeX Stuff
Not often maintained
My UT Mapping works...
Learn the rules like a pro, so you can break them like an artist.
- Pablo Picasso -
Post Reply