Physik für einen 2.5D-Plattformer mit einer Kurvesebene

9

Ich erstelle einen 2.5D-Plattformer in XNA, der 3D-Modelle verwendet, die sich nur entlang einer 2D-Ebene bewegen müssen (genau wie Trine ).

Um die Sache noch schwieriger zu machen, möchte ich jedoch, dass sich die 2D-Ebene selbst krümmen kann. Betrachten Sie diese Wiederholung von Klonoa (Sie müssen nur 10 Sekunden lang zuschauen): Obwohl sich der Spieler in einem 2D-Flugzeug befand, konnte sich das Flugzeug selbst um die Seite eines Berges wickeln, sodass der Spieler effektiv durch den 3D-Raum reisen konnte - währenddessen beschränkt auf die reguläre 2D-Ebene eines Plattformers.

Wie soll die Physik in einem solchen Spiel angegangen werden?

  • Sollte ich eine 2D-Physik-Engine oder eine 3D-Physik-Engine verwenden?
  • Gibt es tatsächlich Physik-Engines, die für diese Situation entwickelt wurden?
  • Für alle, die nicht dafür entwickelt wurden: Welche Hacks oder Tricks sind erforderlich, damit die Physik-Engine mit mir zusammenarbeitet?
Doppelgrün
quelle
2
Ich denke, dass die 'Kurve' rein visuell ist, in Bezug auf die Physik scheint sie 2D zu sein. Der einzige Trick wäre, es in den GFX-Raum oder in den Physikraum umzuwandeln.
Verlangsamte

Antworten:

9

Ein solcher Plattformer ist im Wesentlichen immer noch ein 2D-Plattformer. Der 2.5D-Effekt, selbst das Kräuseln um den Berg, ist lediglich eine Visualisierung einer in 2D eingeschränkten Welt. Ihre Physik-Engine wird wahrscheinlich nur auf dieser Welt arbeiten und nicht auf deren Visualisierung, daher wird eine 2D-Physik-Engine ausreichen.

Das heißt, Sie könnten an einigen 3D-Effekten interessiert sein. In dem Spiel "Bionic Commando: Re-bewaffnet" rollen besiegte feindliche Charaktere von der Plattform, wodurch die Ragdoll-Physik tatsächlich 3D wird. Darüber hinaus können Sie mit den meisten 3D-Physik-Engines die Bewegung entlang einer oder mehrerer Achsen einschränken (allerdings mit einigen Verbesserungen wie dem Erstellen einer Verbindung zwischen der Straße und sich bewegenden Zeichen).

Denken Sie daran, dass nicht jeder 3D-Effekt eine vollständige Physik-Engine benötigt. Sie können Ihre eigenen 3D-Implementierungen für kleinere Dinge wie herabfallende Trümmer nach einer Explosion codieren, ohne auf eine vollständige 3D-Engine zurückgreifen zu müssen.

Meine Empfehlung ist, mit einer 2D-Engine zu beginnen, wenn Sie wahrscheinlich keine physikalischen Berechnungen in der 3. Dimension benötigen. Wählen Sie andernfalls eine 3D-Engine aus und beschränken Sie die Berechnungen gegebenenfalls auf nur zwei Achsen.

Geist
quelle
2

Es hängt davon ab, ob Ihre Physik außerhalb des flachen Player-Bereichs stattfinden kann.

Wie Ghostonline sagte, sind Trümmer- und Ragdoll-Animationen ein klassisches Beispiel für Out-of-2D-Physik in einem 2.5D-Spiel.

Ein weiteres Beispiel sind Kugeln: Wenn sich in Ihrem Spiel Projektile befinden, folgen diese der Krümmung Ihres 2D-Raums oder bewegen sich geradeaus, auch wenn dies bedeutet, dass sie diese Grenzen verlassen?

Auch die korrekte Zuordnung eines physischen 2D-Raums zu einer gekrümmten 3D-Visualisierung ist (korrigieren Sie mich, wenn ich mich irre) nicht so einfach. Sie benötigen eine injektive Projektionsfunktion, die wahrscheinlich viele Splines oder ähnliches umfasst.

Gebogene 2D-Spielräume sind zwar eine nette Ergänzung, erfordern jedoch einen gewissen Overhead für den Code. Das könnte der Grund sein, warum es so etwas in Trine nicht gibt. Aber das Spiel hat trotzdem Spaß gemacht, nicht wahr? Ich würde zweimal über eine solche Funktion nachdenken.

Jonas Bötel
quelle