BattleArenaEditor

Aus Sternenschweif Wiki
Wechseln zu: Navigation, Suche


Der Kampfarena-Editor ist für das betrachten und erstellen von Kampfarenen für die Kämpfe gedacht. Dazu kann entweder ein Arenaskript in die "Prepare"-Funktion kopiert werden, oder mittels Zufallsgenerator eine Arena erstellt werden.

Allgemeines

Der Linke Bereich ist generell als die zentrale Kontroll- und Schaltstelle zu verstehen, die Arena im Hintergrund dient in erster Linie der anschaulichen Erstellung und Bearbeitung. Letztere erfolgt ausschließlich über das Script, ein Verschieben von Objekten mittels Drag+Drop ist derzeit nicht möglich.

Logbereich

Ganz unten im Linken Bereich befindet sich das Log, hier werden Scripting- und Ladefehler angezeigt (in auffälliger Farbe) sowie allgemeine Log-Mitteilungen ausgegeben. Mittels Clear Log wird das Log gelöscht, damit das Scrollen nicht zu lange dauert.

Laden von Arenen

Bevor begonnen werden kann, muss eine Basis-Arena geladen werden. Dazu ganz oben im Dropdown eine Arena auswählen und mit "Laden" den Vorgang bestätigen. Sobald die Arena geladen ist, verschwindet der Hintergrund und die Arena erscheint. Die Kamera kann ähnlich wie in einer "richtigen" Kampfarena mittels Pfeiltasten, Bild-nach-oben/-nach-unten sowie mit Linker, mittlerer und rechter Maustaste gesteuert werden. Das aktuell mit der Maus überfahrene Feld wird im linken Balken ganz unten angezeigt.

Objektliste

Es ist möglich, dass die verfügbaren Objektlisten zwischen den Arenen variieren, daher wird die Objektliste im linken Balken in der Mitte erst mit Laden einer Arena befüllt. Links in der Tabelle ist der interne Name zu finden, mit dem das Objekt platziert werden kann, rechts daneben steht die Größe.

Arenen erstellen

Zufallsarenen

Direkt über dem Log befindet sich die "Zufallserstellung". Hier kann außerdem ein sog. Coverage-Wert angegeben werden. Coverage bedeutet, wie viel % der Fläche der Arena von Startgebieten sowie von Elementen belegt sein dürfen. Hierbei errechnet sich die Coverage jedoch nicht aus der "tatsächlich begehbaren" Fläche, sondern aus der Grundfläche, die Objekte einnehmen, selbst wenn Teilbereiche der Objekte begehbar sind (zB Startpositionen ohnehin vollständig, aber auch gewisse Objekte wie Scheunen, "schief" dastehende Karren usw.). Eine Coverage von etwa 40% hat sich bisher als relativ guter Kompromiss zwischen Beweglichkeit und interessantem Aufbau erwiesen.

Nach Befüllung der Arena wird automatisch das Skript erstellt, mit dem die entsprechende Arena reproduziert werden kann.

Skriptarenen

Entweder durch eine Zufallsarena oder durch ein existierendes Skript kann das sog. "prepare"-Skriptfenster befüllt werden. Hier können dann zB einzelne Objekte entfernt oder verändert werden, Startpunkte verschoben oder die Größe der Arena verändert werden. Details zu den einzelnen Befehlen siehe unten. Damit die Änderungen auch dargestellt werden, einfach den "Execute"-Button drücken.

Farbcode der Felder

  • Der grüne Bereich ist die Startposition der Charaktere.
  • Rote Bereiche sind Startpositionen der NPCs.
  • Violette Bereiche am Rand der Arenen stellen Fluchtpunkte dar.

Skriptbefehle

Für die Erstellung der Arenen sind nur wenige Befehle nötig. Diese funktionieren ausschließlich im "BattleScript"-Kontext, also im Skriptbereich der Kampfdefinitionen. Die Arena verändernde Befehle sind derzeit ausschließlich in der "prepare"-Funktion möglich.

battleSetSize(x, y)

Setzt die Größe der Kampfarena. Sollte als allererster Befehl ausgeführt werden. die Maximalgröße liegt aktuell bei 51x51 Feldern, die Größen müssen jeweils ein Vielfaches von 3 sein.

battleAddNPCStart( x, y, size )

Kann nicht mehr ausgeführt werden, sobald einmal battlePlaceObject aufgerufen wurde. Fügt einen Startpunkt für NPCs hinzu. Muss zusammen mit der Größe vollständig auf dem Feld Platz finden, falsche Angaben werden ignoriert. size ist ein Radius, Radius 0 bedeutet "genau ein Feld".

battleSetPlayerStart( x, y )

Kann nicht mehr ausgeführt werden, sobald einmal battlePlaceObject aufgerufen wurde. Setzt den Startpunkt für die Spielerparty. Größe ist immer 2. Muss zusammen mit der Größe vollständig auf dem Feld Platz finden, falsche Angaben werden ignoriert.

battlePlaceObject( name, x, y, rotation )

Platziert ein Objekt mit Namen name aus der Objektliste auf dem Feld an Koordinaten x,y. Muss vollständig auf dem Feld Platz finden. Achtung bei Rotation: Es wird NICHT um die Mitte rotiert, sondern um die linke untere Ecke. D.h. ein 2x2 Felder großes Objekt nimmt mit Rotation 0 auf Position 4,4 die Koordinaten 4,4 bis 5,5 ein, während es mit Rotation 180 und selber Position die Koordinaten 3,3 bis 4,4 einnimmt.

battleRandomize( coverage, randomsize, randomseed )

Führt eine Zufallsarena-Operation aus.

  • coverage gibt an, welche "Abdeckung" durch Objekte als Richtwert angepeilt werden soll (0.00 = keine Objekte, nur Zufallsplatzierung der Startpunkte bis 1.00 = vollständig bedeckt). Coverage ist allerdings nur ein Richtwert, durch die Zufallsverteilung und die Beschränkung der Versuche ist eine Abweichung von der angepeilten Abdeckung durchaus möglich.
  • randomsize ist ein bool, der bestimmt, ob die Größe der Arena ebenfalls gewürfelt werden soll, oder ob diese bereits zuvor mittels battleSetSize fix gesetzt wurde.
  • randomseed ist der seed für den Zufallsgenerator (siehe auch Konsolenausgabe), ein Seed von -1 bedeutet "nimm einen zufälligen Seed". Identischer Seed bei identischen Parametern ergibt identische Arenen. Allerdings müssen wirklich alle Parameter inkl. Coverage und randomsize (bzw. die Vorgegebene Größe) identisch sein

battleSetSinglePlayerStart( who, x, y, facing )

Setzt die konkrete Startposition eines einzelnen Spielercharakters, startend bei 0 (Anführer) bis 6 (NPC-Begleiter). "facing" ist ein Wert von 0 bis 7, wobei 0 für "Norden" steht und dann jeweils im 45-Grad-Abstand bis "Nordwesten" geht. Norden ist definiert als "von 0, 1 nach 0, 0 Blicken".

Sollte das Feld bereits belegt sein, wird automatisch auf das "normale" Formationsfeld zurückgefallen.

battleSetSingleNPCStart( who, x, y, facing )

Analog zu den PCs können auch die NPCs frei platziert werden. Das "who" ist hier die Position der Monsterdefinition in der Monsterliste, d.h. "0" ist das erste Monster der Liste. Sollte zum Spawnzeitpunkt das Feld belegt sein, wird "normal" eine freie Spawnposition gesucht.