Einen Flight Simulator direkt in C++ bauen (1996)
(archive.org)- Ein englischsprachiges Material zur DOS-Spielprogrammierung von 1996, das den Prozess behandelt, einen Flight Simulator direkt in C++ zu implementieren
- Die Themen-Tags sind hauptsächlich MS-DOS, 3D, Gamedev, tutorial, Retrogaming und C++
- Es handelt sich nicht nur um ein einfaches Dokument, sondern enthält sogar ein CD-ROM-Image mit Beispielcode, wodurch auch die damalige Entwicklungsumgebung mitbewahrt wird
- Über das Internet Archive kann es in verschiedenen Formaten wie PDF, EPUB, Full Text, ISO Image und Torrent heruntergeladen werden
- Für alle, die nach Materialien zur Retro-Spielentwicklung und DOS-Programmierung suchen, ist dies ein Archivexemplar, bei dem Buch und Begleitmaterial an einem Ort verfügbar sind
Im Internet Archive registriertes Material
- Das unter dem Internet-Archive-Eintrag registrierte Material ist Build Your Own Flight Sim In C++ (DOS GameDev)
- Die Autoren sind Michael Radtke und Chris Lampton, und es handelt sich um ein 1996 erschienenes englischsprachiges Werk
- Die ISBN lautet 1-57169-022-0
- Die Themen sind als MS-DOS, Programming, 3D, Gamedev, tutorial, Retrogaming und C++ klassifiziert
Vom Buch abgedeckter Entwicklungsumfang
- Das Ziel ist, einen Flight Simulator direkt in C++ zu schreiben
- Es ist Material, das im Kontext von DOS-Spielprogrammierung sowie 3D- und Retro-Spielentwicklung genutzt wird
- Der Flight Simulator enthält SB16-Sound
- Ein CD-ROM-Image mit Beispielcode wird zusammen bereitgestellt
Kontext der Archivierung
- Als Retro City Rampage auf DOS portiert wurde, gab es den Hintergrund, dass der Entwickler bedauerte, alle früher besessenen Bücher über DOS-Programmierung und Spieleentwicklung weggeworfen zu haben und sie online nur schwer zu finden seien
- In diesem Zusammenhang wird das Material als im Internet Archive registriertes Buch zur DOS-Spielentwicklung vorgestellt
Verfügbare Download-Formate
- Im Internet Archive werden mehrere Download-Formate angeboten
- PDF: 308.9M
- EPUB: 768.5K
- Full Text: 1.1M
- ISO Image: 11.5M
- Single Page Processed JP2 ZIP: 321.7M
- Torrent: 32.5K
- Als OCR-bezogene Dateien werden auch CHOCR, HOCR, OCR Page Index und OCR Search Text bereitgestellt
Archivierung und Metadaten
- Die Größe des Eintrags wird mit 706.7M angegeben
- Es ist in der CD-ROM Software Library, CD-ROM Software Collection und The Vintage Software Collection des Internet Archive enthalten
- Die OCR wurde mit tesseract 5.0.0-alpha-20201231-10-g1236 verarbeitet, und die erkannte Sprache ist Englisch
1 Kommentare
Meinungen auf Hacker News
Ah, dieses Buch! Es erinnert mich an die Zeit, als ich Wolfenstein, Ken's Labyrinth und Doom spielte und mich fragte, wie zur Hölle man so etwas macht.
Ich arbeitete damals in einem „Computerladen“, der Löhne nicht zahlen konnte oder wollte, und durfte mir als Bezahlung für den Tag irgendein Buch aus dem Laden mitnehmen. Aus einem Impuls heraus griff ich zu diesem hier.
Auf der Busfahrt nach Hause verpasste ich meine Haltestelle, denn obwohl es ein Buch über Flugsimulatoren war, behandelte es genau die Algorithmen und Techniken der 3D-Programmierung, über die ich mich gewundert hatte.
Einen Flugsimulator habe ich nie gebaut, aber mit dem Wissen aus diesem Buch habe ich ein ziemlich grobes 3D-Spiel erstellt. Es hatte keine Wandkollisionen, Sprite-basierte Items gingen nach einiger Zeit zufällig kaputt, und ich bekam nie wirklich ein Gefühl dafür, warum man statt geometrischer Transformationen Matrizenmultiplikation verwenden sollte. Aber dieses Buch festigte meine Liebe zur Programmierung zu einem Zeitpunkt, an dem ich ohne ein tiefgehenderes Projekt wohl nicht weitergemacht hätte.
Der Lehrer kannte sich mit der Mathematik nicht aus, und als er in Algebra II Matrizen unterrichtete, konnte er auch nicht richtig erklären, wie Matrizen in der „realen Welt“ verwendet werden.
Irgendwie fand ich dann in einer ein paar Jahre alten Byte-Ausgabe einen Artikel über 3D-Grafik, in dem Matrizen und Punkte für Rotationen und Ähnliches verwendet wurden.
Damit ließ ich auf einem PET 2001 einen Würfel rotieren. In der ganzen Erhabenheit eines 40x24-Bildschirms. Eigentlich waren es nur 8 Punkte, und wenn man im Dunkeln die Augen zusammenkniff, sah es wie ein Würfel aus.
Später an der Uni konnte ich einen Tektronix-Speicherröhren-Mikrocomputer benutzen. Anders als ein Terminal war er eigenständig, und er konnte einen Würfel ziemlich gut rendern. Außerdem gab ich ein mühsam auf Millimeterpapier entworfenes Auto Zeile für Zeile in DATA-Anweisungen des eingebauten BASIC ein.
Damals waren die frühen Foley-Van-Dam-Bücher die Grafikbücher, die alle haben wollten.
In „Survey of Physics“ an der Uni bekam ich eine Drei, und die Mathematik, mit der man physikalische Phänomene modelliert, fiel mir wirklich schwer. Analysis und abstrakte Sachen konnte ich alle gut, aber was das über mich aussagt, weiß ich nicht.
Wenn euch das interessiert, könnte auch der Onlinekurs spannend sein, den ich gerade höre: https://pikuma.com/courses/learn-3d-computer-graphics-progra...
Der Dozent unterrichtet das Thema an einer Universität in London, und man merkt deutlich, dass er viel Lehrerfahrung hat. Das Tempo war bisher perfekt, und der Kurs hält genau, was die Beschreibung verspricht. Wenn ich den Grafikkurs abgeschlossen habe, werde ich mir nach und nach auch andere Kurse dieses Dozenten ansehen.
Er lehrt, wie man Grafik von Grund auf in C programmiert; die einzige Abhängigkeit ist SDL2. Zuerst baut man eine SDL2-Abstraktion, mit der man die Farbe einzelner Pixel setzen kann, und der Rest des Kurses baut darauf auf. Die Struktur ist: Wenn man die Farbe eines einzelnen Pixels bestimmen kann, lernt man danach, ob man damit bis hin zu einer 3D-texturierten Eule alles zeichnen kann.
Ich folge dem Kurs in Rust und verwende nur die SDL2-Bindings für Rust. Ich habe Spaß daran, halte ihn für ein ehrliches Angebot und einen guten Kurs und wollte ihn deshalb teilen. Anderswo habe ich kaum jemanden über diese Kurse sprechen sehen.
Ich erinnere mich noch daran, dieses Buch besessen zu haben. Ich war wahrscheinlich etwa 14 oder 15 und hatte gerade meine erste Flugstunde gehabt und war voll in die Luftfahrt eingetaucht.
Ich hatte auch den MS Flight Simulator und brachte mir C++ selbst bei, aber der Inhalt des Buchs war für mein damaliges Niveau etwas zu anspruchsvoll. Trotzdem ist es schön, sich wieder an die Begeisterung zu erinnern, die ich spürte, als ich dieses Buch in die Hände bekam und dachte, ich könnte meinen eigenen Flugsimulator bauen. Wenn ich mich richtig erinnere, war der Simulator, den man im Buch baut, allerdings nahezu unspielbar.
Dieses Buch und „The Black Art of 3D Game Programming“ waren meine beiden Lieblingsbücher aus der Kindheit.
https://archive.org/details/BlackArt3DEBook
Lustigerweise schlug ich zufällig Seite 216 auf und fand dort eine ziemlich grundlegende, aber robuste Methode, 3D-Weltkoordinaten auf eine Kugel abzubilden; und vor Kurzem hatte ich gerade über die völlig andere Lösung zur Welterzeugung in No Man's Sky gelesen.
https://www.polygon.com/2017/3/2/14790028/no-mans-sky-was-fl...
Ich wünschte, es gäbe heute mehr solcher Texte. Wirklich großartig.
Allerdings lässt sich der ePub-Link nicht herunterladen:
https://ia904505.us.archive.org/epub/index.php?id=build-your...
No valid doc name could be determinedSchade, dann muss ich mich wohl mit dem PDF begnügen. Schade ist auch, dass der Web-Viewer des Internet Archive nicht besonders gut ist.
Funktionierender PDF-Link: https://archive.org/download/build-your-own-flight-sim-in-c-...
Ich habe die Programme, die ich beim Durcharbeiten dieses Buchs geschrieben habe, immer noch. Das Erlebnis, einer 3D-Welt Leben einzuhauchen, war magisch. Man beginnt mit einem schwarzen Bildschirm, zeichnet ein paar Linien, bewegt sie auf genau die richtige Weise – und plötzlich entsteht auf dem Bildschirm eine Welt. Heute ist es schwer, dieses Gefühl noch zu bekommen.
Ich glaube, ich habe das Buch zu meinem 13. Geburtstag geschenkt bekommen, deshalb war ein Teil der Mathematik damals etwas schwierig für mich. Trotzdem war es für einen Programmieranfänger ein hervorragendes Training, Assembler zu lernen und sich in komplexere Algorithmen wie Polygon-Clipping zu vertiefen.
Beeindruckend ist, wie viele Seiten dieses Buch darauf verwendet, ein Universum zu erschaffen. Damals war es noch nicht so, dass man einfach die OpenGL-Bibliothek einschaltete, den Stack initialisierte und fertig war.
Das Buch beginnt mit Dingen wie: welche Register man setzen muss, um die VGA-Karte in den richtigen Modus zu versetzen, wie man Bitmaps und Paletten von der Festplatte liest, wie man selbst einen Run-Length-Encoder schreibt, um Bitmap-Speicher zu sparen, und welche Register man am Joystick-Port setzen muss.
Ich habe dieses Buch bis zum Ende durchgearbeitet. Da ich auf einem Mac gearbeitet habe, waren Anpassungen nötig, aber ich habe den Bresenham-Algorithmus, Polygon-Clipping, Backface Culling und anderes implementiert.
Normalerweise wäre ich wohl an Mathematik wie Matrizen, Skalarprodukt und Kreuzprodukt gescheitert, die mir zum ersten Mal begegnete. Zum Glück belegte ich an der Uni gerade einen Sommerkurs in linearer Algebra, sodass der Inhalt des Buchs ziemlich gut zur Vorlesung passte.
Wenn ich mich richtig erinnere, lag diesem Buch eine 5,25-Zoll-Diskette mit einem Simulator bei, in dem man um pyramidenförmige Berge fliegen konnte. Da kommen schöne Erinnerungen hoch.