Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

01.08.2013, 13:06

"Pseudo"-3D Umsetzung

Hallo zusammen!

Kann sein, dass dies hier eher ein Physik-Thema ist aber ich frage mich, wie das "Pseudo-3D" in Spielen wie beispielsweise Binding of Isaac umgesetzt wird. Dort verhalten sich Projektile und Objekte beim Springen und bestimmten Fähigkeiten scheinbar dreidimensional, obwohl die Welt ganz klar zweidimensional ist.

Ein weiteres Spiel, welches mich in dieser Hinsicht sehr erstaunt hat, ist diese Tech-Demo: http://www.cross-code.com/en/play

Gibt es dort irgendwelche Tricks bei der Kollisionsberechnung oder ist das tatsächlich einfach die Berechnung im Dreidimensionalen und anschließende Projektion ins Zweidimensionale?

Sc4v

Alter Hase

Beiträge: 376

Beruf: Student

  • Private Nachricht senden

2

01.08.2013, 15:08

Hi,
Gibt es dort irgendwelche Tricks bei der Kollisionsberechnung oder ist das tatsächlich einfach die Berechnung im Dreidimensionalen und anschließende Projektion ins Zweidimensionale?
Nein das ist pure isometrische 2D Sprite Grafik und wird nicht vom dreidimensionalem ins zweidimensionale projiziert.
Ich weiß nicht wie die es machen aber, ich habe für mein Dread die Sprites nach Entfernung sortiert. und dann von hinten nach vorne gezeichnet, so Überdecken sich Sprites gegenseitig korrekt.

Gruß

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

3

01.08.2013, 17:30

Was fliegen etc angeht, so kannst du mit Schatten super Effekte erzeugen. Dafür reicht es oft die Sprite selbst komplett schwarz unter die eigentliche Figur zu zeichnen. Dabei ein kleiner Offset. Oder man zeichnet einen schwarzen Kreis unter die Figuren. Je nach Offset bekommt man dann verschieden starke Schwebeeffekte. Fürs Gameplay reicht es oft in Layern zu denken. Du hast Objekte welche auf dem Boden sind und mit Gegenständen auf dem Boden kollidieren. Dann hast du noch Objekte in der Luft welche möglicherweise mit anderen Objekten in der Luft kollidieren, oder nur mit manchen Objekten auf dem Boden wie zum Beispiel Gegner. Was womit kollidiert kannst du ja selbst durch deinen Code festlegen.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

4

01.08.2013, 17:41

Don't Starve benutzt bestimmt Mode 7 oder?

MfG
Check

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

5

01.08.2013, 17:43

Das von dir verlinkte Spiel arbeitet ziemlich sicher mit einer richtigen 3D-Repraesentation der Spielwelt.

Lares

1x Contest-Sieger

  • Private Nachricht senden

6

01.08.2013, 18:03

Bei CrossCode zumindest weiß ich, dass die Physik des Spiels von dreidimensionalen Räumen und Objekten ausgeht (Dazu gibts auch einen ziemlich "alten" Artikel auf der Webseite). Die Sprites als solches etc. sind natürlich 2d, was aber kein Problem ist. Die Illusion von Tiefe kommt ja lediglich von dem Verhältnis Licht/Schatten und der Bewegung der Objekte.
Mit passenden grafischen Effekten (wie Schorsch sie schon nannte), kann man so also auch mit Sprites den Eindruck einer "dreidimensionalen Welt" erwecken.

7

01.08.2013, 20:07

Danke für die vielen Antworten!

Das mit dem Zeichnen in der richtigen Reihenfolge sowie zusätzlich mit Schatten und evtl. leichter Skalierung zu arbeiten habe ich mir schon gedacht. Aber wie würde denn die Kollision einer Granate realistisch und korrekt berechnet werden? Das einzige greifbare Beispiel was ich habe ist The Binding of Isaac.

Dort gibt es Gegner die Bomben werfen. Diese Bomben machen aber nicht nur visuell mehrere elliptische Sprünge sondern die Kollision dieser wird auch korrekt berechnet. Sprich wenn eine Bombe in 5 Meter über meinem 2 Meter Charakter in der Luft fliegt und es visuell so aussieht, als ob die Bombe gerade meinen Charakter getroffen hat, so ignoriert diese den aber einfach, da dieses scheinbare Zusammentreffen halt nur in der derzeitigen Projektion so erscheint, logisch aber gar nicht passiert. (Ich glaube das muss ich hier nicht erklären :D) Von einer anderen Perspektive wäre das eindeutig. Aber wie würde man das realisieren, wenn das ganze Spiel sowie die Bewegung des Spielers 100%, wie im Fall von The Binding of Isaac, 2D ist? Letztendlich muss man dann doch mit einer (komplexeren) Logik im dreidimensionalen Raum arbeiten, oder?

Ein anderes Spiel, bei dem aus meiner laienhaften Sicht die selbe Problematik vorliegt, wäre Stronghold Crusader (Bogenschützen auf Türmen).

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

8

01.08.2013, 20:24

Genau das wurde doch erklärt. Entweder berechnest du deine Logik wie die Physik etc in 3D, wie Lares es schreibt, oder du arbeitest mit verschiedenen Layern so wie ich es geschrieben habe. Im Prinzip könntest du auch einfach bei jedem Objekt festlegen womit es kollidieren kann. So könntest du sagen Bomben kollidieren nicht mit dem Spieler, nicht mit Gegner1, Gegner2 und Gegner3, dafür aber mit Gegner4, Gegner5 und Gegner6. Weiterhin kollidieren Bomben nicht Steinwänden, jedoch mit Holzkisten und so weiter und so weiter. Das kannst du so umsetzen wie du lustig bist. Du musst dir natürlich selbst überlegen was für dein Spiel sinn macht.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Werbeanzeige