4 Punkte von GN⁺ 2025-01-05 | 1 Kommentare | Auf WhatsApp teilen

Voxel Space

Web-Demo: Voxel-Space-Engine

Geschichte

  • 1992 war die CPU etwa 1.000-mal langsamer als heute, und GPU-Beschleunigung war entweder unbekannt oder teuer.
  • 3D-Spiele wurden vollständig auf der CPU berechnet, und Render-Engines zeichneten nur einfarbige Polygone.
  • 1991 wurde Gunship 2000 von MicroProse veröffentlicht und 1992 Comanche von NovaLogic.
  • Comanche bot damals beeindruckende Grafik und zeigte Texturen, Schattierung und Schatten.

Rendering-Algorithmus

  • Comanche nutzt die Technik Voxel Space, die auf einer Idee basiert, die dem Raycasting ähnelt.
  • Die Voxel-Space-Engine ist eine 2.5D-Engine und bietet nicht die gleiche Bewegungsfreiheit wie eine herkömmliche 3D-Engine.
Heightmap und Colormap
  • Die einfachste Methode zur Darstellung von Gelände ist die Verwendung einer Heightmap und einer Colormap.
  • In Comanche wurden eine Heightmap und eine Colormap in der Größe 1024×1024 mit jeweils 1 Byte verwendet.
  • Diese Karten sind periodisch und können keine komplexen Strukturen darstellen, aber die Colormap enthält bereits Schattierung und Schatten, sodass bei der Darstellung keine Beleuchtungsberechnung erforderlich ist.
Grundalgorithmus
  • Der Rendering-Algorithmus einer 3D-Engine ist ziemlich einfach.
  • Die Voxel-Space-Engine rastert Heightmap und Colormap und zeichnet vertikale Linien.
  • Zuerst wird der Bildschirm gelöscht, anschließend wird vom Hinteren nach Vorne gerendert, um die Verdeckung zu garantieren.
  • Die Linien auf der Karte werden entsprechend ihrer optischen Entfernung zum Betrachter bestimmt.
  • Rasterisieren Sie die Linien für die Anzahl der Bildschirmspalten.
  • Aus der 2D-Karte werden die Höhe und Farbe für Segmente der Linie übernommen.
  • Für die Höhenkoordinaten wird eine perspektivische Projektion durchgeführt.
  • Aus der projizierten Höhe und der entsprechenden Farbe wird eine vertikale Linie gezeichnet.
Rotation hinzufügen
  • Mit diesem Algorithmus kann nur nach Norden geschaut werden.
  • Für andere Winkel werden ein paar Zeilen Code benötigt, um die Koordinaten zu drehen.
Performance-Optimierung
  • Es gibt mehrere Tricks, um die Leistung zu erhöhen.
  • Statt von hinten nach vorne zu rendern, kann auch von vorne nach hinten gerendert werden.
  • Für verlässliche Verdeckung ist ein zusätzlicher Y-Buffer erforderlich.
  • Durch Anpassung der Detailstufe werden in der Nähe mehr, in der Ferne weniger Details gerendert.

Links

  • Webprojekt-Demoseite
  • Einführung in die Voxel-Terrain-Engine
  • Persönliche Website

Karten

  • Farbe, Höhe

Lizenz

  • Der Softwareteil steht unter der MIT-Lizenz.
  • Die Voxel-Space-Technologie kann in manchen Ländern weiterhin patentiert sein.
  • Farb- und Höhenkarten wurden durch Reverse Engineering aus Comanche gewonnen und sind von der Lizenz ausgenommen.

1 Kommentare

 
GN⁺ 2025-01-05
Hacker News Kommentar
  • Ich vermisse die Zeit, in der originelle und elegante Algorithmen noch ein magisches Erlebnis boten. Als die Hardware-Ressourcen begrenzt waren, haben Entwickler Spiele durch neue Techniken und Kreativität vorangebracht.

    • Heutzutage sind fantasievolle Plattformen wie PICO-8 interessanter als die repetitiven Spiele großer AAA-Studios.
    • Algorithmen wie VoxelSpace zeigen, wie sich Geländedarstellung mit wenig Code umsetzen lässt.
  • Die Videos zu dem Programm mars.com sind interessant.

    • Weitere Infos dazu findest du auf der Seite Pouet.
  • Dieser Renderansatz ist zwar spannend, aber schwierig als Voxel zu klassifizieren, weil er keine beliebigen Volumen rendern kann. Es handelt sich vielmehr um eine saubere Implementierung eines Höhenkarten-Renderers.

  • Der Titel kann Diskussionen aus 2020 oder 2017 enthalten. 2021 gab es ebenfalls eine Diskussion über dasselbe Repository.

  • Als ich Programmieren lernte, hatte ich in QBasic ein Programm geschrieben, das Geländehöhenkarten erzeugte und sie in isometrischem Stil rendert. Das war eine der Sachen, die mich dazu brachten, weiter zu programmieren.

  • Ich habe mit dieser Technik ein Spiel mit Adventure Game Studio gebaut. Es ist nicht für ältere Engine-Versionen optimiert, aber irgendwann werde ich es aktualisieren.

  • In den meisten modernen Spielen sind Berge oft hohl, aber mit dieser Methode wirken Berge massiver.

  • Ich erinnere mich daran, wie beeindruckt ich war, als ich Comanche zum ersten Mal spielte. Es fühlte sich an, als käme es aus der Zukunft oder einem Film.

  • Projekte mit Software-Renderern sind lustig und eignen sich gut für ein Wochenendprojekt. Ich habe einen ähnlichen Algorithmus früher implementiert, aber die aktuelle Version ist deutlich performanter und einfacher.

  • Ich würde gern in einer alternativen Timeline leben, in der die GPU voxel-basiert ist.