Vollständige Zerstörbarkeit in 2D

Sep 08 2020

Ich möchte ein kleines Spiel über Schlachten im Mittelalter erstellen. Stellen Sie sich eine prozedural erzeugte 2D-Karte mit Flüssen, Feldern und einer kleinen Burg vor.

Zwei Seiten. Ein Spieler greift die Burg an und der zweite verteidigt sie.

Das ganze Spiel wird mit einer Aussicht von oben nach unten sein. Ich mag diesen Look (und vielleicht vereinfacht er die Arbeit).

Stellen Sie sich vor, die Kanone eines Spielers nähert sich der Burg und greift sie an. Die Kanone feuert (z. B. in einen Turm) und der Turm beginnt auseinanderzufallen. Wie kann dieser Prozess interessanter gestaltet werden? Mit verschiedenen Effekten (zum Beispiel an der Stelle, an der die Waffe von einem Stück Wand fiel, und auf dem Dach des Turms gab es einen Riss).

Ich mag den Prozess der Zerstörung in der AE Defenite Edition, aber er sieht für alle Gebäudetypen gleich aus (früher oder später werden sie ihn in den gleichen Haufen verwandeln).

Das Beispiel, was ich meine, wenn ich 2d Castle in der Ansicht von oben nach unten sage:

Wie kann man dieses Schloss in Chips zerlegen?

PS Ich hoffe, Sie sehen den Patron des Autors. Von seinem Patron konnte dieses Bild kostenlos heruntergeladen werden. Er hat viele andere tolle Bilder.

Fügen Sie eine visuelle Anleitung hinzu:

Geben Sie hier die Bildbeschreibung ein

Antworten

4 G.Sliepen Sep 09 2020 at 07:49

Physik

Versuchen Sie darüber nachzudenken, was passiert, wenn eine durch die Luft fliegende Kanonenkugel auf etwas trifft. Der Ball hat eine bestimmte Masse und Geschwindigkeit und damit eine bestimmte Menge an kinetischer Energie, die möglicherweise Schaden anrichten kann.

Was passiert mit der Kanonenkugel selbst nach einer Kollision? Springt es, fällt es herunter, bricht auseinander, rollt, fängt Feuer oder explodiert es? Es könnte abprallen (zum Beispiel, wenn es in einem streifenden Winkel auf den Boden trifft), aber wenn es auf eine Steinmauer trifft, verliert es wahrscheinlich nur seine gesamte kinetische Energie, fällt herunter und rollt möglicherweise weg.

Was passiert am Aufprallpunkt? Eine Steinmauer reagiert anders als ein Holzdach. Und es besteht eine geringe Wahrscheinlichkeit, dass Sie eine Person oder ein Gerät treffen. Wie von Zibelas erwähnt, müssen all diese Dinge möglicherweise anders gehandhabt werden.

Bei Materialien, die knacken, wenn sie von einer Kanonenkugel getroffen werden, können Sie eine detaillierte Simulation der Reaktion des Materials durchführen. Ich denke jedoch nicht, dass dies zu Ihrem visuellen Stil passt und viel Arbeit beim Codieren und Ausführen erfordert . Nehmen Sie stattdessen einige Vereinfachungen vor. Beachten Sie einige grundlegende physikalische Aspekte: Eine Kanonenkugel hat eine begrenzte Menge an kinetischer Energie, die sie beeinflussen kann. Wenn diese Energie in das Material übertragen wird, gibt es verschiedene Möglichkeiten, wie diese Energie verteilt werden kann, einschließlich:

  • Das Objekt als Ganzes kann die kinetische Energie erben und sich so in Bewegung setzen
  • Die Energie kann vollständig als Wärme abgeführt werden
  • Ein Riss kann erzeugt werden

Normalerweise wird es eine Kombination aus all dem sein. Ok, jetzt nur noch Risse betrachten, je nach Material wird die Richtung eines Risses bevorzugt, und sobald ein Riss beginnt, wird er wahrscheinlich in die gleiche Richtung weitergehen. Typische Materialien weisen jedoch Verunreinigungen auf, und es wird Punkte geben, an denen es günstiger wird, die Richtung eines Risses zu ändern. Um dies zu simulieren, würde ich den folgenden Algorithmus verwenden:

  • Geben Sie vom Aufprallpunkt aus einen Bruchteil der Energie für einen Riss aus, der sich ungefähr in Aufprallrichtung fortsetzt. Die Menge an verbrauchter Energie bestimmt die Länge dieses Risses.
  • Treffen Sie dann am Ende dieses Risses eine zufällige Auswahl:
    1. Ändern Sie die Richtung des Risses
    2. In zwei Zweige aufgeteilt, von denen jeder in seine eigene Richtung geht
  • Schieben Sie dann wiederholt alle Risse vor, bis Sie alle Energie verbraucht haben.

Sie können die Parameter anpassen, z. B. die Möglichkeit, einen Riss zu teilen, bis Sie feststellen, dass ein ansprechendes Rissmuster entsteht.

Außerdem möchten Sie überprüfen, ob eine Risslinie einen vorhandenen Riss schneidet oder auf die Kante des zu rissenden Objekts trifft. In diesem Fall gibt es ein Stück Material, das jetzt vollständig locker geworden ist. Sie können beschließen, ein wenig kinetische Energie aus Ihrem verbleibenden Energiebudget zu geben und es fliegen zu lassen.

Rendern

Es scheint, als könnten Sie die Risslinien einfach mit einer schwarzen Linie zeichnen, die ähnliche Eigenschaften wie die beim Zeichnen des Schlosses verwendeten Umrisse aufweist. Aber Risse treten nicht plötzlich auf einmal auf. Das Erstellen einer überzeugenden Animation kann schwierig sein. Denken Sie jedoch noch einmal an die Physik eines Kanonenkugelaufpralls: Es gibt Staub und feine Partikel, die gestört werden und eine kleine rauchartige Wolke bilden können. Diese Wolke löst sich in wenigen Sekunden auf und kann sich in Windrichtung bewegen. Die Wolke verbirgt die Rissbildung, sodass Sie sich darüber keine Sorgen machen müssen. Sie können auch ein paar kleine Partikel aus dem Aufprallpunkt ausbrechen lassen, um ein dynamischeres Aussehen zu erzielen. Es sollte einfach sein, diesen Dingen eine Randomisierung hinzuzufügen, damit sie jedes Mal anders aussehen.