User Tools

Site Tools


z:objekte

This is an old revision of the document!


SectorMania - Objekteigenschaften

Hier wird festgehalten, über welche Werte und Eigenschaften ein Spielobjekt verfügt.

Gameplay-Werte

Schaden, Hitpoints etc. Alle Zahlenwerte müssen als Integer repräsentiert werden, da floats fürs Einlesen nicht verwendet werden dürfen und für meinen Fixed-Datentyp zumindest vorerst kein String-Parser existiert.

Für Schaden würde ich vorschlagen, dass jede Einheit einem bestimmten Schadenstyp zugeordnet ist, gegen den andere Einheiten Schadensreduktion besitzen können. Im Prinzip wie bei Earth, nur dass die Schadenskategorien eben nicht sinnlos fest sind, sondern einfach durch hochzählenden int beliebig festgelegt werden. Dadurch kann jede Einheit einen individuellen Schadenstyp haben und jede Einheit kann individuell gegen jede andere mit Stärken oder Schwächen (negative Rüstungswerte) ausgestattet werden. Der Einfachheit halber hat jede Einheit nur einen Schadenstyp, das ist für unsere Zwecke vollauf ausreichend. Keiner dieser Werte wird ingame angezeigt.

Allgemein

  • Objektbezeichner (string) - interner Identifizierer für den Objekttyp
  • Objekttyp (string) - Neutral, Robot, Fahrzeug, Gebäude, Geschütz
  • Hitpoints (int) - 0 für unsterblich
  • Panzerung vs X (int) - X für den Schadenstyp (ebenfalls int), Wert in Prozent
  • Bounding Radius (int) - Begrenzungskreis bestimmt, welchen Platz die Einheit auf dem Terrain einnimmt (für Wegfindung/Steering)
  • Hit Boxes (Quader) - Hitzonen für die Waffenprojektile, (beliebig viele) einfache Quader sollten diesen Job hinreichend erfüllen und sind recht einfach auf Kollision zu testen.

Roboter und Fahrzeuge

  • max. Geschwindigkeit (int)
  • max. Turnspeed (int)
  • (Beschleunigung? Evtl. für Steering benötigt, noch nicht sicher)
  • Schadenstyp (int) - wie oben beschrieben
  • Schadenswert (int) - wie viel Schaden die Einheit vom Schadenstyp anrichtet
  • Schwankung Schaden (int) - Absolutwert der Schwankung des Schadens (falls gewünscht)
  • Fahrer treffen (int) - Wahrscheinlichkeit, dass der Schaden den Fahrer des Fahrzeugs trifft, sofern möglich, Wert in Promille
  • Schussgeschwindigkeit (int) - die Dauer eines Schussvorgangs(dabei sollte die Animationsgeschwindigkeit angepasst werden). In Gameticks
  • Projektil (string) - Projektilobjekt, das die Waffe abfeuert
  • Reichweite (int) - Waffenreichweite
  • zum Schießen stehen? (bool) - Einheit kann nur im Stehen feuern
  • min/max/default horizontaler Winkel der Waffe (int) - Wie weit kann die Waffe in der Horizontalen gedreht werden?
  • min/max/default vertikaler Winkel der Waffe (int) - Wie weit kann die Waffe in der Vertikalen gedreht werden?
  • Drehgeschwindigkeit der Waffe (int) - Wie schnell dreht sich die Waffe?
  • Anzahl Rohre pro Schuss (int) - Wie viele Rohre der grafisch definierten feuern gleichzeitig?
  • Reparaturgeschwindigkeit (int) - Hitpoints pro Sekunde oder etwas in der Art für Reparaturfahrzeug.

Frage: Was ist, wenn eine Waffe eine “Vorlaufanimation” hat, bevor sich der eigentliche Schuss löst? Wegen Synchronisation kann nicht auf das Ende einer Animation gewartet werden, also einfach einen Zeitparameter als Verzögerung dazutun, der dann manuell synchronisiert werden muss?

Vorschlag dazu: die Schussgeschwindigkeit ist gleichzeitig die Verzögerung. D.h. der Schaden passiert immer am Ende des Schussvorgangs. Dürfte relativ gut mit den meisten Animationen übereinstimmen und erfordert keine manuelle Anpassung. Komplizierter wäre es einen Wert zwischen 0 und 1 zusätzlich zu definieren der festlegt zu welchem Zeitpunkt relativ im Bezug auf die Schussdauer der Schaden passiert.

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, die man in diesem Gebäude vergeben kann, inkl. Rohproduktionszeit in Sekunden
  • Sonderfunktionen (Liste) - Sonderfunktionen, wohl nur Hauptgebäude, Radar, Reparatur

Geschütze

  • Ziemlich alles wie bei Einheiten abzüglich Bewegung

Projektile

  • Projektilgeschwindigkeit (int) - Geschwindigkeit des abgefeuerten Geschosses
  • Projektiltyp (string) - z. B. ballistisch, gerade, Strahl
  • Projektilgröße (Quader) - quasi Bounding Box des Projektils im Sinne des Gameplays
  • Splash Damage (int) - Schadensbereich

Grafische Darstellung

Die grafische Darstellung umfasst im Wesentlichen die Anordnung der Meshes, aus denen sich das Objekt zusammensetzt, sowie Animationen, Partikeleffekte und Materialien passend zum aktuellen Zustand der Einheiten.

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, Fabrikdampf etc.), auch können Materialien überschrieben werden (beschädigte Objekte).

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).

z/objekte.1185808865.txt.gz · Last modified: 2015/08/23 14:03 (external edit)