Wolfenstein 3D (SF 128)

Ich denke, dass Shinobi in allen Punkten richtig liegt.

Doom setzt keine FPU voraus. Daher gehe ich davon aus, dass das Spiel mit Integer-Arithmetik auskommt. Und dann auch der Vorgänger Wolfenstein.

Ich bin einigermaßen mit der Amiga-Community verbunden. Und da ist man seit Doom gekränkt, dass der Amiga sowas nicht (gut) kann. Aber jetzt endlich, 30 Jahre später, hat es jemand vollbracht, irgendwie die Hardware so auszutricksen, dass man auf einem nackten Amiga 500 eine technisch einigermaßen vergleichbare Performance bekommt. Das Spiel heißt „Dread“. Da gibts eine kostenlose Demo von. Ehrlicherweise ist das Ergebnis irgendwo zwischen Wolf3D und Doom.

3 „Gefällt mir“

Passend zum Hardware Thema habe ich erst vor ein paar Tagen gesehen, dass Wolfenstein 3D für einen Intel 8088 aus 1979 umgesetzt wurde:

3 „Gefällt mir“

Das Game Engine Black Book zu Wolfenstein 3D (und auch das zu Doom) kann ich ebenfalls absolut empfehlen. Aber obacht: Die Techniken und Optimierungen, die sich diese Engines zu nutzen machen, werden zwar gut und anschaulich eingeführt, aber etwas informatisches Verständnis schadet sicher nicht. Tolle Bücher!

