GameObjects
Aus PantheonWiki
GameObjects sind alle Gegenstände, Personen und allgemein Dinge mit denen man interagieren kann.
Beispiele umfassen:
- Der eigenen Char
- Ein Heiltrank
- Eine Tür
- Ein Wolf
Inhaltsverzeichnis |
GameObjects definieren
Vorlagen für GameObjects werden in einer gof-Datei definiert. Gof steht hierbei für GameObjectFile. Diese Dateien befinden sich unter <modulverzeichnis>/dsa.
Hier eine Beispiel-Definition:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<GameObjectDefinitions>
<gameobjectclass classid="apple" baseclass="Item">
<property name="name" type="STRING" data="Apfel"/>
<property name="description" type="STRING" data="Ein leckerer Apfel"/>
<property name="meshfile" type="STRING" data="apple.mesh"/>
<property name="geometrytype" type="STRING" data="ellipsoid"/>
<property name="mass" type="REAL" data="0.30"/>
</gameobjectclass>
</GameObjectDefinitions>
Jede GameObject-Vorlage ist in einen gameobjectsclass-Tag eingefasst. Der Tag hat mindestens zwei Attribute, classid und baseclass.
- classid ist der eindeutige Bezeichner für die Art der GameObjects, in diesem Fall apple. Das ist der Name, den man später angeben muss um ein Apfel-Objekt zu erzeugen und zu benutzen.
- baseclass beschreibt die Art des Objektes. Zu den unterschiedlichen Arten siehe unten. [XXX-Referenz]
Innerhalb des gameobjectclass-Tags sind die Properties (Eigenschaften) definiert. Eine Property ist im Grunde ein Schlüssel/Wert-Paar. Die hier angegebenen Werte kann man später per Skript auslesen und verändern. Mehr zu Properties gibt es hier. Je nach der baseclass sind verschiedene Properties anzugeben.
Die verschiedenen Arten von GameObjects
Die Engine muss GameObjects nach gewissen Maßstäben unterscheiden können, da nicht für jedes GameObject jede Aktion möglich sein soll. z.B soll man ein Tor nicht einstecken können, einen Apfel aber schon. Gegen einen Apfel kann man keinen Kampf beginnen, wohl aber gegen einen Wolf. Deshalb sind GameObjects in unterschiedliche Kategorien eingeteilt, die deren Wesen erfassen.
Das sind im einzelnen:
- GameObject: Alles was feststehend in der Welt platziert ist und man zumindest ansehen kann ist ein GameObject, dazu gehören Türen, Schalter usw. Wesentliche Attribute sind:
- name: Der Anzeigename des Objektes.
- description: Der Text der angezeigt wird, wenn man das Objekt anschaut.
- meshfile: Name des Meshfiles, das dieses Objekt repräsentiert.
- geometrytype: Die Art des Physik-Proxies, der die Kollision bestimmt.
- Item: Items sind bewegliche Gegenstände, die man auch einpacken kann. Items sind auch GameObjects, haben also alle Properties, die GameObjects haben. Zusätzlich aber auch:
- mass: Die Masse des Objektes in Kilogramm.
- size: Zahlenpaar für die Anzahl der belegten Slots in einem Container, horizontal und vertikal.
- imagename: Das Bild, das für das Icon dieses Gegenstandes verwendet werden soll. Gemeint ist der cegui-Name in der Form "set:<ImageSetName> image:<Bildname>"
- Weapon
- TODO
- Creature
- TODO
- Person
- TODO
GameObjects platzieren
GameObjects per Skript platzieren
Um den oben beschriebenen Apfel in die Szene zu platzieren:
apple = $GOM.createGameObject("apple")
apple.placeIntoScene()
apple.setPosition(rel_pos([x, y, z]))
Der erste Befehl erzeugt einen Apfel gemäß der Vorlage "apple" aus der gof-Datei. Man kann aus einer Vorlage auch mehrere gleichartige Objekte erzeugen. Der zweite Befehl platziert den Apfel in der Szene, der dritte setz in an eine bestimmte Position. Die letzten beiden Befehle kann man auch in anderer Reihenfolge aufrufen. Die Vorgehensweise funktioniert für alle Arten von GameObjects, also auch für Personen.
GameObjects in einer rlmap-Datei platzieren
<gameobject id="100" class="apple" state="IN_SCENE"> <position x="32" y="0" z="-10"/> </gameobject>
Dieser Tag in der rlmap-Datei erzeugt einen Apfel aus der apple-Vorlage und setzt ihn an die entsprechende Stelle. Dieser <gameobject>-Tag ist nicht mit <gameobjectclass>-Tag aus der gof-Datei zu verwechseln. <gameobjectclass> liefert eine Vorlage für Objekte, das <gameobject> ist ein konkretes Objekt erzeugt von einer Vorlage.
