XC_Engine version 25b for UT v469b

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

XC_Engine version 25b for UT v469b

Post by Higor »

XC_Engine - XC_GameEngine extension for UT99 v469b 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.

Safe to use in v469b, 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.
Adds ability to edit Renderer, Audio, Net Driver settings from Preferences menu.


====================
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 25b:
Spoiler
Path rebuilder will now only prune paths if reachability is similar or worse.
Fixed crash when the LZMA autocompressor is disabled.
Fixed LZMA autocompressor not deleting local caches.
Property objects now have UnrealScript visibility for: PropertyFlags, ArrayNum, Enum (byteproperty)

Editor: Removed S3TC actions from texture property window (reimplemented in v469b)

Video, Audio and Network subsystems can now be setup via XC_Engine's preferences tab.

[XC_IpDrv] Fixed port command line not working.
[XC_IpDrv] Multihome command now binds to more than one address (separate by commas)
[XC_IpDrv] Added support for HTTPS redirect (via Curl)

Bots no longer get stuck in the elevators in CTF-High
Added experimental savegame system for coop/sp games.
- Controlled by option bEnhancedSaveGames under [XC_Engine.XC_GameEngine]
- Use "SaveGame NAME" to save.
- Use "LoadGame NAME" to load.
- Use "LoadGameServer NAME" to load as net server.
- Save files are stored in "UnrealTournament/Save/*.usx"
* Note: this feature hasn't been tested in all coop gametypes!!
* Note2: you should not try different ServerPackages/ServerActor settings when loading games.
* Please report any crashes (and send the save file to me).
You do not have the required permissions to view the files attached to this post.
User avatar
sektor2111
Godlike
Posts: 6435
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: XC_Engine version 25b for UT v469b

Post by sektor2111 »

The good thing is that I can reduce paths scan range of XC Paths Builder at desired value... Why reducing paths scan range ? Well... Because...