Für die Build-Engine gibt es sowas leider nicht, aber die Website von Ken Silverman (Ken Silverman's Official Home Page) ist ein schönes Sammelsurium an interessanten Kuriositäten, nebst den dort verfügbaren Quellen für die Build-Engine 1 und 2.

3 „Gefällt mir“

Vor der Popularisierung von 3D Karten waren Gleitkommaalgorithmen eigentlich immer nur auf ganz spezielle Aspekte einer 3D Engine limitiert. Das liegt einerseits daran, das die „Integer“ also die Ganzzahlen Rechenleistung der CPUs immer signifikant höher war und andererseits weil die meisten FPUs nicht nur im Vergleich langsamer gewesen sind sondern auch schlechter an die CPU und den Bus angebunden waren zusätzlich frisst das „normalisieren“ einer Single oder Double Precision Floating Point Zahl (also das hin- und herschieben des Kommas und die Manipulation von Mantisse und exponent) zusätzlich Zeit.

Eine Integer Addition dauert auf einem 486 einen CPU Clock Cycle bzw. 2 wenn einer der Parameter im Speicher und nicht in einem CPU Register steht.

Eine Floating Point Addition braucht 20.

Das wurde erst mit dem Pentium besser

Außerdem hat man Fliesskomma Zahlen deshalb entwickelt weil sich damit im Mittel bei gleicher Bitbreite eine höhere Präzision der Rechenergebnisse erzielen lässt (geltende Stellen nach dem Komma) als bei „Festkomma“ Berechnungen.

Festkomma hat aber den Vorteil das man es mit den Integer-Rechenwerken der CPUs und mit der ganz normalen Addition, Subtraktion, Multiplikation und Division abbilden kann und die niedrigere Genauigkeit spielt für die Spiele in der Regel keine Rolle.

Deshalb hat man Gleitkomma-Verfahren als Ergänzung da verwendet wo es absolut notwendig war. In dem relativ engen Zeitfenster von vielleicht 5 Jahren wo man auf CPU Rendering angewiesen war. Mit dem Aufkommen der 3D Grafikbeschleuniger hat sich das dann relativ schnell nach dorthin verlagert…

Selbst heute bilden aktuelle Grafikkarten noch einige Dinge mit reiner Integer Arithmetik ab

4 „Gefällt mir“

Es gab eine Build 2 Engine? :astonished:

1 „Gefällt mir“

Das war im Newsletter!

2 „Gefällt mir“

„Soweit ich weiß setzte auch Doom noch auf Fixed-Point-Arithmetik, insofern würde es mich überraschen wenn Wolfenstein tatsächlich Floating-Point genutzt hätte.“

Richtig, und genau so sagen wir das doch auch in der Folge? W3D benutzt nur Integer.

4 „Gefällt mir“

Ja, offensichtlich schon. Aber Build 2 ist mehr als Hobby-Projekt zu verstehen, das zwischen 2006-2011 entstanden ist. Zu dem Zeitpunkt war das, was Build 2 geleistet hat, schon nicht mehr zeitgemäß.

Ah, damit kam dann wohl nie ein offizielles Spiel raus? Jetzt beim ansehen der Webseite von Ken Silverman dämmert es mir aber ein klein wenig, davon mal was gesehen zu haben, muss ich aber wohl komplett verdrängt haben

Stimmt. Ihr habt nie was anderes behauptet.

1 „Gefällt mir“

Mal wieder eine richtig nice Folge, vielen Dank!

Schade, dass Blake Stone im Kontext zu Wolfenstein 3D immer gerne vergessen wird. Das Spiel wurde von Jam Software entwickelt und von Apogee gepublisht. Die Wolfenstein-Engine wird fast 1:1 verwendet, nur sind wie bereits genannt auch texturierte Böden und Decken möglich, außerdem gibt es interaktive Schalter und Elemente, und was die Spielbarkeit extrem erhöht: Eine sehr gut funktionierende und übersichtliche Automapping-Karte (die beim Nachfolger Planet Strike leider durch ein weniger gutes Radar ersetzt wurde). Das Thema ist diesmal ein Space-B-Movie mit Space-Polizisten und allerhand Mutanten und Aliens, alles wunderschön gepixelt und von der Farbpalette nicht ganz so grell wie Wolfenstein, aber immer noch bunt und gut „lesbar“.

Wolfenstein kann ich wegen der fehlenden Karte und dem labyrinthartigen Leveldesign nur noch sehr eingeschränkt genießen, aber Blake Stone macht als Retroshooter immer noch Laune, auch wenn man Doom, Duke usw. kennt. Das Gameplay ist zwar repetitiv, aber einfach tight. Das hole ich immer mal wieder alle paar Jahre raus und zock es mal. Eigentlich das bessere Wolfenstein.

3 „Gefällt mir“

Ja, das war super eindeutig von euch, dass W3Ds Raycasting Engine Floating Point aus dem Weg geht.

Die PS1 benutzte übrigens Fixed Point statt Floating Point, aber mit Polygonen. Das dadurch entstehende Zittern ist berüchtigt.

Fixed Point ist super. Stinknormale Adder und Multiplier, keine doofe Normalisierung, Genauigkeit ist sonnenklar und selbst in der Frequenz-Domäne sind Algorithmen damit einfach und klar charakterisierbar. Toll bei der Signalverarbeitung, egal ob in FPGAs oder DSPs, oder einfach in C code.

Schaut bei totaler Verwendung in „echten“ 3D-Spielen halt komisch aus. :sweat_smile:

Für mich ist Programmieren von DSPs ganz kurz vor Alchemie

1 „Gefällt mir“

Doom ist kein Raycaster. Das ist irgendwie ein gängiges Missverständnis, aber stimmt halt nicht.

Das Wabern liegt an der fehlenden Perspektivkorrektur und hat direkt nichts mit Floatingpoint vs. Fixedpoint zu tun.

2 „Gefällt mir“

Du hast Recht, “Zittern” wäre vielleicht ein besserer Begriff. Das was man als Wabern wahrnimmt liegt wohl in der Tat nicht daran. Ich hab’s mal in meiner Antwort korrigiert.

1 „Gefällt mir“

Uff, da machst du aber jetzt ein Fass auf, da wird gerne gestritten. Ich persönlich hab da keine Meinung.

Es geht mir tatsächlich auch so, dass ich manchmal die braunen Topfpflanzen für Soldaten halte und die schließenden Türen für Schussgeräusche. Aber das ging mir schon immer so, das kann kein Altersleiden sein hoff

Ich gehe sogar davon aus, dass das von den Entwicklern beabsichtigt war.

1 „Gefällt mir“

Ihr sagt, dass die fehlende Float-Unterstützung ein Grund für die miese 3D-Performance der Zeit ist und sich das mit dem 486 dann ändert. Mein Kopf hat daraus offenbar gemacht, dass W3D wohl Floats nutzten würde. Aber du hast recht, das sagt ihr so nicht, und ihr erklärt dann dass es auch auf einem 286 funktioniert. Sorry, das hatte ich falsch verstanden.

Ich bleibe allerdings dabei, dass es stärkere Argumente für die schlechte 3D-Performance der Zeit gibt als die fehlenden FPUs :slight_smile: