Kennt jemand gute Beispiele dafür, wie 3D in 2D gefälscht wird (nicht unbedingt Code, aber Spiele, die ich nachschlagen könnte)? Der Spieler hat die Perspektive, dass sie auf den Bildschirm "hineingehen" und Dinge auf sie zukommen. Im Moment skaliere ich einfach die 2D-Feinde, um die Illusion zu vermitteln, dass sie näher kommen, aber es fühlt sich immer noch ziemlich flach an. Gibt es Tipps, wie Sie eine 3D-Illusion erzeugen können, ohne eine 3D-Engine zu verwenden?
Edit : Bin gerade auf den Begriff 'Mode7' gestoßen und dieses Video zeigt ziemlich genau, was ich herausfinden will. (vor allem die Spiele um 0:13 und 1:03). Was ist ein guter Weg, um so etwas zu implementieren?
Antworten:
Eines meiner Lieblings-Arcade-Klassiker hat auch 3D-Fake gemacht: Space Harrier
In diesem Video sehen Sie einige der von ihnen verwendeten Tricks, aber einer der effektivsten visuellen Effekte ist so nahtlos, dass Sie es möglicherweise gar nicht bemerken: Wenn sich der Player (oder vor allem die Kamera) bewegt, verwenden sie die Parallaxe , um Objekte einzugeben Die Szene ein Gefühl der Tiefe.
Das heißt, nähere Objekte bewegen sich schneller von Seite zu Seite als entfernte Objekte. Das klassische Beispiel für Parallaxe ist der Blick aus dem Fenster eines sich bewegenden Autos: In der Nähe peitschen Dinge wie Straßenschilder verschwommen vorbei, weiter entfernte Bäume bewegen sich langsamer, während entfernte Dinge wie Berge sich kaum zu bewegen scheinen.
Außerdem werden Objekte nicht linear skaliert, wenn sie näher kommen. Das heißt, Objekte werden nur ein kleines Stück entfernt skaliert und im Nahbereich schneller skaliert. Eine lineare Skalierung wäre, wenn sie die gesamte Zeit mit derselben Geschwindigkeit skaliert würden. Sie sagen, Sie skalieren Ihre Objekte bereits, wenn sie sich nähern, aber Sie skalieren sie möglicherweise linear und das sieht flach aus.
ZUSATZ: Afterburner ist ein weiteres klassisches Arcade-Spiel, bei dem viele der gleichen Grafik-Tricks zum Einsatz kamen.
quelle
Die meisten dieser Spiele verwenden die berühmten "Mode 7" -Tricks. Es ist nur ein Rotozoom. Dieser Vorgang wurde vom Coprozessor auf der Konsole ausgeführt, sodass er auf diesen Hardwares sehr schnell war. Echte 3D-Operationen waren zu kostspielig. Mit tatsächlicher Hardware ist es jedoch einfacher, mit echtem 3D zu simulieren.
Ein Rotozoom ist eine Drehung und ein Zoom auf ein Sprite. Schauen Sie sich diese Erklärung oder diese SDL- Implementierung an .
Suchen Sie auf Google "MODE-7 Grundriss", um Beispiele und Code zu finden.
F-Zero Mode 7 war eines der ersten Spiele, das es auf Snes verwendete.
quelle
Ich fand vor einigen Jahren einen fantastischen Rückblick auf diese Techniken mit Beispielen und Erklärungen. Ihre Frage veranlasste mich, erneut danach zu suchen: Lou's Pseudo 3d Page . Früher hatte er einen funktionierenden Outrun-Motor, der jedoch aus irgendeinem Grund entfernt wurde ( die Wayback-Maschine, wenn Ihr Freund hier ist ).
Zur weiteren Beantwortung Ihrer Frage finden Sie hier eine Liste der Spiele auf seiner Seite:
Wiederum nicht meine Liste - alle Ehre gebührt Louis Gorenfeld für seine großartigen Nachforschungen.
quelle
Alle 3D-Spiele sind gefälschte 3D-Spiele: P Ich mache Witze, ich weiß, was du mit "gefälschten 3D-Spielen" meinst.
Nun, das 8/16-Bit bietet mehrere Beispiele für eine sehr verbreitete Technik, bei der der Hintergrund in Schichten mit unterschiedlichen Geschwindigkeiten dargestellt wird, um die Parallaxe nachzuahmen. Es war auch sehr verbreitet zu sehen, dass es eigentlich einfacher ist, sich nur ein Rennspiel anzusehen, das für diese Konsolen entwickelt wurde, als zu erklären, was Sie meines Erachtens tun wollen.
Ich sehe im Flash-Szenario einige neue Dinge in der gleichen Stimmung. Werfen Sie einen Blick auf Missile Game 3d .
Ich weiß nicht, welchen Weg Sie einschlagen wollen, um diesen Effekt zu erzielen, aber es scheint, dass Sie mit der Programmierung begonnen haben und Zugriff auf Grafiken haben (eine API, vielleicht?). Es geht also nur darum, die richtigen Parameter für die Bewegung über den Bildschirm und die Skalierung als Funktion der Zeit zu finden. Ich glaube nicht, dass Sie dafür spezifische Gleichungen finden werden, da dies wahrscheinlich in hohem Maße von der spezifischen Situation Ihres Spiels abhängt (die übliche Geschwindigkeit, Rennen, Flugzeuge, Tunnel usw.) ist die beste Wahl, um den Maßstab und die Flugbahn der Funktionen in Bezug auf die Zeit auf dem Bildschirm zu ermitteln.
quelle
Jazz Jackrabbit und die alten Sonic-Spiele hatten diese Bonuswelten, die Pseudo-3D waren.
quelle