I search for solutions in this order: Past Code, Unreal Source, Wiki, BUF, groups.yahoo, google, screaming at monitor. – RegularX

Difference between revisions of "User:00zX"

From Unreal Wiki, The Unreal Engine Documentation Site
Jump to: navigation, search
m
m (Work)
 
(180 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
__NOTOC__
 
__NOTOC__
 +
==Wiki==
 +
====General====
 +
:[[User:00zX/Setting_Up_Your_UScript_Environment|Setting Up Your UScript Environment]]
 +
====UE3====
 +
:[[User:00zX/Using_The_Unreal_Engine_3_Preprocessor|Using The Unreal Engine 3 Preprocessor]]
 +
====UE2.5====
 +
:[[UE2:Using_the_UT2004_mod_system|Using The UT2004 Mod System]]
 +
====Rants====
 +
[[User:00zX/Rants|Rants]]
  
==Proposal - Noir theme with highlighter adjustments==
+
==Work==
 
+
====Unreal Development Kit====
===Code Noir Redex===  
+
:[[User:00zX/Plugin_(UDK)|UDK: ReDeX]] ''Status:'' '''Testing'''
:stylish - userstyle -[[User:00zX|00zX]] 01:50, 3 April 2009 (UTC)
+
:''Description:'' PC Framework for UDK, its a combination of a framework and macros along with associated parser functionality.
::[[http://www.divshare.com/download/6998154-708 Monobook - noir]]
+
::''GamedGFx:''' Scaleform interface along with object saving/loading.
 +
::'''GamedEx:''' GPAK Game framework built using Redux, support for many features; round based play, archetype systems, additions to particles, materials, etc.
 +
::'''GamedCaster:''' First Person Multiplayer PvP.
  
 +
:[[User:00zX/Project Silky_(UDK)|UDK: Project Silky]] ''Status:'' '''Alpha''' (on hold)
 +
====Unreal Tournament 3====
 +
:[[User:00zX/GameDex Framework_(UT3)|UT3: GameDex Framework]] ''Status:'' '''Beta''' (on hold)
 +
::[[User:00zX/GameDex_Framework_(UT3)#Newtators (Mutator pack)|Newtators-v1.9e]] ''Status:'' '''Point Release'''
 +
::[[User:00zX/GameDex_Framework_(UT3)#Attrition (Gametype)|Attrition-v0.5pb]] ''Status:'' '''Public Beta'''
 +
====Unreal Tournament 2004====
 +
:[[User:00zX/UC2004_(UT2004)|UT2004: Unreal Championship 2004]] ''Status:'' '''Beta''' (dissolved)
 +
:[http://www.divshare.com/download/16967446-918|UT2004: Turbo Instagib] ''Status:'' '''Beta'''
 +
:[http://www.divshare.com/download/16967454-2c0|UT2004: CrapLink]] ''Status:'' '''Beta'''
 
<br>
 
<br>
==Proposal - Replication==
 
  
===Replication===
+
==Highlighters==
-[[User:00zX|00zX]] 20:49, 3 April 2009 (UTC)<br>
+
:[[Replication]] / [[Replication_(computer_science)]]
+
:Concept of servers and clients.(NetMode/Relevancy/Reliability)
+
::*''Declaring Replication'' using the [[Legacy:Replication_Block|Replication Block]]
+
::*''Function Replication'' using the replication block?
+
::* Booleans Declared in actor that are useful in replication
+
http://wiki.beyondunreal.com/Introduction_to_replication#
+
<br>
+
*NetMode (concept)
+
*Replication Block
+
**Actor Replication (bools bnetinitial eg)
+
**Variable Value Replication (using block)
+
***Repnotify / ReplicatedEvents
+
**Function call replication(UT2004)
+
*Function call replication(UT3)
+
*Reliability
+
*Relevance (actor replication??)
+
**Role and RemoteRole
+
*Info
+
**ReplicationInfo
+
***GameReplicationInfo (GRI)
+
***PlayerReplicationInfo (PRI)
+
***LinkedReplicationInfo (LRI)
+
<div class="hidden-block"><span class="hint"></span><div class="hidden">
+
===Replication Block===
+
[[UE3:Actor_(UT3)]] - link to replication block<br>
+
Previously in UT200x '''Reliable''' and '''Unreliable''' were used as part of the [[Legacy:Replication_Block|replication block]] as of [[Unreal Engine 3]] this is no longer the case with the keywords becoming [[Functions#Network_modifiers|function modifiers]].
+
  
'''UT200x'''
+
===UnrealWiki - Code Noir Redex Theme===
 
+
[[File:Monobook-noir-alpha3.gif|700px|thumb|left]]
'''replication'''
+
====Status: Beta====
'''{'''
+
To Install copy the contents of the following page into your own ''''User:[name]/monobook.css'''' page.
  ''reliable/unreliable'' '''if (''' ''replication condition'' ''')'''
+
::[[User:00zX/monobook.css]]
    ''identifiers'';
+
::[http://jigsaw.w3.org/css-validator/validator?uri=http%3A%2F%2Fwiki.beyondunreal.com%2FUser%3A00zX%2Fmonobook.css&profile=css21&usermedium=all&warning=1&lang=en W3C CSS Validator]
'''}'''
+
::[http://i10.photobucket.com/albums/a123/OlympusMons/CodeNoirRedeX.png High Resolution Image]<br>
 
+
=====Features=====
'''UT3'''
+
:Dark Theme
 
+
:High Contrast
'''replication'''
+
:Improved Readability
'''{'''
+
:Highlighter adjustments for UScript, CSS and XML
    '''if (''' ''replication condition'' ''')'''
+
:Different coloured borders per GameNameSpace
    ''identifiers'';
+
:Curved Borders in supporting browsers
'''}'''
+
=====Known Issues=====
 
+
:Edit/Input boxes are still black text on white.
: ''Identifiers'' can be of many types, certain types however arnt allowed like dynamic arrays.
+
:Profile settings page unreadable.
 
+
<br><br><br>
'''Explain Why'''
+
can loose sync! it is possible to crosscheck dynamic arrays but it would come at a cost.
+
 
+
[[http://wiki.beyondunreal.com/Dynamic_array|Dynamic Array]]
+
'''Unlike any other data type in UnrealScript, dynamic arrays have absolutely no support for replication. Attempting to replicate a dynamic array variable will have no effect on the remote instance of that variable. Attempting to use a dynamic array as parameter of a [[replicated function]] will result in the parameter being empty when the function is executed on the remote side.'''
+
 
<br>
 
<br>
====Actor Replication====
 
<br>
 
====Variable Value Replication====
 
<uscript>
 
var() float NewEquipTime;
 
var() float NewPutDownTime;
 
 
replication
 
{
 
if(bNetDirty && (Role == ROLE_Authority) && bNetInitial)
 
NewEquipTime, NewPutDownTime;
 
}
 
</uscript>
 
<br>
 
====Repnotify and Replicated Events====
 
This is new in Unreal Engine 3 and is not available in previous versions.
 
<uscript>
 
simulated event ReplicatedEvent(name VarName); // Called when a variable with the property flag "RepNotify" is replicated
 
 
/** adds/removes a property from a list of properties that will always be replicated when this Actor is bNetInitial, even if the code thinks
 
* the client has the same value the server already does
 
* This is a workaround to the problem where an LD places an Actor in the level, changes a replicated variable away from the defaults,
 
* then at runtime the variable is changed back to the default but it doesn't replicate because initial replication is based on class defaults
 
* Only has an effect when called on bStatic or bNoDelete Actors
 
* Only properties already in the owning class's replication block may be specified
 
* @param PropToReplicate the property to add or remove to the list
 
* @param bAdd true to add the property, false to remove the property
 
*/
 
native final function SetForcedInitialReplicatedProperty(Property PropToReplicate, bool bAdd);
 
</uscript>
 
=====usage:=====
 
[[UE3:DroppedPickup_(UT3)]]
 
<uscript>
 
var repnotify class<Inventory> InventoryClass; // Class of the inventory object to pickup
 
var repnotify bool bFadeOut;
 
 
replication
 
{
 
if( Role==ROLE_Authority )
 
InventoryClass, bFadeOut;
 
}
 
 
simulated event ReplicatedEvent(name VarName)
 
{
 
if( VarName == 'InventoryClass' )
 
{
 
SetPickupMesh( InventoryClass.default.DroppedPickupMesh );
 
SetPickupParticles( InventoryClass.default.DroppedPickupParticles );
 
}
 
else if ( VarName == 'bFadeOut' )
 
{
 
GotoState('Fadeout');
 
}
 
else
 
{
 
super.ReplicatedEvent(VarName);
 
}
 
}
 
 
defaultproperties
 
{
 
bOnlyDirtyReplication=true
 
NetUpdateFrequency=8
 
RemoteRole=ROLE_SimulatedProxy
 
}
 
</uscript>
 
<br>
 
====Function call replication====
 
: Like replicated variables, the replication of a function call can be tied to certain conditions. In Unreal Engine 1 and 2 this condition is specified via the replication block and typically involves comparing the actor's Role to the value ROLE_Authority, Unreal Engine 3 provides the special function modifiers client and server instead.
 
 
* Using [[Functions#Network_modifiers|Network modifiers]] for Functions
 
 
'''Reliable'''
 
'''Unreliable'''
 
 
=====Client=====
 
<uscript>
 
/** Sets the clients weapon to use the replicated variables */
 
reliable client function SetWeapProps(UTWeapon W)
 
{
 
W.EquipTime = NewEquipTime;
 
W.PutDownTime = NewPutDownTime;
 
}</uscript>
 
 
=====Server=====
 
<uscript>
 
/** Gets the times from the weapons and sets them to the replicated variables */
 
reliable server function GetWeapProps(UTWeapon W)
 
{
 
NewEquipTime = W.default.EquipTime * 0.68;
 
NewPutDownTime = W.default.PutDownTime * 0.70;
 
}</uscript>
 
 
===Relevance===
 
 
===Role and RemoteRole===
 
 
Definition
 
:The [[Actor]] class defines the NetRole enumeration and two variables, [[Role and RemoteRole]], as follows:
 
 
:*[[UE3:Actor_(UT3)#ENetRole]]
 
 
:*[[UE1:Actor_enums_(UT)#ENetMode]]
 
:*[[UE2:Actor_enums_(U2)#ENetRole]]
 
:*[[UE2:Actor_enums_(UT2003)#ENetRole]]
 
:*[[UE2:Actor_enums_(U2XMP)#ENetMode]]
 
:*[[UE2:Actor_enums_(UT2004)#ENetRole]]
 
{{category game enums|UT3|Unreal Tournament 3}}
 
 
<br>
 
<uscript>
 
enum ENetRole
 
{
 
ROLE_None, // No role at all.
 
ROLE_SimulatedProxy, // Locally simulated proxy of this actor.
 
ROLE_AutonomousProxy, // Locally autonomous proxy of this actor.
 
ROLE_Authority, // Authoritative control over the actor.
 
};
 
var ENetRole RemoteRole, Role;
 
</uscript>
 
<br>
 
====usage:====
 
Just like any other Enum really.
 
<uscript>
 
if (Role == ROLE_Authority)
 
{
 
// This is the authorative copy of this actor, it was spawned on this machine.
 
// It is not a guarantee that we are on the server or in single player!
 
}
 
 
if (Role < ROLE_Authortity)
 
{
 
// This is a non-authorative copy of this actor that was replicated
 
// from the server. In other words, we must be on a client.
 
}</uscript>
 
<br>
 
As in the replication block of Actor.uc UT3
 
<uscript>
 
// Physics
 
if( (!bSkipActorPropertyReplication || bNetInitial) && bReplicateMovement
 
&& ((RemoteRole == ROLE_SimulatedProxy) && (bNetInitial || bUpdateSimulatedPosition)) )
 
</uscript>
 
 
===NetMode===
 
Definition
 
:The [[UE3:WorldInfo_(UT3)|WorldInfo]] (previously Level Class [ut2kx]) class defines the [[UE3:WorldInfo_(UT3)#ENetMode|NetMode]] enumeration and two variables, [[Role and RemoteRole]], as follows:
 
 
:*[[UE3:WorldInfo_(UT3)#ENetMode]]
 
:**[[UE3:WorldInfo_internal_variables_(UT3)]]
 
 
:*In [[LevelInfo]] for most Unreal Engine games pre UT3/GOW
 
:**[[UE1:LevelInfo_(UT)#ENetMode]]
 
:**[[UE2:LevelInfo_(U2)#ENetMode]]
 
:**[[UE2:LevelInfo_(UT2003)#ENetMode]]
 
:**[[UE2:LevelInfo_(U2XMP)#ENetMode]]
 
:**[[UE2:LevelInfo_(UT2004)#ENetMode]]
 
 
 
<uscript>
 
var enum ENetMode
 
{
 
NM_Standalone, // Standalone game.
 
NM_DedicatedServer, // Dedicated server, no local client.
 
NM_ListenServer, // Listen server, local client+server.
 
NM_Client // Client only, no local server.
 
} NetMode;
 
</uscript>
 
 
'''Standalone game'''
 
'''Dedicated server, no local client'''
 
'''Listen server, local client+server'''
 
'''Client only, no local server'''
 
 
=====Examples=====
 
====usage:====
 
Just like any other enum really.
 
<uscript>
 
simulated event PostBeginPlay()
 
{
 
if(WorldInfo.NetMode != NM_DedicatedServer)
 
{
 
// Code here will only be executed on Listen servers and game clients.
 
}
 
 
if(WorldInfo.NetMode == NM_DedicatedServer)
 
{
 
// Code here will only be executed on a server.
 
}
 
}</uscript>
 
or similarly like in the Role and RemoteRole example:<br>
 
<uscript>
 
simulated event PostBeginPlay()
 
{
 
if (WorldInfo.NetMode < NM_DedicatedServer)
 
{
 
// Code here will only be executed on Listen servers and game clients.
 
}
 
 
if (WorldInfo.NetMode > NM_DedicatedServer)
 
{
 
// Code here will only be executed on a server or standalone client.
 
}
 
}</uscript>
 
 
 
==Useful Replication Properties==
 
 
===UT3 actor.uc===
 
<uscript>
 
// Networking flags
 
var   const bool bNetTemporary; // Tear-off simulation in network play.
 
var   const bool bOnlyRelevantToOwner; // this actor is only relevant to its owner. If this flag is changed during play, all non-owner channels would need to be explicitly closed.
 
var transient bool bNetDirty; // set when any attribute is assigned a value in unrealscript, reset when the actor is replicated
 
var bool bAlwaysRelevant; // Always relevant for network.
 
var bool bReplicateInstigator; // Replicate instigator to client (used by bNetTemporary projectiles).
 
var bool bReplicateMovement; // if true, replicate movement/location related properties
 
var bool bSkipActorPropertyReplication; // if true, dont replicate actor class variables for this actor
 
var bool bUpdateSimulatedPosition; // if true, update velocity/location after initialization for simulated proxies
 
var bool bTearOff; // if true, this actor is no longer replicated to new clients, and
 
// is "torn off" (becomes a ROLE_Authority) on clients to which it was being replicated.
 
var bool bOnlyDirtyReplication; // if true, only replicate actor if bNetDirty is true - useful if no C++ changed attributes (such as physics)
 
// bOnlyDirtyReplication only used with bAlwaysRelevant actors
 
 
 
/** Demo recording variables */
 
var transient bool bDemoRecording; /** set when we are currently replicating this Actor into a demo */
 
var transient bool bClientDemoRecording; /** set when we are recording a clientside demo */
 
var transient bool bRepClientDemo; /** set if remote client is recording a clientside demo */
 
var bool bDemoOwner; // Demo recording driver owns this actor.
 
 
/** Should replicate initial rotation.  This property should never be changed during execution, as the client and server rely on the default value of this property always being the same. */
 
var const          bool    bNetInitialRotation;
 
 
/** If true, never replicate rotation */
 
var bool bNeverReplicateRotation;
 
 
var bool bReplicateRigidBodyLocation; // replicate Location property even when in PHYS_RigidBody
 
var bool bKillDuringLevelTransition; // If set, actor and its components are marked as pending kill during seamless map transitions
 
/** whether we already exchanged Role/RemoteRole on the client, as removing then readding a streaming level
 
* causes all initialization to be performed again even though the actor may not have actually been reloaded
 
*/
 
var const bool bExchangedRoles;
 
</uscript>
 
 
 
=====booleans=====
 
* <code>(Level.NetMode == NM_Client && bNetOwner)</code> &ndash; owner clients (special case of client where the local player is the Owner of the actor in question)
 
 
'''UT2004'''
 
 
NetUpdateFrequency
 
 
NetUpdateFrequency is another variable useful in replication. It effectively causes an otherwise relevant (not useful when the actor is not relevant) actor to be relevant NetUpdateFrequency times per second. This is useful when the data changes frequently but you only want periodic updates. For example, PlayerReplicationInfo contains a lot of data about the client. Stuff like the various player's pings may change quite frequently, and having the client keep track of such information would be quite a network hog. But since PlayerReplicationInfo has a NetUpdateFrequency of 2, it is only updated twice a second, which is much nicer for that player's bandwidth. The list of the current NetUpdateFrequency's for all UT classes are listed below:
 
 
Actor - 100 Hz (times per second)<br>
 
ZoneInfo - 4 Hz<br>
 
GameReplicationInfo - 4 Hz<br>
 
PlayerReplicationInfo - 2 Hz<br>
 
Inventory - 8 Hz<br>
 
 
:*[[UE3:ReplicationInfo_(UT3)]]
 
::*[[UE3:GameReplicationInfo_(UT3)]]
 
::*[[UE3:PlayerReplicationInfo_(UT3)]]
 
::*[[UE3:UTLinkedReplicationInfo_(UT3)]]
 
 
 
===Related Topics===
 
* [[Legacy:Introduction_To_Replication|Introduction To Replication]]
 
* [[Legacy:Replication|Replication]]
 
* [[Legacy:Replication Block|Replication Block]]
 
* [[Legacy:Role|Role]] and RemoteRole, and [[Legacy:NetMode|NetMode]]
 
* [[Legacy:Netcode Idioms|Netcode Idioms]]
 
* [[Legacy:Replication Examples|Replication Examples]]
 
* [[Legacy:Replication_De-Obfuscation|Replication De-Obfuscation]]
 
 
</div></div>
 
 
==Proposal==
 
 
===Foo===
 
-[[User:00zX|00zX]] 21:31, 29 March 2009 (UTC)
 
====Bar====
 
:[[UE3:Object_static_native_functions_(UT3)]]
 
:[[Legacy:Object_(UT3)/Operators]]
 
:[[Legacy:Operators]]
 
:[[Legacy:Scripting_Operators]]
 
:[[Legacy:Iterator]]
 
:[[Variables#Modifiers]]
 
<br>
 
==Wiki==
 
 
===Contributions===
 
:*[[UE2:Using_the_UT2004_mod_system|Using the UT2004 Mod System]]
 
  
===Contact Me===
+
==Contact Me==
======IRC======  
+
====IRC====  
MonsOlympus on [irc://irc.enterthegame.com EnterTheGame]
+
_00zX on [irc://irc.enterthegame.com EnterTheGame]
 
;* [irc://irc.enterthegame.com/unrealscript #unrealscript on EnterTheGame]
 
;* [irc://irc.enterthegame.com/unrealscript #unrealscript on EnterTheGame]
;* [irc://irc.enterthegame.com/unrealwiki #unrealwiki on EnterTheGame]
+
;* [irc://irc.enterthegame.com/beyondunreal #beyondunreal on EnterTheGame]
;* [irc://irc.enterthegame.com/unrealed #unrealed on EnterTheGame]
+
_00zX on [irc://irc.gamesurge.net GameSurge]
;* [irc://irc.enterthegame.com/chaoticdreams #chaoticdreams on EnterTheGame]
+
;* [irc://irc.irc.gamesurge.net/udkc #udkc on GameSurge]
  
======Other/Profiles======
+
====Other/Profiles====
 
[[Special:Emailuser/00zX|E-mail 00zX]] or on
 
[[Special:Emailuser/00zX|E-mail 00zX]] or on
;* [http://delicious.com/00zX delicious]
+
;* MonsOlympus @ [www.pastebin.org]
;* [http://photobucket.com/00zX Photobucket]
+
  
 
--------<br>
 
--------<br>

Latest revision as of 09:15, 8 December 2012

Wiki

General

Setting Up Your UScript Environment

UE3

Using The Unreal Engine 3 Preprocessor

UE2.5

Using The UT2004 Mod System

Rants

Rants

Work

Unreal Development Kit

UDK: ReDeX Status: Testing
Description: PC Framework for UDK, its a combination of a framework and macros along with associated parser functionality.
GamedGFx:' Scaleform interface along with object saving/loading.
GamedEx: GPAK Game framework built using Redux, support for many features; round based play, archetype systems, additions to particles, materials, etc.
GamedCaster: First Person Multiplayer PvP.
UDK: Project Silky Status: Alpha (on hold)

Unreal Tournament 3

UT3: GameDex Framework Status: Beta (on hold)
Newtators-v1.9e Status: Point Release
Attrition-v0.5pb Status: Public Beta

Unreal Tournament 2004

UT2004: Unreal Championship 2004 Status: Beta (dissolved)
Turbo Instagib Status: Beta
CrapLink] Status: Beta


Highlighters

UnrealWiki - Code Noir Redex Theme

Monobook-noir-alpha3.gif

Status: Beta

To Install copy the contents of the following page into your own 'User:[name]/monobook.css' page.

User:00zX/monobook.css
W3C CSS Validator
High Resolution Image
Features
Dark Theme
High Contrast
Improved Readability
Highlighter adjustments for UScript, CSS and XML
Different coloured borders per GameNameSpace
Curved Borders in supporting browsers
Known Issues
Edit/Input boxes are still black text on white.
Profile settings page unreadable.





Contact Me

IRC

_00zX on EnterTheGame

_00zX on GameSurge

Other/Profiles

E-mail 00zX or on

  • MonsOlympus @ [www.pastebin.org]