The bad thing is that XC is forcing some paths perhaps for whatever aliens from planet Zork or whatever imaginary travel of imaginary A.I. pawns.
The Paths shown in image are NEVER DONE by Epic's Boys just because plain Bot is skating here and cannot roam like that. At least I'll have less things to clean up if range is reduced somewhere at 1200 1300.
WierdOrWonderful.PNG
These items were mapper's choice. I don't find a good idea moving them and screwing original design. I'd rather prefer to avoid creating paths over these spots... How do I get rid of that invalid jumper route ? It doesn't make any sense. If I want a jumpy way there is JumpSpot and all those related combos, and not forcing a rat-hole.
These are the real calculations...
TheRealPaths.PNG
Okay, down there distance is bigger than 1000 but it's not about plain fields, it's about complex geometry where XC does X times more jerky specs than original devs which requires manual washing and time.
You do not have the required permissions to view the files attached to this post.
SC]-[WARTZ_{HoF}
Adept
Posts: 427
Joined: Tue Feb 21, 2012 7:29 pm

Re: XC_Engine version 25b for UT v469b

Post by SC]-[WARTZ_{HoF} »

So you are saying you have to work harder to get your final results. Feedback is what helps the most for future dev. You might think about joining discord or OldUnreal so you can actually help for future patches Nels.
Image
Image
Image
User avatar
sektor2111
Godlike
Posts: 6435
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: XC_Engine version 25b for UT v469b

Post by sektor2111 »

I don't know if Devs coders could not see these and it is needed extra feed back - results are the same everywhere. X times I manually deleted reachSpecs using 227 because UT has nothing for removing navigation abominations - IF 227 won't ruin Textures for D3D render and later it's needed to fix them back with 469, a lot of work for data which could be wiped directly from UT. At a moment it doesn't worth wasting time this way, I'd rather prefer XC21 even if that one has another issue at InventorySpot but I know how to easily get over it.
User avatar
Que
Inhuman
Posts: 812
Joined: Mon Dec 09, 2019 5:49 am
Personal rank: ...

Re: XC_Engine version 25b for UT v469b

Post by Que »

Tried installing today got the following error in the logs;

Code: Select all

=======================================
ucc.exe: UnrealOS execution environment
Copyright 1999 Epic Games Inc
=======================================

Executing Class Engine.ServerCommandlet
Failed to load "Class XC_Engine.XC_GameEngine": Object not found: Class XC_Engine.XC_GameEngine.
Object not found: Class XC_Engine.XC_GameEngine
appError called:
Object not found: Class XC_Engine.XC_GameEngine
Executing UObject::StaticShutdownAfterError
Object not found: Class XC_Engine.XC_GameEngine

History: UObject::SafeLoadError <- UObject::StaticLoadClass <- UServerCommandlet::Main

Exiting due to error
Exiting.
[2021-03-26 19:31:41] ucc.init: restarting because pid died
[2021-03-26 19:31:41] ucc.init: soft-stop
[2021-03-26 19:31:41] ucc.init: Rotating logs...
Running Latest 469b and Linux.
all i done was uploaded all files to System folder & update the entries in [engine.engine] and started server.
is there something i'm missing?
*Join our Discord Here.*
Our mods - MVX , SSB , SmartWFL , UTCmds , BotCommands , Smart Stats , join/leave announcer , NoSmoke , UTLogin , BrightSkins , Server Tran…
*Our Servers
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: XC_Engine version 25b for UT v469b

Post by Higor »

Try running a 'ldd' command on the XC_Engine libraries (including Cacus.so) to see what dependencies you're missing
User avatar
sektor2111
Godlike
Posts: 6435
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: XC_Engine version 25b for UT v469b

Post by sektor2111 »

Oh well, I did not set yet a server 469b XC25b but... I hope something will be clarified toward touching reachspecs and ZERO-ing them...
Today I wasted a few hours for figuring this - never crashed when I used ONLY BOTS, but Monsters are... Monsters.

Code: Select all

Critical: APawn::TraverseFrom
Critical: APawn::TraverseFrom
Critical: APawn::TraverseFrom
Critical: APawn::TraverseFrom
Critical: APawn::TraverseFrom
Critical: APawn::TraverseFrom
Critical: APawn::TraverseFrom
Critical: APawn::TraverseFrom
Critical: APawn::TraverseFrom
Critical: APawn::TraverseFrom
Critical: APawn::TraverseFrom
Critical: APawn::TraverseFrom
Critical: APawn::TraverseFrom
Critical: APawn::TraverseFrom
Critical: APawn::TraverseFrom
Critical: APawn::TraverseFrom
Critical: APawn::TraverseFrom
Critical: APawn::findRandomDest
Critical: UTSkaarjRipper0.PickDestination
Critical: AActor::ProcessState
FindRandomDest which I was thinking to implement in Bots (for being active even without items) looks a bit evil. A bit evil becomes MORE EVIL when it does a bunch of calls to TraverseFrom and does whatever reachspecs deal... When these reachSpecs are having None None 0 0 0 0 and are many like that nullified result is shown above. First time I suspected other things but nah, when 227 is deleting reachspecs there are reasons to do that instead of leaving them with null data, because ALL games concerning ScriptedPawn will not be healthy here. When a reachSpec exists is should be valid and not Start=None End=None collision set to zero or else they are not excepted from being processed, this is only a cheap hazardous solution which I'm disagree... It's why map filtered and cleaned with 227 won't do damage. I'm hoping that 469+ and future XCGE will DELETE reachspecs and not keeping them "inactive" for nothing and processing calculations for the sake of processing - it's ridiculous...

I created scenario by putting on "None-Zero" around 100 reachSpecs - only PrunedPaths. XC did not have support for deleting them...

Yes, when 227 is deleting a reachspec, remaining specs are re-indexed/re-numbered and all it needs is relocating in Network. For C++ this is easily doable without increasing iterations cycles. If I could do this in UScript, then C++ has definitely this capability of remapping them during an eye blink.
I'm curious how much are these changed in 469 - if are changed.
Either way I'd rather prefer to copy data from another reachSpec creating a duplicate with other reachFlags or such instead of leaving them EMPTY. These empty junks are doing CRITICAL DAMAGE - bad idea. I think I'll rewrite my tool paths destroyer other way Not none but copying data from previous or next reachSpec or from first or last reachSpec... , I think this is the deal for plain UT and not other way...

Perhaps I need to setup a small testing tool, a Human-Monster roaming emulator...

Edit: YEP, Now I have confirmed that reachSpecs should not be EMPTY in Monster Games EVER. Technically unwanted ones can be adjusted at long ranges, impossible reachFlags such as 80 ( R_PlayerOnly and R_Door ) and long distances such as 4096. First found Spec in first Navigation chain will deliver Start and End and this can be copied in all those "Empty", then Removing them from references. Allow Engine to process craps causing any monster to pick its Random Destination in Normal conditions - will get over lousy specs taking good ones in account and normal routes without pruning routes.
Crashes have been vanished.
User avatar
kaneder
Novice
Posts: 23
Joined: Sun Apr 11, 2021 3:43 pm

Re: XC_Engine version 25b for UT v469b

Post by kaneder »

I wanted to say that I installed this version on another PC in the home today and got this error when joining any game through the browser:

Code: Select all

Log: Log file open, 05/12/21 16:40:32
Critical: FMallocAnsi::Realloc
Critical: 005C0074 46 FArray
Critical: FArray::Realloc
Critical: 23*2
Critical: UNetPendingLevel::UNetPendingLevel
Critical: NetworkURL
Critical: UGameEngine::Browse
Critical: ClientTravel
Critical: UGameEngine::Tick
Critical: UXC_GameEngine::Tick
Critical: UpdateWorld
Critical: MainLoop
The log mentioned that I was missing a file, which I found in this thread: viewtopic.php?f=64&t=12687 ... it fixed my problem. I don't know if it was a coincidence, but the XC_IpServerFix.u was missing and now it's working as normal again.
User avatar
sektor2111
Godlike
Posts: 6435
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: XC_Engine version 25b for UT v469b

Post by sektor2111 »

XC_EditorAdds 25b will create PrunedPaths over defined "MaxDistance" overloading ReachSpecs with no use as they don't fit in Lists - more useless data. I think PrunedPaths should follow the same "MaxDistance" parameter in my logic, and they are created even if bFastPrune it's False - I did paths in X+Y maps without PrunedPaths and nothing goes wrong at all, they are not mandatory.