This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
z:objekte [2007/07/24 20:26] cabalistic angelegt |
z:objekte [2015/08/23 13:59] (current) |
||
---|---|---|---|
Line 3: | Line 3: | ||
===== Gameplay-Werte ===== | ===== Gameplay-Werte ===== | ||
- | Schaden, Hitpoints etc. Alle Zahlenwerte müssen als Integer repräsentiert | + | Schaden, Hitpoints etc. Aus Gründen eines deterministischen Spielverlaufs muss dafür Sorge getragen |
- | Für Schaden würde ich vorschlagen, | + | Für Schaden würde ich vorschlagen, |
Line 11: | Line 11: | ||
* Objektbezeichner (string) - interner Identifizierer für den Objekttyp | * Objektbezeichner (string) - interner Identifizierer für den Objekttyp | ||
* Objekttyp (string) - Neutral, Robot, Fahrzeug, Gebäude, Geschütz | * Objekttyp (string) - Neutral, Robot, Fahrzeug, Gebäude, Geschütz | ||
- | * Hitpoints (int) - 0 für unsterblich | + | * Hitpoints (decimal) - 0 für unsterblich |
- | * Panzerung | + | * Anfälligkeit |
- | * Bounding Radius (int) - Begrenzungskreis bestimmt, welchen Platz die Einheit auf dem Terrain einnimmt (für Wegfindung/ | + | * Bounding Radius (decimal) - Begrenzungskreis bestimmt, welchen Platz die Einheit auf dem Terrain einnimmt (für Wegfindung/ |
* Hit Boxes (Quader) - Hitzonen für die Waffenprojektile, | * Hit Boxes (Quader) - Hitzonen für die Waffenprojektile, | ||
+ | |||
+ | |||
==== Roboter und Fahrzeuge ==== | ==== Roboter und Fahrzeuge ==== | ||
- | * max. Geschwindigkeit (int) | + | * max. Geschwindigkeit (decimal) |
- | * max. Turnspeed (int) | + | * max. Turnspeed (decimal) |
* (Beschleunigung? | * (Beschleunigung? | ||
* Schadenstyp (int) - wie oben beschrieben | * Schadenstyp (int) - wie oben beschrieben | ||
- | * Schadenswert (int) - wie viel Schaden die Einheit vom Schadenstyp anrichtet | + | * Schadenswert (decimal) - wie viel Schaden die Einheit vom Schadenstyp anrichtet |
- | * Schwankung Schaden (int) - Absolutwert der Schwankung des Schadens (falls gewünscht) | + | * Schwankung Schaden (decimal) - Absolutwert der Schwankung des Schadens (falls gewünscht) |
- | * Fahrer treffen (int) - Wahrscheinlichkeit, | + | * Fahrer treffen (decimal) - Wahrscheinlichkeit, |
- | * Schussgeschwindigkeit (int) - Bzw. eigentlich | + | * Schussgeschwindigkeit (int) - die Dauer eines Schussvorgangs(dabei sollte die Animationsgeschwindigkeit angepasst werden). In Gameticks |
- | * Projektilgeschwindigkeit | + | * Zeitpunkt des Projektilaustritts |
- | * Projektiltyp | + | * Schusspause |
- | * Projektilgröße | + | * Projektil |
- | * Splash Damage | + | * Reichweite (decimal) - Waffenreichweite |
- | * Reichweite (int) - Waffenreichweite | + | |
* zum Schießen stehen? (bool) - Einheit kann nur im Stehen feuern | * zum Schießen stehen? (bool) - Einheit kann nur im Stehen feuern | ||
- | * min/max horizontaler Winkel der Waffe (int) - Wie weit kann die Waffe in der Horizontalen gedreht werden? | + | * min/max/ |
- | * min/max vertikaler Winkel der Waffe (int) - Wie weit kann die Waffe in der Vertikalen gedreht werden? | + | * min/max/ |
- | * Drehgeschwindigkeit der Waffe (int) - Wie schnell dreht sich die Waffe? | + | * Drehgeschwindigkeit der Waffe (decimal) - Wie schnell dreht sich die Waffe? |
- | * Reparaturgeschwindigkeit | + | * Anzahl Rohre pro Schuss |
+ | * Reparaturgeschwindigkeit (decimal) - Hitpoints pro Gametick | ||
==== Gebäude ==== | ==== Gebäude ==== | ||
+ | * Geschützpositionen (Anhängpunkt) - Mögliche Positionen, um Geschütze auf dieses Gebäude zu platzieren | ||
+ | * Produktionsmöglichkeiten (Liste) - Eine Liste von möglichen Bauaufträgen, | ||
+ | * Sonderfunktionen (Liste) - Sonderfunktionen, | ||
+ | |||
+ | ==== Geschütze ==== | ||
+ | * Ziemlich alles wie bei Einheiten abzüglich Bewegung | ||
+ | |||
+ | ==== Projektile ==== | ||
+ | * Projektilgeschwindigkeit (decimal) - Geschwindigkeit des abgefeuerten Geschosses | ||
+ | * Projektiltyp (string) - z. B. ballistisch, | ||
+ | * Projektilgröße (Quader) - quasi Bounding Box des Projektils im Sinne des Gameplays | ||
+ | * Splash Damage (decimal) - Schadensbereich | ||
+ | |||
+ | |||
+ | ===== Grafische Darstellung ===== | ||
+ | Die grafische Darstellung umfasst im Wesentlichen die Anordnung der Meshes, aus denen sich das Objekt zusammensetzt, | ||
+ | |||
+ | ==== Meshes ==== | ||
+ | Meshes können entweder an Nodes oder an Bones anderer Meshes gehängt werden. Für jedes Objekt existiert eine Root Node bei (0,0,0), weitere Nodes müssen explizit definiert werden. Bones werden implizit über das jeweilige Mesh angesprochen. In diesem Sinne gibt es kein Hauptmesh und Submeshes, es gibt nur Meshes, die an irgendeiner Stelle an das Objekt angehangen werden, i. A. also wenigstens ein Mesh an die Root Node. Für jedes Mesh muss auch das Standard-Material (templatisiert über Spielerfarbe) angegeben werden. | ||
+ | |||
+ | ==== Objektzustände ==== | ||
+ | Alles andere kommt eigentlich nur bei bestimmten Objektzuständen zutrage. Wenn ich nichts vergessen habe, kann sich eine Einheit in einem oder mehreren der folgenden Zustände befinden: | ||
+ | * IdleX (X = 0 - ..) - Einheit hat nichts zu tun | ||
+ | * Moving - Einheit bewegt sich | ||
+ | * Shooting - Einheit feuert | ||
+ | * Damaged - Einheit ist beschädigt (kann auch feiner unterteilt werden, falls nötig) | ||
+ | * Repairing - Einheit repariert | ||
+ | * (Repaired - Einheit wird repariert (nötig?)) | ||
+ | * Driver lookout - Fahrer schaut aus einem Panzer heraus (ist verwundbar) | ||
+ | * Working - z. B. Gebäude bei Produktion | ||
+ | * (Nothing - wenn kein anderer Zustand aktiv ist) | ||
+ | * (Always - ist immer aktiv) | ||
+ | Zu jedem Zustand können für jedes einzelne Mesh Animationen festgelegt werden, die während des Zustands abgespielt werden. Außerdem können Partikeleffekte an Nodes oder Bones angehängt werden (z. B. Schmauchspuren, | ||
+ | |||
+ | ==== Waffenrohre ==== | ||
+ | Weiterhin muss definiert werden, von wo aus Schüsse starten (und wie diese aussehen), also Nodes oder Bones als Waffenrohre deklarieren. Dazu braucht es auch noch die Info, ob alle Rohre gleichzeitig (z. B. Psycho) oder abwechselnd (z. B. Raketenwerfer) feuern sollen (aber das ist eigentlich wieder eine Gameplay-Sache). | ||
+ | |||
+ | |||
+ | ===== Beispiel ===== | ||
+ | Ein Entwurf für eine Beschreibungsdatei für einen Roboter: | ||
+ | |||
+ | <code xml> | ||
+ | <?xml version=" | ||
+ | <robot id=" | ||
+ | < | ||
+ | <!-- Number of hitpoints --> | ||
+ | < | ||
+ | <!-- Damage multipliers to increase or reduce damage taken from a specific damage type --> | ||
+ | < | ||
+ | < | ||
+ | <!-- The bounding radius specifies the space the object occupies on the map --> | ||
+ | < | ||
+ | <!-- Define hitboxes for projectile collision --> | ||
+ | <hitbox x1=" | ||
+ | <hitbox x1=" | ||
+ | </ | ||
+ | | ||
+ | < | ||
+ | <!-- The unit's velocity --> | ||
+ | < | ||
+ | <!-- Turnspeed --> | ||
+ | < | ||
+ | </ | ||
+ | | ||
+ | < | ||
+ | <!-- The type of damage this unit deals --> | ||
+ | < | ||
+ | <!-- The amount of damage the unit deals --> | ||
+ | < | ||
+ | <!-- Variance of the damage dealt --> | ||
+ | < | ||
+ | <!-- Probability that this unit hits the driver of a vehicle instead of the vehicle. --> | ||
+ | < | ||
+ | <!-- Time in game ticks for firing a single shot --> | ||
+ | < | ||
+ | <!-- Relative time after which the projectile is created when firing --> | ||
+ | < | ||
+ | <!-- Time in game ticks between two shots --> | ||
+ | < | ||
+ | <!-- Projectile object to be used with this weapon --> | ||
+ | < | ||
+ | <!-- Range of fire --> | ||
+ | < | ||
+ | <!-- Does the unit need to stand still when shooting? --> | ||
+ | < | ||
+ | <!-- Weapon turning in horizontal: Min/ | ||
+ | < | ||
+ | <!-- Weapon turning in vertical: Min/ | ||
+ | < | ||
+ | <!-- How many of the barrels defined in the rendering section actually fire per shot? --> | ||
+ | < | ||
+ | </ | ||
+ | | ||
+ | | ||
+ | < | ||
+ | <!-- Define nodes to attach meshes etc. to --> | ||
+ | <node x=" | ||
+ | |||
+ | <!-- Define the meshes and their placement --> | ||
+ | <mesh material=" | ||
+ | |||
+ | <!-- Define the unit's states and the animations and particle effects accompanying those --> | ||
+ | <state name=" | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | <state name=" | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | <state name=" | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | <!-- Declare bones or nodes as weapon barrels, this is where the projectiles will be emerging from --> | ||
+ | <barrel type=" | ||
+ | </ | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | </ |