XC_Engine version 26 for UT v469d

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

XC_Engine version 26 for UT v469d

Post by Higor »

XC_Engine - XC_GameEngine extension for UT99 v469d by Higor.

"XC_Engine - XC_GameEngine extension for UT99 v469d by Higor."
Spoiler
===========
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.

=================
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.
FerBotz bundled as part of XC_Engine.

- 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
- Paths Builder
- Object properties
- Self Dynamic Loading
- Script Compiler
- FerBotz


================
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.

- SaveGame [game_name]
- LoadGame [game_name]
Experimental single player game save feature, should work in multiplayer games as well.

====================================
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
- KnoW

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

Code: Select all

Changelog for 26:
Ported to these platforms:
- Win64 (if the patch ever releases for it, it'll be ready)
- Linux64 (tested on Ubuntu)
- LinuxArm64 (tested on Raspbian - does not contain CollisionGrid)

Improved navigation in DM-Zeto (access to secret keg)
Improved navigation in DM-Conveyor (access to thigh pads)
Improved navigation in DOM-Olden (access to keg, secret shield belt)
Improved navigation in DOM-Bullet (access to Omega from lower spawnpoints)
Fixed issues with new paths/reachspecs created by the Event Chain System
Removed SCF_Disabler actor
Added ClientMessage server hook that prevents spamming the same message multiple times on a frame
- Controlled by XC_GameEngine.bUseClientMessageHook
Solved an issue causing a silent crash on game exit

CollisionGrid:
- Fixed bug breaking the grid if a level has more than 1500 colliding actors

XC_Engine_Actor changes:
- Removed all variables, class is now an interface
- Added FindNamedNavigationPoint() util
- Removed some obsolete script compiler hooks
- Improved ReplaceFunction, can use state functions for sources
- Added FindRandomDest() replacement to workaround a v469d crashbug

XC_Engine_UT99_Actor:
- Removed some obsolete script compiler hooks

Editor changes:
- Rewritten script compiler hooks to not be version or platform dependent
- Path rebuilder won't delete warp markers with bHiddenEd=false
- Path rebuilder allows you to keep hidden inventory/warp markers without destroying them
- Path rebuilder undefines paths super fast on levels with thousands of actors
- Removed "Edit Actor" brush builder
- BrushToMesh can recreate existing/previous named meshes if not used by any actors
- Fixed memory leaks in BrushToMesh
- Fixed broken polygons when tiling surfaces in BrushToMesh
- Fixed bug preventing BrushToMesh from removing null texture entries from meshes

FerBotz:
- Reduced package size by using PCX textures with a shared palette
Note: I've deprecated 32 bit builds for Linux, if you need to run XC_Engine in such platforms get the 64 bit builds.
Attachments
XC_Engine_26_469d.7z
(1.5 MiB) Downloaded 66 times
ShaiHulud
Adept
Posts: 459
Joined: Sat Dec 22, 2012 6:37 am

Re: XC_Engine version 26 for UT v469d

Post by ShaiHulud »

I'm sure I'm overlooking something obvious, but the XC_GameEngine class doesn't seem to exist inside of the XC_Engine package any more - what class name should be used in the [Engine.Engine] section of UnrealTournament to set things in motion?

Server is complaining with:
Failed to load "Class XC_Engine.XC_GameEngine": Object not found: Class XC_Engine.XC_GameEngine
And browsing the XC_Engine.u package, I can't see the XC_GameEngine class listed there. Thanks for the support.
User avatar
sektor2111
Godlike
Posts: 6413
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: XC_Engine version 26 for UT v469d

Post by sektor2111 »

I don't know what settings are you having but... clearly in U_T_.ini file some other things must be operated...
"Engine.GameEngine" section will become "XC_Engine.XC_GameEngine", <paths> need to be declared there exactly like for prior original Engine (for me it's the same section but renamed to "XC_") - mainly I have the same settings there replacing actually prior Engine stuff, and to not forget settings for "XC_IpDrv" that goes separate nearby stock "IpDrv" (for any potential required fall-back). And then... extra variables from XC_Engine will go there.

Code: Select all

...
...
[XC_Engine.XC_GameEngine]
CacheSizeMegs=256
UseSound=True
bCacheConvertAtJoin=False
bDisableTimingFix=False
SortMaplistByFolder=True
bAutoTravelManager=False
bCollisionHashHook=True
bUseLevelHook=True
bUseNewRelevancy=False
bDisableBrushTracker=False
bSortMaplistGlobal=True
bEnableDebugLogs=True
bAutoCompressLZMA=True
bForceLevelHook=False
bInterceptMalloc=True
bInterceptLog=True
bSortMaplistInvert=False
;ServerActors=IpServer.UdpServerUplink MasterServerAddress=unreal.epicgames.com MasterServerPort=27900
;ServerActors=IpServer.UdpServerUplink MasterServerAddress=master.mplayer.com MasterServerPort=27900
;ServerPackages=UTrooper
;ServerPackages=MHBotyMan4
....
....
In other hand the class "XC_Engine.XC_GameEngine" it's not exactly an UScript-ed one, I'm not sure if you will see it - at least I did not try to track that. So far to me everything is normal - okay, except some 469d things... borked things more exactly... not related with XC_Engine because they are the same as without XC_Engine. The rest means using all related DLL files required by XC_Engine. If a single DLL file is missing XC_Engine will fail to load - "Cacus.dll" was one of them in my first try...

Edit:
Random Picture... :tu:
Objects_And_XC.PNG
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: XC_Engine version 26 for UT v469d

Post by Higor »

ShaiHulud wrote: Tue Feb 27, 2024 7:51 am I'm sure I'm overlooking something obvious, but the XC_GameEngine class doesn't seem to exist inside of the XC_Engine package any more - what class name should be used in the [Engine.Engine] section of UnrealTournament to set things in motion?

Server is complaining with:
Failed to load "Class XC_Engine.XC_GameEngine": Object not found: Class XC_Engine.XC_GameEngine
And browsing the XC_Engine.u package, I can't see the XC_GameEngine class listed there. Thanks for the support.
What OS is the server on? (and 32/64 bit UT if relevant)
chancelc
Posts: 1
Joined: Sun Jul 22, 2018 8:01 pm

Re: XC_Engine version 26 for UT v469d

Post by chancelc »

Experiencing an issue when using the botz faction commands. Botz cannot share the same skins and use Boss skins instead.
Attachments
Screenshot 2024-03-12 040944.png
Post Reply