My program doesn't have bugs. It just develops random features.

Difference between revisions of "User:00zX"

From Unreal Wiki, The Unreal Engine Documentation Site
Jump to: navigation, search
(Proposal - Setting Up jEdit for UScripting, initial idea layed down for a tutorial of sorts.)
m (Work)
 
(125 intermediate revisions by the same user 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]]
  
==Works in Progress for Unreal Engine 3==
+
==Work==
<br>
+
====Unreal Development Kit====
===Project: Silky (UDK)===
+
:[[User:00zX/Plugin_(UDK)|UDK: ReDeX]] ''Status:'' '''Testing'''  
====Status: Pre-Alpha (prototype)====
+
:''Description:'' PC Framework for UDK, its a combination of a framework and macros along with associated parser functionality.
'''Perspective/Camera:''' Top Down<br>
+
::''GamedGFx:''' Scaleform interface along with object saving/loading.
'''Type/Style:''' Arcade Shooter<br><br>
+
::'''GamedEx:''' GPAK Game framework built using Redux, support for many features; round based play, archetype systems, additions to particles, materials, etc.
'''Controls/Movement:'''<br>
+
::'''GamedCaster:''' First Person Multiplayer PvP.
:'''Dodging:''' Barrel Roll left/right
+
:'''Afterburner:''' Extra Speed
+
'''Weapons:'''<br>
+
:'''Pulse Plasma-Gun:''' Varying degrees of upgrades, TBA
+
:'''Missiles:''' Sidewinder, AMRAAM, SRAAM, etc
+
:'''Rail-Gun:''' Assault, Penetrate (slower)
+
:'''Energy Net:''' Snare
+
 
+
====Description====
+
The idea behind this project was to make something simple, fun and enjoyable. I looked at alot of indy games before coming up with this concept, audiosurf, braid, geometry wars. Eventually I settled on making something similar to one of my favourite arcade games which was macross plus. I remember back then and telling myself there wasnt enough of those top down shooters but honestly even back then perhaps I had ideas mulling around in my skull on what could make a fun top down shooter.<br>
+
The gameplay will revolve around the player being in control of a fighter jet, much like 1942, macross plus or overkill. You'll pickup weapon upgrades of various types, fly through canyons, through cities and other environments yet to be decided. There will be a variety of enemies you encounter along the way with the traditional boss battles.<br>
+
I just got bored with the whole "lets make a badass FPS/TPS" coming from alot of people, dont get me wrong I love those games as well but as a developer/modder working on/with those types of projects for over 10yrs it was time to move on and try my hand at something new and perhaps inspired. Maybe that was it, I was just lacking the inspiration which in turn showed on my motivation when working on those types of projects. Ive made major progress in short time (thanks to all your help guys big shout out to the #unrealscript channel, you know who ya are ;) ).<br>
+
Currently Im tackling the projectile/weapon upgrade system, I'll certainly keep this updated on my progress, being a one man project till this hits anywhere near beta Im hoping things will go smoothly. There wont be any logistical issues with team members, team members leaving and taking their work with them or anything to that effect. Basically this is a one man show and this project was chosen partly because of that, its simple enough that 1 multi-talented person could pull it off in a decent enough timeframe. The only external help I'll need is in regards to sound and music, which I could do myself but Id like to keep it quality and I have a specific sound Im after to keep it within the classic arcade feel.<br>
+
  
====How Arcade is too much?====
+
:[[User:00zX/Project Silky_(UDK)|UDK: Project Silky]] ''Status:'' '''Alpha''' (on hold)
Well I really miss those times sinkin 20c or $ coins into mortal kombat, super offroad or hell even tekken 3, fighting vipers and SCUD racer. I really want to grasp that back in a big way with this project, Im going to try for an authentic revist in almost every detail while bringing things into the new age in terms of graphics and technology. One thing I would like to explore from my youth is system link much like the game gears but with bluetooth. Id like to go the whole hog, high scores, demo intro and even an insert coin screen instead of the well known "press START".<br>
+
====Unreal Tournament 3====
<br>
+
:[[User:00zX/GameDex Framework_(UT3)|UT3: GameDex Framework]] ''Status:'' '''Beta''' (on hold)
Thats about it, like I said I'll keep this page updated with all my code progress ;)
+
::[[User:00zX/GameDex_Framework_(UT3)#Newtators (Mutator pack)|Newtators-v1.9e]] ''Status:'' '''Point Release'''
<br><br>
+
::[[User:00zX/GameDex_Framework_(UT3)#Attrition (Gametype)|Attrition-v0.5pb]] ''Status:'' '''Public Beta'''
===GameDex: Framework (UT3)===
+
====Unreal Tournament 2004====
====Status: Alpha 4 (testing)====
+
:[[User:00zX/UC2004_(UT2004)|UT2004: Unreal Championship 2004]] ''Status:'' '''Beta''' (dissolved)
'''Repository:''' [http://github.com/00zX/GameDex GameDex @ GitHub]<br><br>
+
:[http://www.divshare.com/download/16967446-918|UT2004: Turbo Instagib] ''Status:'' '''Beta'''
'''Download:''' [http://www.filefront.com/14535753/GameDex_AllGDP_DodgyAlpha_150909.rar/ GameDex_AllGDP_DodgyAlpha_150909.rar]<br>
+
:[http://www.divshare.com/download/16967454-2c0|UT2004: CrapLink]] ''Status:'' '''Beta'''
'''Download:''' [http://www.filefront.com/14535759/UT-GameDex-Src-150909.rar/ UT-GameDex-Src-150909.rar]<br>
+
 
+
====Description====
+
*Okay so I'll just waffle alittle here and see what comes out about what I was trying to achieve with this.
+
 
+
*For starters I was never a fan of the one class/mutator does everything approach as I like to keep things modular and interconnecting, I noticed inherent problems with Unreal Engines mutator system (as you all would have at one point or another) so I went about starting to hook through it and creating a new system which could actually replace the system especially now we have the UDK at our disposal.
+
 
+
**The initial ideas and concepts from this project came about while I was working on the '''Newtators''' mutator pack and '''Attrition''' gametype, eventually these projects and some of the major functionality was rolled into '''Gamedex''' as it provided a more modular approach and allowed me to reuse alot of said functionality easier.
+
 
+
**Basically things like the '''FactoryReplacer''' class became a '''foundation class''' and an intergral part of the '''Gamedex'''.
+
 
+
*A Note here about the UDK is that it doesnt contain the [[UE3:GameRules_(UT3)|Gamerules]] class.
+
 
+
*Either way this system would need to be implemented at a [[UE3:GameInfo_(UT3)|GameInfo]] level to provide the appropriate hooks to [[UE3:UT_MDB_GameRules|UT_MDB_GameRules]] which I achieved through the use of a wrapped class [[UE3:UT_GR_Info|UT_GR_Info]] which does nothing but send the hooks from [[UE3:GameInfo_(UT3)|GameInfo]]->[[UE3:GameRules_(UT3)|Gamerules]] into the new system.
+
 
+
*Since the new system is totally reliant on [[UE3:Object_(UT3)|Object]]'s I suspect that its better on system performance and will be dealt with by the internal garbage collection system. These objects can be initialized at any time and for any number of actors, for instance since all damage is hooked through one function one can prune the unwanted actors rather than searching for the specific actors you want to apply a rule to. The rules are meant to be simple as in the vampire mutator, which gives players a portion of the damage they deal back in health. Any number of players could be affected by this, for a duration or globally for the entire match. Mutators dont really allow this kind of control, they can but I believe the front end for interfacing with this system would be much more intuitive.
+
 
+
*This is where I hit my first major hurdle as I wanted to provide a UI similar to 2k4's for adjusting mutator settings, maybe even extending that to allow server admins to interface with the modules on the fly whilst connected to their server.
+
 
+
*Im pretty happy with the results so far but its been a slow arduous journey, I recommend you take a look at [[UE3:UTM_BloodLust|UTM_BloodLust]] for an overview in code of what I was trying to achieve through all of this.
+
-[[User:00zX|00zX]] 14:40, 21 January 2010 (UTC)
+
<br>
+
<br>
+
 
+
====Project Class Tree====
+
*[[UE3:Interface_(UT3)|Interface]]
+
**'''[[UE3:iObjectList_(UT3)|iObjectList]]'''
+
 
+
*[[UE3:Object_(UT3)|Object]]
+
**[[UE3:Actor_(UT3)|Actor]]
+
***[[UE3:Info_(UT3)|Info]]
+
****[[UE3:GameRules_(UT3)|Gamerules]]
+
*****'''[[UE3:UT_GR_Info_(UT3)|UT_GR_Info]]'''
+
****[[UE3:Mutator_(UT3)|Mutator]]
+
*****[[UE3:UTMutator_(UT3)|UTMutator]]
+
******'''[[UE3:UT_MDB_GameExp_(UT3)|UT_MDB_GameExp]]'''
+
*******'''[[UE3:UTM_BloodLust_(UT3)|UTM_BloodLust]]'''
+
**'''[[UE3:UT_MDB_(UT3)|UT_MDB]]'''
+
***'''[[UE3:UT_MDB_FactoryReplacer_(UT3)|UT_MDB_FactoryReplacer]]'''
+
***'''[[UE3:UT_MDB_GameRules_(UT3)|UT_MDB_GameRules]]'''
+
****'''[[UE3:UT_MDB_GR_DmgConversion_(UT3)|UT_MDB_GR_DmgConversion]]'''
+
*****'''[[UE3:UT_MDB_GR_GlobalDamage_(UT3)|UT_MDB_GR_GlobalDamage]]'''
+
*****'''[[UE3:UT_MDB_GR_Vampire_(UT3)|UT_MDB_GR_Vampire]]'''
+
******'''[[UE3:UT_MDB_GR_Bloodlust_(UT3)|UT_MDB_GR_Bloodlust]]'''
+
***'''[[UE3:UT_MDB_ObjectList_(UT3)|UT_MDB_ObjectList]]'''
+
<br>
+
 
+
====Naming Convention====
+
:The over all name for the project '''Gamedex''' was a play on words, being part nod to UnCodex and extension from my Noir Highlighter theme code named Redex, which inturn was inspired by Epic/DE's use of Redux in UT2k4.
+
::Basically I see it as a 3rd full revision, with Newtators and Attrition being the first two. Upon closer inspection you'll see it says 'Gamed-ex' :)
+
:It actually took me awhile to settle on a naming convention for these packages and classes.
+
:Eventually I settled on appending '''UT_''' as a prefix to designate that it was a modification for [[Unreal Tournament 3|UT3]].
+
:The '''MDB''' is just an acronym to set the project apart incase I ever have other projects where I have similar named classes.
+
:: The beauty of using an acronym for projects is you can have multiple versions/branches of the same project on the same tree without conflicting class names.
+
:: Not only that but you can also develop classes and diff/merge the results based on the requirements for such projects.
+
:: As in Epic's base source code all classes have fixed names, so while you might be using 1 version of GameRules if that class changes you might get errors which cascade.
+
:: With this system you can work from one class say '''MDB''' as in the example, yet develop another which we'll call '''MDA''' all while keepin on the same class tree.
+
:The '''UT_GDP''' designates any package which requires '''UT_GameDex''' and '''UT_MDB'''.
+
<br>
+
====Project Package Tree====
+
*'''UT_MDB'''- This package contains buffers (empty classes to keep the tree clean) and classes which extend UT3's for things like bNoDelete=true spawning.
+
**'''UT_GameDex''' - Main package containing all the base functionality classes.
+
***'''UT_GDP_Newtators''' - Is one of my mutator packages.
+
***'''UT_GDP_Mutatoes'''
+
<br>
+
====Initial Prototypes====
+
=====Newtators (Mutator pack)=====
+
'''Download:''' [http://www.fileplanet.com/188371/180000/fileinfo/Unreal-Tournament-3---Newtators-v1.9e Newtators-v1.9e]<br><br>
+
'''Description:''' Well this started out as just a way for me to make some stuff that I would have liked in UT3 such as
+
a few remakes of Epic's classic muts included across other UT games, acouple were taken from options also.
+
It grew into something much larger, the idea has always been to keep the pack as small and tight as I can
+
providing quality mutators with compatibility between them all.I ended up adding a few customs things after
+
I got done with a few of the remakes and things evolved from there, alot of stock assets have been reused
+
and remixed to create some extended gameplay.<br><br>
+
'''Mutators:'''<br>
+
'''Agile''' - Adds dodge-jump, wall-dodge-jump and removes the delay on jumps, dodges or jumps with smaller falls.
+
 
+
'''Bloodlust''' - Replaces the UDamage with a Red Vampyric version which allows you to suck health from damaged enemies.
+
You are not allowed to pickup health while using this powerup but you can get up to 199 from sucking
+
enemies health.
+
 
+
'''Booster''' - Replaces the Berserk Powerup with a new Booster Powerup. It gives the player health every 10 seconds,
+
it raises the health cap to 199/299 and allows you to pickup health to reach the cap quicker. Once
+
it has depleted your health will slowly drip back to normal levels
+
 
+
'''Dual Enforcers''' - Gives you dual enforcers on spawn.
+
 
+
'''Energy Leech''' - Leeches a percentage of the Shields/Armour from damaged players or vehicles and gives it back to you. (UI)
+
 
+
'''Extra Self Damage''' - Players take more damage from their own shots.
+
 
+
'''Fast Weapon Switch''' - Weapons switch faster.
+
 
+
'''Hardcore''' - Like UT's Harcore option this raises all damages to 125% of their original.
+
 
+
'''Hoarding''' - Lets you choose which items players can pickup and which they cant when they already have the maximum. (UI)
+
 
+
'''No Double Jump''' - Removes double jumping and adds a single higher jump, wall dodging is still enabled, also allows
+
you to walk so you dont activate the jump boots when single jumping much like UT.
+
 
+
'''No Health Pickups''' - Removes all health pickups from the game.
+
 
+
'''No Super Weapons''' - Removes all super weapons from the game.
+
 
+
'''Quad-Jump Boots''' - Spawns new jump boot pickups which gives the user limit charges to perform quad jumps. This allows
+
you to do many jump combinations like wall-dodge-double-jumps.
+
 
+
'''Speed Boots''' - Spawns speed boot pickups instead of jump boots. When picked up these boots increase the players speed
+
dramatically for 30 seconds.
+
 
+
'''Strong Vehicles''' - Makes all vehicles stronger vs most damage types. Vehicles are still similarly damaged from crashes and falls.
+
 
+
'''SuperBots''' - Will make Bots deal more damage to Human players.
+
 
+
'''Translocator''' - Will add the Translocator to Deathmatch or Team Deathmatch.
+
 
+
'''Vampire''' - A percentage of damage done to enemies will be given back to you in health. This health is shown on the screen so
+
you know how much you have received. This also allows the option for vehicles to take a percentage of damage from other
+
vehicles. (UI)
+
 
+
'''Vehicle Replacer''' - Allows you to choose which vehicles to replace and with what. It also has an option for per map settings which is
+
accessible from the config files. (UI)
+
 
+
'''Vehicle Team Swap''' - Allows you to set Red/Blue to use Necris/Axon vehicles regardless of the map defaults. It also has an option for
+
per map settings which is accessible from the config files. (UI)
+
 
+
=====Attrition (Gametype)=====
+
'''Download:''' [http://www.fileplanet.com/188428/180000/fileinfo/Unreal-Tournament-3---Attrition-v0.5pb Attrition-v0.5pb.rar]<br><br>
+
'''Description:''' The idea behind this gametype was a war of attrition so everything featured is geared towards that. To win though you have to make a kill with every weapon once, you start with all weapons and they are removed from your inventory as you make a kill with them. Suicides will return a weapon back to your inventory unless it is already full. There is a catch, you have unlimited ammo and all pickups are removed except, Jumpboots, Vials, Armour, Shields and the Keg.
+
 
+
In this gametype frags dont really matter a great deal, except they are a way to get rid of your weapons!
+
 
+
This gametype is best suited for lower player counts, around the 2-4 range is really good but anywhere between 2-8 should make for good matches as it really does depend on the size of the map and how many rounds you want to play.
+
<br><br>
+
'''Features:'''<br>
+
'''Health/Armour Degen''' - after these are picked up they start to wear in, then over time they wear out and break down. Wear only occurs over 100 health and always on armour.
+
 
+
'''Round Based Play''' - at the moment it only supports winning the match by getting to the rounds won, so if you win 3 rounds, in any order first, you are the winner. More victory conditions are on their way though, like playing out an amount of rounds no matter what and the player with the most wins at the end is the winner.
+
 
+
'''Anti-Camper''' - This was put in because of the unlimited ammo, keeps people moving and makes the matches faster especially 1 on 1 matches. Since there is no time limit this was almost a requirement.
+
 
+
'''Tweaked Music''' - To give more of an action feel the music was tweeked so it ramps up alot more.
+
 
+
'''Tweaked HUD''' - Alot of the excess text was removed from the hud as well as tweaking to make it fit with the gametype. I will be updating this so people can customize alittle more and reallow acouple of the default options.
+
 
<br>
 
<br>
  
Line 180: Line 32:
  
 
===UnrealWiki - Code Noir Redex Theme===  
 
===UnrealWiki - Code Noir Redex Theme===  
[[File:Monobook-noir-alpha3.gif|500px|thumb|left]]
+
[[File:Monobook-noir-alpha3.gif|700px|thumb|left]]
====Status: Alpha 9 (testing)====
+
====Status: Beta====
 
To Install copy the contents of the following page into your own ''''User:[name]/monobook.css'''' page.
 
To Install copy the contents of the following page into your own ''''User:[name]/monobook.css'''' page.
 
::[[User:00zX/monobook.css]]
 
::[[User:00zX/monobook.css]]
::[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://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]
<br>
+
::[http://i10.photobucket.com/albums/a123/OlympusMons/CodeNoirRedeX.png High Resolution Image]<br>
 
=====Features=====
 
=====Features=====
*Dark Theme
+
:Dark Theme
*High Contrast
+
:High Contrast
*Improved Readability
+
:Improved Readability
*Highlighter adjustments for UScript and CSS
+
:Highlighter adjustments for UScript, CSS and XML
*Different coloured borders per GameNameSpace
+
:Different coloured borders per GameNameSpace
*Curved Borders in supporting browsers
+
:Curved Borders in supporting browsers
<br><br>
+
 
=====Known Issues=====
 
=====Known Issues=====
*Edit/Input boxes are still black on white
+
:Edit/Input boxes are still black text on white.
*interwiki links are wrong blue colour and dont have hoverover colours
+
:Profile settings page unreadable.
 +
<br><br><br>
 
<br>
 
<br>
  
===Pastebin - Code Noir Redex Theme===  
+
==Contact Me==
====Status: Alpha 1====
+
====IRC====  
[[http://www.divshare.com/download/10252709-ac5 Stylish User theme]]
+
_00zX on [irc://irc.enterthegame.com EnterTheGame]
 
+
;* [irc://irc.enterthegame.com/unrealscript #unrealscript on EnterTheGame]
 
+
==Proposal - Setting Up jEdit for UScripting==
+
===Setting Up jEdit for UScripting===
+
Step by step process of installing, setting up jEdit for use with Uscript. From start to finish, using/commiting to repository's and building using Apache Ant.<br>
+
====Highlighter / Mode====
+
jEdit highlighters are in xml format..
+
 
+
====Recommended Plugins====
+
*Project Viewer: Usability.
+
*Buffer Tabs: Usability.
+
*Dirty Gutter: Diff.
+
*TaskList: TODO, NOTE, FIXME's
+
*Text Autocomplete: Usability - Code Completion.
+
*Ant Plugin: Build script for UDK with ant.
+
*WhiteSpace: Usability/Readability.
+
 
+
=====Others=====
+
Code folding
+
 
+
====Extra's====
+
Installing and using Git, show how to push repository to GitHub.<br>
+
Using Ant to package a release, both compressed file and Nsis2.0. (Using the UDK installer?)<br>
+
 
+
=====Ideas=====
+
Using Ant scripts to commit to git repository.<br>
+
 
+
==Proposal - Replication==
+
 
+
===Replication===
+
====Status: On Hold====
+
-[[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'''
+
 
