Es gibt also ein Projekt namens BulletML , eine Auszeichnungssprache zum Erstellen komplexer Partikel- / Aufzählungsmuster. Sie müssen den Code mit ziemlicher Sicherheit in Ihre eigene Sprache portieren, aber er kann einige wirklich erstaunliche Dinge bewirken.
Zum Beispiel wurde dieser Boss in einer (stark modifizierten) Erweiterung von BulletML für Unity3D (der Autor dieses Musters hat hochgeladen, dass Video und Misery verrückt sind, sowie gut 1 ). Es ist die schwierigste Variante dieses Feindes und zeigt, wozu BulletML ziemlich gut in der Lage ist (und schaut euch auch einige der anderen Bosse von Misery an, wie Wallmaster ).
Oder ich zeige dieses Beispiel, das ich während der Arbeit an einer Erweiterung für The Last Federation mit einer älteren Version des Systems geschrieben habe, die weniger modifizierbar ist und nur Einzelzeichen-AZ-Variablen verwendet:
Die grünen Kugeln, die diese Ringe dort herstellen, werden von einer übergeordneten Kugel erzeugt, die sich mit hoher Geschwindigkeit dreht, aber selbst keine Bewegung hat. Sie verursachen massiven Schaden, halten den Spieler in größerer Reichweite, beschränken ihn auf Waffen mit geringerem Schaden und ermöglichen mobilen Verteidigern, den Spieler zu belästigen (der Spieler hat gewonnen, wenn die unbewegliche Struktur in der Mitte zerstört wurde).
Hier ist ein Teil der XML-Syntax, mit der diese Blasen erstellt werden:
<bullet_pattern name="Barrier">
$WallShotAngle B=.3 A=90
$WallShotAngle B=.3 A=-90
$WallShotAngle B=.3 A=0
$WallShotAngle B=.375 A=180
</bullet_pattern>
<var name="WallShotAngle">
<bullet angle="[A]" speed="4000" interval_mult=".01" dumbfire="1" shot_type="GravityWavePurple">
<wait time="[B]" />
<change angle="0" speed="1000" time=".0001" />
<spawn>
<bullet_pattern>
<bullet angle="[A]" speed="0" shot_type="CurveBarGreen" damage_mult="8">
<wait time="12" />
<die />
</bullet>
</bullet_pattern>
</spawn>
<die />
</bullet>
</var>
Sie können einige der lila "Gravitationswellen" -Schüsse auf dem Screenshot sehen, die sich fast sofort von der Quelle (die sich dreht) zum Rand der Blase bewegen, woraufhin der grüne "gekrümmte Balken" -Schuss erzeugt wird, der dort 12 Sekunden vorher sitzt entlasten. Die blauen und gelben Aufnahmen habe ich weggelassen, da sie viel komplizierter sind.
Eines der anderen Muster (ein Artillerie-Granate ) in der Erweiterung wurde tatsächlich von Misery geschrieben, obwohl ich einige Änderungen daran vorgenommen habe. Anfänglich handelt es sich um einen schadensarmen, durchdringenden Schuss, der auf große Entfernung abgefeuert wird und dann in ein riesiges Feuerwerk explodiert, das Tonnen von Schaden verursacht. Die maximale Reichweite war viel höher als der Spieler erreichen konnte, was den Spieler zwang, sich auf kurze Distanz zu bewegen, was für die anderen Arten von NPC-Einheiten aufgrund des Schrotflinteneffekts von Vorteil war (mehr Kugeln in einer kleinen Zone).
BulletML ist im Allgemeinen einfach zu handhaben und kann erstaunliche Dinge bewirken. Aufzählungszeichen können die Richtung ändern, die Geschwindigkeit ändern, andere Muster erzeugen, frühzeitig absterben, das Sammeln von Befehlen in einer Schleife wiederholen, Verzögerungen verwenden, das Sprite-Bild des Aufzählungszeichens ändern, dem übergeordneten Element folgen (oder nicht) schreibe hinein.
Ich würde es auf jeden Fall empfehlen, wenn Sie ein ernstes Shoot-Em-Up-Spiel machen. Sie müssten immer noch die Koordinaten berechnen, um die gewünschten Formen zu erhalten, wie Charanor in seiner Antwort ausführt, aber eine Bullet-Engine wie BulletML bietet Ihnen so viel mehr Flexibilität, dass Sie mehr Zeit mit dem Entwerfen neuer Muster verbringen müssen als mit dem Herausfinden wie codieren sie.
- Um zu erklären, wie gut Misery ist, sind diese Videos gegen Floor Bosses mit Startausrüstung : keine Module, keine Verbrauchsmaterialien und das grundlegende Erbsen-Shooter. Und xe nimmt nur einen Schlag trotz der verlängerten Natur des Kampfes. Ok, 9 Treffer gegen Centrifuge (wer erst im dritten Stock nach dem Spieler auftaucht, wird definitiv Upgrades haben, die vergleichsweise mindestens den doppelten Schaden verursachen).