Skip to content
This repository was archived by the owner on Jul 15, 2023. It is now read-only.

Commit a768736

Browse files
committed
XC_Engine 21 documentation and installer update
1 parent bc1bfd1 commit a768736

22 files changed

+890
-1
lines changed

System/NexgenXCGE_01.u

3.84 KB
Binary file not shown.

System/XC_Disable.bat

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
@echo off
2+
cls
3+
4+
echo Status previous to uninstallation:
5+
ucc XC_Setup -nohomedir *engine *netdriver *editor
6+
7+
echo Disabling all components:
8+
ucc XC_Setup -nohomedir -engine -netdriver -editor

System/XC_Disable_nohome.sh

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
echo Status previous to uninstallation:
2+
./ucc-bin XC_Setup -nohomedir *engine *netdriver
3+
4+
echo Disabling all components:
5+
./ucc-bin XC_Setup -nohomedir -engine -netdriver

System/XC_Enable.bat

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
@echo off
2+
cls
3+
4+
echo Status previous to installation:
5+
ucc XC_Setup -nohomedir *engine *netdriver *editor
6+
7+
echo Enabling all components:
8+
ucc XC_Setup -nohomedir +engine +netdriver +editor

System/XC_Enable_nohome.sh

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
echo Status previous to installation:
2+
./ucc-bin XC_Setup -nohomedir *engine *netdriver
3+
4+
echo Enabling all components:
5+
./ucc-bin XC_Setup -nohomedir +engine +netdriver

XC_Engine/AutoCacheConverter.txt