+
'''replication'''
+
'''{'''
+
  ''reliable/unreliable'' '''if (''' ''replication condition'' ''')'''
+
    ''identifiers'';
+
'''}'''
+
 
+
'''UT3'''
+
 
+
'''replication'''
+
'''{'''
+
    '''if (''' ''replication condition'' ''')'''
+
    ''identifiers'';
+
'''}'''
+
 
+
: ''Identifiers'' can be of many types, certain types however arnt allowed like dynamic arrays.
+
 
+
'''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>
+
====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]]
+
<nowiki>{{category game enums|UT3|Unreal Tournament 3}}</nowiki>
+
 
+
<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>
+
<br>
+
 
+
==Wiki==
+
 
+
===Contributions===
+
:*[[UE2:Using_the_UT2004_mod_system|Using the UT2004 Mod System]]
+
 
+
===Contact Me===
+
======IRC======
+
00zX on [irc://irc.enterthegame.com EnterTheGame]
+
 
;* [irc://irc.enterthegame.com/beyondunreal #beyondunreal on EnterTheGame]
 
;* [irc://irc.enterthegame.com/beyondunreal #beyondunreal on EnterTheGame]
;* [irc://irc.enterthegame.com/unrealscript #unrealscript on EnterTheGame]
+
_00zX on [irc://irc.gamesurge.net GameSurge]
;* [irc://irc.enterthegame.com/unrealwiki #unrealwiki 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://www.filefront.com/user/00zX filefront]
+
;* MonsOlympus @ [www.pastebin.org]
;* [http://delicious.com/00zX delicious]
+
;* [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]