Enemy Spawning-Methode in einem Top-Down-Shooter

20

Ich arbeite an einem Top-Down-Shooter, der DoDonPachi , Ikaruga usw. ähnelt . Die Kamerabewegung durch die Welt erfolgt automatisch, wobei sich der Player im sichtbaren Bereich der Kamera bewegen kann.

Auf dem Weg dorthin werden Feinde so programmiert, dass sie an bestimmten Punkten des Pfades erscheinen. Obwohl dies einfach klingt, habe ich zwei Möglichkeiten gefunden, um diese Punkte zu definieren:

  1. Kameraposition: Löst das Laichen aus, wenn die Kamera an den Punkten vorbeigeht
  2. Zeit auf dem Weg: "30 Sekunden, 2 Feinde erschaffen"

In beiden Fällen würden die kamerarelativen Positionen sowie das Verhalten des Feindes definiert.

Wie ich es sehe, wie Sie diese Punkte definieren, wirkt sich direkt darauf aus, wie der 'Level-Editor' oder was Sie haben, funktionieren wird.

Gibt es Vorteile eines Ansatzes gegenüber dem anderen?

Chris Waters
quelle

Antworten:

7

Ich würde vorschlagen, die Spawnpositionen tatsächlich auf der Hintergrundkarte als Knoten zu platzieren, die in einer Art Karteneditor sichtbar sind. Sie können einen Shmup-Spawn mit zwei Variablen darstellen:

  1. Position, von der aus sie zuerst sichtbar sind. Dies wird am besten als Punkt dargestellt
  2. Entfernung vom unteren Bildschirm, wenn Sie sie erzeugen sollten.

Dann können Sie den Abstand vom unteren Bildschirmrand als vertikale Linie vom Spawn-Knoten nach unten darstellen (was als ausgegraute Version des Feindes oder eines ähnlichen Knotens dargestellt werden könnte). Wenn der untere Rand des Bildschirms diese Zeile berührt, wird es erscheinen. Auf diese Weise können Sie die gesamte Bearbeitung Ihrer Gegner in einem visuellen Editor durchführen und erhalten einen Überblick über den gesamten Spielverlauf.

Ben Zeigler
quelle
Zu 2) Natürlich müssten Sie beim Export diesen Code umkehren (dh pro Zeile, welche Spawnpunkte aktiviert werden sollen, da Sie bei diesem System einige Spawnpunkte kennen müssen, bevor sie sichtbar werden. Dies ist in der Tat der logischste Weg.
Kaj
1
Stellen Sie sicher, dass Sie einen Editor verwenden, mit dem Sie Knoten problemlos in großen Mengen verschieben können. Wenn du dein Shmup-Level einrichtest, fügst du Feinde ein und entfernst sie und optimierst ständig das Timing in der Mitte deines Levels. Wenn du alle Einheiten nacheinander verschieben musst, wirst du getötet.
ZorbaTHut
Ich liebe diese Idee, da sie die Bearbeitung erheblich erleichtert, was immer von Vorteil ist
Chris Waters
7

Allerdings wäre die Position der Kamera zum Laichen wahrscheinlich flexibler, da Sie den Pfad ändern könnten, ohne sich über einen großen Dominoeffekt Gedanken machen zu müssen.

Wenn Sie mit Zeit-Spawns arbeiten, ist es sehr mühsam, Pfade hinzuzufügen oder zu entfernen, da Sie viele feindliche Spawns modifizieren müssen.

Ein weiteres Problem, das ich sehe, ist die Optimierung der Kamerageschwindigkeit. Möchten Sie wirklich die feindlichen Spawns optimieren, nur weil Sie dafür gesorgt haben, dass sich die Kamera etwas schneller oder langsamer bewegt? Außerdem müsstest du das Level schrecklich oft durchspielen, um Spawn-Zeiten oder Tweaks für sie zu finden.

David Young
quelle
2

Ich würde dringend empfehlen, die Kamera überhaupt nicht zu bewegen. Betrachten Sie den Spieler und die Feinde immer im gleichen festen Koordinatenraum. Gegner und Hintergrund-Scrollen sollten beide einer unabhängigen Zeitleiste zugeordnet werden. Es macht die Mathematik einfacher.


quelle
Ich stimme Ihnen halb zu. Auf jeden Fall ist die Shmup-Physik gefälscht und basiert darauf, dass sich das Schiff nicht wirklich vorwärts bewegt. Das heißt, die Frage ist immer noch gültig, da Sie eine Kamera usw. zu prüfen haben
Iain
Tatsächlich macht es die Frage nicht ungültig. Es ist immer noch Zeit gegen die (virtuelle) zurückgelegte Strecke. Ob Sie den Player vorwärts oder den Hintergrund rückwärts bewegen, ist nur eine konzeptionelle Ebene. Außerdem kann das Entkoppeln, um das Rechnen zu erleichtern, andere Dinge erheblich erschweren, z. B. das Platzieren von Feinden im Hintergrund (Türme), das Vermeiden von Hintergrundobjekten oder das Platzieren von Kollidierbaren im Hintergrund.
Kaj
1

Ich würde für die Kameraposition gehen. Wenn Sie Zeit verwenden, wird es ziemlich schwierig, wenn Sie möchten, dass ein Feindpfad mit einigen Grafiken in Ihrer Kartendatei übereinstimmt (z. B. Feinde, die einem gekrümmten Pfad folgen). Außerdem können Sie den Bildlauf beschleunigen, ohne die Spawnpunkte zu ändern.
Die Kehrseite ist, dass das Beschleunigen der Schriftrolle Feinde schneller kommen lässt. Dies kann als Plus (Beschleunigung wäre schwierig) oder als Minus (Scrollgeschwindigkeit beeinflusst die Stimulation) angesehen werden.

Kaj
quelle
1

Ich arbeite auch an einem Weltraum-Shooter-Spiel. Ich habe ein leeres Spielobjekt namens GameController verwendet. Es wurde eine Skriptkomponente namens GameController.cs hinzugefügt, die den Laichteil wie folgt steuert:

  • Speichern einer Liste von Laichpunkten [Array]
  • Geben Sie jedem Feind ein bestimmtes Gewicht und Punkte. Gewichtskontrollierende Laichrate des Feindes, wenn ein Feind ein hohes Gewicht hat, hat eine gute Möglichkeit, in jedem Level zu wählen.
  • Dann jedes Mal, wenn Sie das aktuelle Level und die Auswahl überprüfen, erscheint eine Zufallszahl, wenn die Zahl kleiner als das Gewicht ist, die den Feind assoziiert. Ich hoffe es hat geholfen.

http://www.youtube.com/watch?v=VqFJsU63GRo

jquery404
quelle
0

Ich würde sie auf dem großen Kartenhintergrund platzieren und ihren anfänglichen Bewegungspfad auf dieser Karte einfügen. Auf diese Weise konnte ich den Kamerapfad später auf sinnvolle Weise ändern, anstatt sowohl den Pfad als auch das Timing separat ändern zu müssen.

wolfdawn
quelle