Die Rechner sind mittlerweile so schnell, dass die JavaVM sogar 3D Spiele ausführen kann, die keinerlei Hardwarebeschleunigung für 3D Darstellungen brauchen, wie es die 3D Spiele der 90er Jahre benötigten.
Zur Demonstration hab ich ein Projekt hergenommen und in Java umgesetzt. Ich hab das Projekt versucht so umzusetzen, dass die Hardwareabhängigkeit sich lediglich auf Bildschirmausgabe und Benutzeingabe in einer Java Klasse befindet. Die Anderen sind dabei Systemunabhängig.
JGame.java:
hier befindet sich die Spielschleife, sowie die Tastaturabfrage und die Bildschirmausgabe.
playGround.java:
playGround veraltet das Spielfeld und wird in einem 2D Array verwaltet. Hier sieht man schon, dass es sich eigentlich durch die eine Ebene sich nicht um richtiges 3D handelt.
Texture.java:
diese Klasse verwaltet die Texturen, also Grafiken, die in der entsprechenden peerspektive projeziert wird.
myVector.java:
hier wird die ganze Mathematik gekapselt, die für 3D Berechnungen, wie Bewegung im Raum, Rotieren und Transformieren notwendig sind.
Camera.java:
Die Kamera ist unser Auge in dieser simulierten 3D Welt. Wenn wir uns darin bewegen, bewegt sich eigentlich die Kamera darin.
Screen.java:
In dieser Klasse passiert die ganze Magie. Hier laufen nun alle Daten zusammen und erzeugen ein Bild, das uns den Eindruck gibt, wir wären in einer dreidimensionalen Welt. Dabei werden von der Kamera aus „Licht“-Strahlen ausgesendet. Sobald diese ein Objekt im Raum treffen, wird aus der Texture der entsprechende Bildpunkt perspektivisch gewählt und projekziert.
Wenn man ein JDK installiert hat, kann man das Programm gleich einmal austesten.
Links:
https://github.com/sky4walk/Engine3D
https://www.instructables.com/id/Making-a-Basic-3D-Engine-in-Java/
https://github.com/sky4walk/Engine3D/raw/master/dist/JGame.jar