Skins und Models per ServerPackage zum Client bringen.
Informationen wie man Skins & Models über ServerPackages verteilen kann.

Unreal Tournament 2003/4 Tutorial
Original by :Joseph M. Wilcox
http://unreal.epicgames.com/UT2003/tutorials/push/

Beschreibung:
Da einige ServerAdmins sich wunderten, das in UT200x kein Custom Skin Model mehr zum Client gesendet wird, wie es in UT99 üblich war,
wurde in der Version 2186 eine andere Variante eingeführt, als es bekannt war.
Wenn Spieler A auf einen Server connected, sendet dieser Spieler A seine Playerinformationen.
Es werden an jeden Spieler diese Daten zugesendet, damit jeder Spieler auch den Skin sieht, den Spieler A benutzt.
Haben die anderen Spieler den Skin von Spieler A nicht, setzt UT200x einfach das StandardModel hin.
Wird nun bei Spieler B die gleichen SpielerDaten von Spieler A gefunden, sieht derjenige den Skin auch, ansonsten nicht.
Dieses Tutorial wird sich damit beschäftigen, wie man einen Skin oder Model vom Server zum Client weiterleitet.

Einfacher Skin zum Client bringen:
Wir benutzen hier einmal den Skin ChaosChickUT2k3.
Wir starten erst einmal mit einem normalen, nicht multiplen Skin.
Zuerst brauchen wir den Skin ChaosChickUT2k3, entpacken Ihn.
Erstelle nun 2 neue Ordner in deinem UT200x.
(UT200x/ChaosChickMod und UT200x/ChaosChickMod/Classes)
Der "MOD" Ordner muss immer den Namen des Skins/Models beinhalten.
Öffne deine UT200x.ini, suche nach [Editor.EditorEngine] und schreibe nun als letztes EditPackages=ChaosChickMod dazu.

Was tun wir da.
Wir müssen nun eine Basis erstellen, auf dem ein .U Paket aufbaut.
Öffne mit Notepad die ChaosChick.upl, um die Beschreibung des Skins zu bekommen.

Schritt 1: Erstelle ein u. Package das eine einzelne PlayerRecordClass für jeden Charakter, der in der Skin oder Model .upl definiert ist.
Schritt 2: Füge jede .u Datei in die Package Liste deines Servers hinzu.
Schritt 3: Stelle sicher das jede benötigte Quelldatei in den ServerPackage Listen erwähnt sind.

Fallstudie Beatrice:
Ok, wir haben einen Überblick, sehen wir nun wie das Model konvertiert werden muss um es zu laden.
Installiere das Beatrice Model auf deinem Server oder Computer.
Öffne die Beatrice.upl, und schaue dir die Charakterbeschreibung für Beatrice an.
In unserem Beispiel definiert die .upl Datei drei Charaktere Beatrice, Flora und Florence.
Das bedeutet das für jeden Charakter eine seperate .u Datei erstellt werden muss,
um jeden Charakter verfügbar zu machen, in diesem Fall 3 Stück.

Einstellen der Serverpackages:
Für das Beatrice Model müssen drei Unterkategorien in der UT200x Hauptkategorie erstellt werden.
BeatriceMod, FloraMod und FlorenceMod.
In jeder dieser Kategorien muss wiederum eine Unterkategorie erstellt werden,
welche die Unrealscript Definition der PlayerRecordClass des Charakters enthält.
Öffne nun Deine UT200x.ini, suche die Sektion [Editor.EditorEngine] und trage dort in ide
EditPackages Liste Deine drei Mods ein:

[Editor.EditorEngine]
EditPackages=BeatriceMod
EditPackages=FloraMod
EditPackages=FlorenceMod

Für alle die nicht mit dem Unrealscript vertraut sind, nun muss die Basis hergestellt werden, die benötigt wird um eine .u Datei zu erstellen.
Es ist nun an der Zeit die Class Definierung zu kreieren. Somit wirst Du nun zu einem 'Scripter'.
In der Classes Unterkategorie eines jeden Package musst Du eine .uc Datei erstellen,
welche die Script Definition der PlayerRecordClass Struktur für jeden einzelnen Charakter enthält.
Beginnen wir mit der Erstellung der RecordPlayerClass für den Charakter Beatrice.
In der BeatriceModClasses erstelle die Datei Beatrice.uc.
Im Unrealscript muss der Name der .uc Quelldatei mit dem Namen der Class die definiert wird übereinstimmen.
Zum Laden der Datei muss der Name der Class mit dem Charakter übereinstimmen den sie repräsentiert.
Die PlayerRecordClass beinhaltet Variablen, die für alle Daten stehen die man über die .upl einsetzen kann.
Schau Dir das anhand von Beatrice an.
-----------------------------------------------------------------------------
class Beatrice extends PlayerRecordClass;
defaultproperties
{
	Species=class'XGame.SPECIES_Merc'
	MeshName="Beatrice.Beatrice_Female"
	BodySkinName="BeatriceSkins.Beatrice.BeatriceSkin"
	FaceSkinName="BeatriceSkins.Beatrice.Pulseline"
	Portrait=Material'BeatriceSkins.Beatrice.BeatricePortrait'
	TextName="XPlayers.Default"
	Sex="Female"
	Menu="SP"
}
-----------------------------------------------------------------------------
Schau nach, ob Du jeden Eintrag passend zum Gegenstück in der .upl Datei findest.
Wenn die .uc PlayerRecordClasses für jeden Charakter erstellt ist, müssen diese compiliert werden.
In Deinem UT-System Directory führst Du das Kommando 'ucc make' aus.
Das wird die neuen Packages compilieren und die BeatriceMod.u, FloraMod.u und die FlorenceMod.u erstellen.
Sollte einmal der Fall eintreten das die Dateien erneut compliert werden müssen,
oder Du Änderungen einbringen willst und sie danach neu compilierst, stelle sicher das bereits vorhandene .u Dateien vorher gelöscht sind.

Einstellen des Servers:
Wenn Deine Packages compiliert sind, muss dem Server nur noch mitgeteilt werden, das er die Packages zum Client schiebt.
Dazu öffne Deine Server.ini Datei und füge unter [Engine.GameEngine] alle notwendigen Serverpackages hinzu.
Für Beatrice sollten die Zeilen folgendermassen aussehen:
ServerPackages=Beatrice
ServerPackages=BeatriceSkins
ServerPackages=BeatriceMod
ServerPackages=FloraMod
ServerPackages=FlorenceMod

Und das wars.
Server neu Starten, und danach sollte er die Models zu jedem Client schicken der connected.

Schlussanmerkung:
Denke daran das auf diese Weise die Models nur zum Client geschoben werden, und dort temporär über den Cache verfügbar sind.
Sie werden nicht beim Client installiert. Der Spieler wird nicht in der Lage sein den Skin/Model in seinen Settings auszuwählen oder zu benutzen.
Als Admin solltest du die Möglichkeit eines Downloads anbieten, wahlweise über die MOTD.
Auch kann ein Model zum senden recht anmutende Grössen erreichen, weshalb es teilweise sinnvoller wäre,
dem Server das Laden zum Client nur bei User mit grosser Bandbreite zu gestatten.
