XC_Engine version 25 for UT v469a

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

XC_Engine version 25 for UT v469a

Post by Higor »

XC_Engine - XC_GameEngine extension for UT99 v469a 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 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:
Spoiler
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.
Attachments
XC_Engine_Full_25.7z
(720.78 KiB) Downloaded 255 times
User avatar
esnesi
Godlike
Posts: 1018
Joined: Mon Aug 31, 2015 12:58 pm
Personal rank: Dialed in.

Re: XC_Engine version 25 for UT v469a

Post by esnesi »

Here we go! I was waiting for this, thanks alot!
Mainly because of: https://www.oldunreal.com/cgi-bin/yabb2 ... 1581976084 (on the first bugreport page)
In short: Serverpackages in the MVE mapvote are being loaded in incorrectly on 469.
It shows symptoms of not listed serverpackages at all, example: no weaponmodels, no hitbeams, no hud elements, etc.
This works correctly with, or without XC on 451.

I've removed every previous XC file and entry on my 469test.
Moved the files over, and started XC_Enable.bat, without errors.
I noticed this doesn't create a [XC_Engine.XC_GameEngine] entry with serverpackages.

I get this error when starting the server;

Code: Select all

Critical: FMallocAnsi::Realloc
Critical: 0077006F 46 FArray
Critical: FArray::Realloc
Critical: 23*2
Critical: UXC_Level::Listen
Critical: Listen
Critical: UXC_GameEngine::LoadMap
Critical: LocalMapURL
Critical: UGameEngine::Browse
Critical: UGameEngine::Init
Critical: UXC_GameEngine::Init
Critical: UServerCommandlet::Main
When placing the [XC_Engine.XC_GameEngine] with all the packages&actors manually, i get the same result.

*edit, i got it to work, not sure how because i've only rebooted because of updates lol.
I can't replicate this error anymore now.
Good ol' reboot
Curious about the cause of that error still though.


And YES, all the packages in MVE load correctly now with XC25. :mrgreen: :mrgreen:
Still not sure why it doesn't without XC.
Weird MVE doesn't like 469 without XC.
Last edited by esnesi on Thu Sep 24, 2020 6:43 pm, edited 1 time in total.
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: XC_Engine version 25 for UT v469a

Post by sektor2111 »

Yesterday a local game start worked fine.
Today I'm getting this and so I cannot use it:

Code: Select all

Log: Log file open, 09/24/20 08:15:20
Critical: NetTasks
Critical: UXC_GameEngine::LoadMap
Critical: UGameEngine::Init
Critical: UXC_GameEngine::Init
Critical: InitEngine
I don't get these NetTasks - I attempted a local Practice. If I well recall I did not see XC_Core version in the top menu bar as it was in v24.
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: XC_Engine version 25 for UT v469a

Post by Higor »

Hmm, try setting bAutoCompressLZMA=True and see what happens.

Edit: Yeah, I broke XC_Engine when bAutoCompressLZMA=False :facepalm: .
You'll want to keep that enabled until the next round of updates (UT + XC), it should have no effect on local games tho.
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: XC_Engine version 25 for UT v469a

Post by sektor2111 »

I must ask something for a potential future release.
Do you have any plans for a builder inside XC_EditorAdds for manipulating reachSpecs like UGold has ?

This means: Modify, Create, Delete - three simple things using probably a custom node usable temporary (like Scout) until work it's done.
For me it's time consuming throwing map in UGold (even removing extra UT assets bugging Editor) and doing changes, and importing back UT things. It would be easier to have these in UT directly, perhaps other few people would learn more.
User avatar
asosed
Adept
Posts: 277
Joined: Fri May 15, 2020 2:36 pm
Location: Russia
Contact:

Re: XC_Engine version 25 for UT v469a

Post by asosed »

this release is compatible with patch 469a only? Or will it work with patch 451?
Image
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 version 25 for UT v469a

Post by Chamberly »

asosed wrote: Mon Oct 05, 2020 4:42 pm this release is compatible with patch 469a only? Or will it work with patch 451?
for v469a as in the title. :tu:
Image
Image
Image Edit: Why does my sig not work anymore?
User avatar
gust
Novice
Posts: 14
Joined: Thu Jul 31, 2014 1:16 pm

Re: XC_Engine version 25 for UT v469a

Post by gust »

ucc server DM-Deck16][ ini=UTServer.ini port=8888
Image
port parameter does not work.
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: XC_Engine version 25 for UT v469a

Post by Higor »

gust wrote: Wed Oct 07, 2020 4:35 pm
ucc server DM-Deck16][ ini=UTServer.ini port=8888
Image
port parameter does not work.
Fixed and improved for v469b
https://github.com/CacoFFF/XC_IpDrv/com ... 8e958800af
Che
Novice
Posts: 5
Joined: Tue Oct 20, 2020 8:52 pm
Personal rank: AS Mapper

Re: XC_Engine version 25 for UT v469a

Post by Che »

I think a "Select All" function in the " Search for Actors" tool would be handy at some points.
Attachments
search.jpg
Che
Novice
Posts: 5
Joined: Tue Oct 20, 2020 8:52 pm
Personal rank: AS Mapper

Re: XC_Engine version 25 for UT v469a

Post by Che »

It would be handy, if the direction arrow would be also affected by the draw scale rate.
Attachments
arro.jpg
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: XC_Engine version 25 for UT v469a

Post by sektor2111 »

See what is about double posting during 24 hours first.

I'm not getting these requests - we have a context menu for "SelectAll" and a builder like MapGarbage does a more extended selection: class based (including child classes), tag based (for making changes for vary reasons).
Bigger DrawScale for actors usually hidden in game time - May I ask why ? Except SP Coop and MH mapping I really don't see a reason for screwing DrawScale except lightning or decorations, not hidden actors which Player doesn't need to see neither want to see. Also these can be translucent making directional arrow visible disregarding DrawScale.
By example if I cannot see well things in Editor I'm putting on my glasses or I'm using groups, hiding or un-hiding whatever eye-bugger group.

My two cents here.
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: XC_Engine version 25 for UT v469a

Post by Higor »

At one point I'll start a UED plugin system for v469, and I'll obviously add some in XC_Engine.
With that said, the plugin system could work as mutators would except that you'd enable/disable them from a menu and you'd be able to recompile/configure without problems.
Altering search results, PostRender calls on viewports would be some of many features.
Post Reply