+54
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
=========================
2+
Automatic cache converter
3+
=========================
4+
5+
The Automatic cache converter is a simple setting that allows the client to copy
6+
files delivered by the current server it's connected to into the package folders
7+
with correct names and cases.
8+
9+
The file copy operations occur immediately after loading the map on a remote
10+
server and new files will be placed into the first directory that matches the
11+
file system criterias.
12+
13+
All file copy operations will be logged and won't replace existing files.
14+
15+
16+
======
17+
Usage:
18+
19+
This option is disabled by default, you must enable it in order for it to work.
20+
Set XC_GameEngine.bCacheConvertAtJoin=True.
21+
22+
- The option can be modified via INI as follows
23+
[XC_Engine.XC_GameEngine]
24+
bCacheConvertAtJoin=True
25+
26+
- Or via a command:
27+
SET XC_GAMEENGINE bCacheConvertAtJoin 1
28+
29+
30+
=========
31+
Examples:
32+
33+
- Copying downloaded files into default folders
34+
[Core.System]
35+
Paths=../System/*.u
36+
Paths=../Maps/*.unr
37+
Paths=../Textures/*.utx
38+
Paths=../Sounds/*.uax
39+
Paths=../Music/*.umx
40+
41+
- Copying downloaded files into a common folder
42+
[Core.System]
43+
Paths=../Downloaded/*.u
44+
Paths=../Downloaded/*.unr
45+
Paths=../Downloaded/*.utx
46+
Paths=../Downloaded/*.uax
47+
Paths=../Downloaded/*.umx
48+
Paths=../System/*.u
49+
Paths=../Maps/*.unr
50+
Paths=../Textures/*.utx
51+
Paths=../Sounds/*.uax
52+
Paths=../Music/*.umx
53+
-> Make sure you create the folder you're going to use!!
54+

XC_Engine/Framerate limiter.txt

+45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
=================
2+
Framerate limiter
3+
=================
4+
5+
XC_Engine can now signal the game launcher that the framerate must be kept at
6+
a specific value, adding a much needed frame limiter for non-server instances.
7+
There are three advantages to this:
8+
9+
-- Conformance to engine specifications:
10+
The framerate is limited between 4 to 200, which are the minimum and
11+
maximum ranges the level's internal update allow.
12+
This for example prevents the game from running too fast at over 200 fps.
13+
14+
-- Usability:
15+
All the user has to do is use the command FPS in console to either view or
16+
specify the desired framerate, this lets the user quickly adjust the
17+
framerate in the same way it can be done in other games.
18+
19+
-- Solve renderer technical issues:
20+
Some of the new renderers have a framerate limiter implemented on them,
21+
the problem is that they need to reimplement all the timing functions in
22+
order to do that, and in most of cases these timing functions use RTDSC
23+
which can cause speed issues in multicore CPU's.
24+
On the other side the old renderers don't implement any form of limiter,
25+
this can potentially make the game go over the 200 fps cap.
26+
27+
=========================
28+
29+
By adding an Engine controlled framerate limit (as it is with servers)
30+
both launchers and renderers need not to do anything other than what they
31+
were intended to do, while the engine dictates what the FPS limit is.
32+
33+
If you're migrating your config and you have a renderer with a previously
34+
set FPS limit, you'll need to set it back to 0 (no limit) on the renderer
35+
and then launch the game using XC_Engine and set the limit using the
36+
"FPS" command in your game console as follows:
37+
38+
FPS -> displays current framerate limit
39+
FPS n -> sets framerate limit to 'n' (4-200)
40+
FPS 0 -> disables frame limiter (equivalent to 200)
41+
42+
The FPS limit is saved in your UnrealTournament.ini under
43+
44+
[XC_Engine.XC_GameEngine]
45+
ClientFramerateLimit=0

XC_Engine/PreLogin_NexgenXCGE.txt

+62
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
==============================
2+
NexgenXCGE server actor readme
3+
==============================
4+
5+
=============
6+
Installation:
7+
8+
Requires XC_GameEngine.
9+
On the Server/Game main ini:
10+
11+
[XC_Engine.XC_GameEngine]
12+
ServerActors=NexgenXCGE_01.NexgenXCGE_PreLogin
13+
14+
If you don't have a XC_GameEngine entry, copy it from GameEngine instead of making a new one or ugly things happen.
15+
16+
17+
===========
18+
Description
19+
20+
This PreLoginHook actor will allow the IP component of Nexgen bans to reject players
21+
before they even get to load the map, just like default ip bans.
22+
The ban reason is also displayed on the client's Log.
23+
24+
In theory, all versions of Nexgen and NexgenABM should be supported.
25+
26+
This is extremely useful for saving server resources and keeping those
27+
able to bypass NexgenABM bans out.
28+
29+
30+
====================================
31+
PreLogin hook Description for coders
32+
33+
This is a PreLoginHook actor, it autoregisters itself to XC_GE's PreLoginHooks list and
34+
gains the ability to interfere with a player's PreLogin function.
35+
36+
How does this happen?
37+
38+
event PreLogin( string Options, string Address, out string Error, out string FailCode)
39+
{
40+
//default code here
41+
...
42+
//what the hook does after the default code
43+
int i=0;
44+
while ( i < XC_GameEngine->PreLoginHooks.Num()
45+
XC_GameEngine->PreLoginHooks(i)->PreLoginHook( Options, Address, Error, FailCode);
46+
}
47+
48+
This allows every hooked actor to alter the Error and FailCode values with simple unrealscript code.
49+
The only requirements are to register the actor with the following console command:
50+
51+
event PostBeginPlay()
52+
{
53+
ConsoleCommand("PreLoginHook "$GetItemName( string(self) ) );
54+
}
55+
56+
And to implement this function as you see it right here (register will fail otherwise):
57+
58+
event PreLoginHook( string Options, string Address, out string Error, out string FailCode)
59+
{
60+
... //Your code here
61+
}
62+

XC_Engine/Readme.txt

+179
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,179 @@
1+
XC_Engine - XC_GameEngine extension for UT99 by Higor.
2+
3+
4+
===========
5+
Setting up:
6+
===========
7+
** REQUIRES AT LEAST XC_CORE VERSION 8
8+
Place XC_Engine files in your ~UT/System/ directory.
9+
10+
/** Auto-installer scripts
11+
12+
Run XC_Enable.bat/XC_Enable_nohome.sh scripts in order to auto-config XC_Engine stuff
13+
The scripts will enable the engine, net driver and editor addons.
14+
15+
See "XC_Setup.txt" for more info.
16+
**/
17+
18+
In case the above fails, or a different setup is needed, follow these steps.
19+
The new GameEngine we want to load has to be specified in UnrealTournament.ini (or it's server equivalent) as follows.
20+
21+
[Engine.Engine]
22+
;GameEngine=Engine.GameEngine
23+
GameEngine=XC_Engine.XC_GameEngine
24+
;NetworkDevice=IpDrv.TcpNetDriver
25+
NetworkDevice=XC_IpDrv.XC_TcpNetDriver
26+
27+
Be adviced, when editing ServerPackages and ServerActors in a XC_Engine server, find the [XC_Engine.XC_GameEngine] entry!!!
28+
Either remove it (and apply on GameEngine), or apply the changes on said (XC_GameEngine) entry instead.
29+
30+
Safe to use in v436-v451, and on ACE servers since most hacks are reverted during online sessions.
31+
In v436 Linux, make sure you're using the Core.so build that exports "_9__Context.Env" symbol.
32+
Just avoid AnthChecker servers until they have whitelisted this binary.
33+
34+
35+
=================
36+
Features:
37+
=================
38+
39+
- Global
40+
Version 451 GET and SET command functionality + overflow crashfix.
41+
Makes several properties from native only classes visible to UnrealScript, player commands and edit windows (win32). Below table for more info.
42+
Collision Grid replacing the old hash, loaded from CollisionGrid (.dll/.so)
43+
Cleaner map switch by nulling out potentially dangerous actor references to the main level.
44+
Lower memory usage and faster map cleanup on long games by recycling actor names.
45+
Log file size reduction by grouping log spam and displaying how much log messages repeat.
46+
47+
- Server
48+
Moving Brush Tracker in Dedicated servers (movers block visibility checks), specific maps can be ignored.
49+
Various exploits patched, see "Server exploits.txt" for more info.
50+
New Relevancy loop code, see "Relevancy loop.txt" for more info.
51+
Enhanced coop/SP games in online play, see "TravelManager.txt" for more info.
52+
Ability to send maps marked as 'no download'.
53+
LZMA autocompressor can be run on a separate thread as soon as a map is loaded.
54+
(Experimental) Sliding player bug workaround by reordering the package order, putting textures last.
55+
56+
- Server / Player ** these are selectively disabled upon joining a server **
57+
Runtime UnrealScript/Native function replacer plus existing premade replacements (bugfixes, optimizations).
58+
Big collection of new native functions to use, check the UnrealScript source for documentation.
59+
XC_Core natives have their numbered opcodes enabled for use without package dependancy.
60+
Thread safe memory allocator (if not running XC_Launcher)
61+
62+
- Linux
63+
Server/Client communication no longer borks strings with non-standard characters.
64+
Added SIGSEGV and SIGIOT handlers, crash logs display the call history almost like windows UT.
65+
66+
- Editor:
67+
Enhanced navigation network builder, see "XC_PathBuilder.txt" for more info.
68+
New Unreal Editor addons added to the brush builder pane.
69+
70+
- Client / Player:
71+
Built-in framerate limiter, see "Framerate limiter.txt" for more info.
72+
Ingame cache converter, see "AutoCacheConverter.txt" for more info.
73+
Prevents servers from using 'Open' and 'ClientTravel' commands to open local files on the client.
74+
Clients no longer send options 'Game' and 'Mutator' in their login string.
75+
In most cases of package mismatch when joining, clients will load/download from other sources instead of failing to connect.
76+
More info displayed during file download: amount of files, data pending installation.
77+
78+
79+
=================
80+
XC_IpDrv
81+
Enhanced Net Driver and file downloaders.
82+
=================
83+
Net Driver:
84+
- ICMP unreachable exploit patched.
85+
- Connection limit, kills dataless connections.
86+
87+
HTTP LZMA file downloader.
88+
- (Experimental) Can connect to redirects via proxy.
89+
90+
91+
================
92+
Extra commands.
93+
Check other documentation files for more commands.
94+
================
95+
- EditObject Name=Objectname Skip=skipcount
96+
Client, Win32 only.
97+
Brings up a property editor dialog of an object with a specified name.
98+
Skip= is optional and can be used to bring up a newer objects with said name.
99+
100+
Example: "EditObject Name=MyLevel Skip=1" Brings up play level's XLevel properties.
101+
Example: "EditObject Name=MyLevel" Brings up Entry level's XLevel properties.
102+
103+
- DumpObject Name=Objectname
104+
Dumps object in question's memory block into a file (with the object's name), only dumps the first object with matching name.
105+
If the object is a UFunction, then it will also save a file name FUNCTIONDATA.bin with the script code (serialized TArray<BYTE>).
106+
107+
- LogFields Name=classname
108+
Logs all of the UnrealScript visible properties of the specified class, with property flags, offset, size and array count.
109+
Boolean properties have their bitmask info logged instead of array size.
110+
111+
- LogClassSizes Outer=packagename(optional)
112+
Prints in log a huge list of classes and their size in memory.
113+
If the Outer=packagename parameter isn't used (or fails), it will print all classes's sizes.
114+
115+
- ToggleTimingFix - TimingFix
116+
Toggles the timing fix on/off.
117+
Timing fix is enabled by default and is saved in [XC_Engine.XC_GameEngine] config entry.
118+
119+
- ToggleDebugLogs - DebugLogs
120+
Toggles additional logging, for developers.
121+
Disabled by default, saved in [XC_Engine.XC_GameEngine] config entry.
122+
123+
- ToggleRelevancy - ToggleRelevant
124+
Requires bUseLevelHook.
125+
Toggles XC_Level relevancy loop on net servers, see "Relevancy loop.txt" for details.
126+
127+
- TimeFactor
128+
Displays the Time Manager's current time scaler, if active.
129+
Values other than 1 (or approximate) indicate that XC_Engine is the one responsible
130+
for keeping your game running at normal speed.
131+
132+
133+
===================
134+
Exposed properties:
135+
===================
136+
Additional properties are now visible on certain native classes and their subclasses, these increase the potential functionality of servers and clients running mods coded to access them via GetPropertyText() or GET commands.
137+
See "Relevancy loop.txt" for extra properties in Actor.
138+
= CLASS -> CPP_PropertyName -> UScript_PropertyName (type) (flags)
139+
140+
- GameEngine -> GLevel -> Level (Level) (const, editconst)
141+
- GameEngine -> GEntry -> Entry (Level) (const, editconst)
142+
- DemoRecDriver -> DemoFileName -> DemoFileName (string) (const, editconst)
143+
- LevelBase -> NetDriver -> NetDriver (obj NetDriver) (const, editconst)
144+
- LevelBase -> DemoRecDriver -> DemoRecDriver (obj NetDriver) (const, editconst)
145+
- LevelBase -> Engine -> Engine (obj Engine) (const, editconst)
146+
- LevelBase -> URL.Protocol -> URL_Protocol (string) (const, editconst)
147+
- LevelBase -> URL.Host -> URL_Host (string) (const, editconst)
148+
- LevelBase -> URL.Port -> URL_Port (int) (const, editconst)
149+
- LevelBase -> URL.Map -> URL_Map (string) (const, editconst)
150+
- LevelBase -> URL.Op -> URL_Options (array<string>) (const, editconst)
151+
- LevelBase -> URL.Portal -> URL_Portal (string) (const, editconst)
152+
- LevelBase -> Actors.Num() -> ActorListSize (int) (const, editconst)
153+
- Level -> iFirstDynamicActor -> iFirstDynamicActor (int) (const, editconst)
154+
- Level -> iFirstNetRelevantActor -> iFirstNetRelevantActor (int) (const, editconst)
155+
- NetDriver -> ClientConnections -> ClientConnections (array<obj NetConnection>) (const, editconst)
156+
- NetDriver -> ServerConnection -> ServerConnection (obj NetConnection) (const, editconst)
157+
158+
====================================
159+
Functions patched/hooked in runtime:
160+
====================================
161+
See XC_Engine_Actor and XC_Engine_UT99_Actor for a full list of script patches.
162+
163+
Additionally this hook still remains forced by internal code:
164+
UWindowList.Sort -> Super fast, doesn't crash practice session when map count exceeds ~4000
165+
166+
=================
167+
Credits:
168+
=================
169+
I would like to thank my fellow betatesters
170+
- Chamberly
171+
- ~V~
172+
- Nelsona
173+
- SC]-[LONG_{HoF}
174+
- $carface (and the legions of Siege apes)
175+
- AnthRAX
176+
- SicilianKill
177+
178+
And all of Cham's development server visitors for the help in bugfixing this.
179+
And to the website owners where I downloaded very educational sample codes of Unreal Engine 2 and 3 (lol!)

0 commit comments

Comments
 (0)