ZFX
ZFX Neu
Home
Community
Neueste Posts
Chat
FAQ
IOTW
Tutorials
Bücher
zfxCON
ZFXCE
Mathlib
ASSIMP
NES
Wir über uns
Impressum
Regeln
Suchen
Mitgliederliste
Membername:
Passwort:
Besucher:
4421437
Jetzt (Chat):
5 (0)
Mitglieder:
5239
Themen:
24223
Nachrichten:
234554
Neuestes Mitglied:
-insane-
3D Spieleprogrammierung mit DirectX - Band I

 

Status: ERHÄLTLICH SEIT DEZEMBER 2000

Titel:              "3D Spieleprogrammierung mit DirectX in C/C++"     
Seitenanzahl:
672
Preis:
             42,18 €
Autor:            Stefan Zerbst
Verlag:
          BOD GmbH, Hamburg

ISBN               
3-8311-0593-6
Bestellen:       bei Amazon

      Cover                     


Screenshots  |  Inhaltsverzeichnis

Aus der Rezension von Amazon.de (Alexander Lucas)
"Der Bereich der Spieleprogrammierung erfreut sich eines immer stärkeren Interesses bei Programmierern, doch die Auswahl der Bücher ist begrenzt. So ist es erfreulich, dass 3-D Spielerprogrammierung mit DirectX in C/C++ von Stefan Zerbst hält, was es verspricht. Das Buch ermöglicht auch dem Einsteigern einen umfangreichen und gut strukturierten Einblick in die Welt der Spieleprogrammierung mit DirectX. Der Autor nimmt den Leser bei der Hand und führt ihn sicher an allen Fallstricken vorbei, die ein so komplexes Thema mit sich bringt.
[...]
Insgesamt ist
3-D Spielerprogrammierung mit DirectX in C/C++ ein gelungener Wurf für den interessierten aber weniger erfahrenen Leser, der sich in dieses Thema einarbeiten möchte
"


Beschreibung des Buchinhalts

Der erste Band dieser Reihe über 3D Spieleprogrammierung setzt direkt an der Wurzel des Themas an und beginnt mit einer Einführung in die Programmiersprache C/C++ für absolute Anfänger auf dem Gebiet der Programmierung oder dieser Sprache. Daran schliesst sich eine Einführung in die notwendigen Grundlagen der Programmierung für das Betriebssystem Windows an. Nachdem dann das nötige Vorwissen geschaffen wurde steht die Darlegung der geplanten und organisierten Entwicklung eines Computerspiels auf der Tagesordnung. In dieser Bücherreihe wird besonderer Wert auf die konsequente Planung von Software gelegt. Der mittlere Teil des ersten Bandes widmet sich schliesslich einer allgemeinen Einführung in Microsoft DirectX sowie in Aspekte der 2D Spieleprogrammierung. Dabei wird insbesondere die Verwendung von DirectInput (Tastatur-, Maus- und Joystick), DirectDraw (Fullscreen Fenster, Pixel, Linien, Rechtecke, Bitmaps, Sprites, usw.) und DirectSound (Soundeffekte) demonstriert. Dieser Teil des Buches schliesst ab mit der Entwicklung eines sehr einfachen 2D Beispiel Computerspiels mit einfacher isometrischer Grafik. Der dritte Teil des Buches widmet sich dann voll und ganz der 3D Grafik. Zunächst wird die grundlegende Technik einer 3D Engine inklusive aller Fachbegriffe und Konzepte erklärt. Danach schwenkt der Fokus auf Direct3D und dessen korrekte Initialisierung. Die folgenden Kapitel zeigen dann anhand des umfassenden 3D Demo Computerspiels WC 2.0 die praktische Implementierung eines virtuellen Universums, der Bewegung des Spielers in diesem Universum, einfache künstliche Intelligenz und Special Effects. Das Spiel bietet neben einem bewegten Sternenfeld und Blendeffekten durch die Sonne natürlich auch autonom agierende Wingmen, zwei verschiedene Gegnertypen, zu beschützende Transporter, eine Wegpunkt-Engine, Laserschüsse und Explosionen. Alle Quelltexte der Beispielprogramme sind als Download erhältlich da dem Buch aus technischen Gründen leider keine CD-ROM beiliegen kann. Zusätzlich benötigt man das MS DirectX SDK 7, 8 oder höher (die Quelltexte sind für die beiden genannten Versionen erhältlich) sowie einen entsprechenden C/C++ Compiler.


Screenshots der Programme aus dem Buch:

Wing Captain 2.0


Abbildung 9: Wing Captain 2.0


Abbildung 8: Explosion und Partikelsystem


Abbildung 7: Die Wingmen


Abbildung 6: Auch die Cat ist wieder dabei


Abbildung 5: Eine Raumstation


Abbildung 4: Ein feindlicher Bomber

  
Abbildung 3: Ein kleiner Transporter

IsoDD:


Abbildung 2: Zwei Buggys greifen an


Abbildung 1: Es gibt auch Lasertürme


 

Zurück zur Buchseite


Der Inhalt von Band I

Einführung

  • Über dieses Buch
    Was steht in diesem Buch
    Was steht nicht in diesem Buch
    Welches Vorwissen benötigt man
    Wie sollte man dieses Buch lesen
    Anmerkung
    Abbildungen, Tabelle und Symbole
    Verwendete Werkzeuge
      Ohne Computer läuft gar nix
      Der Compiler und die Programmiersprache
      Der Kern des ganzen, DirectX SDK
      Ein 3D Objekt Editor
  • Die Programmiersprache C/C++

  • Das wichtigste Werkzeug: Die Programmiersprache
      Der Quelltext oder "Wie sag‘ ich’s dem Computer?"
      Compiler versus Interpreter
      Compiler
      Interpreter
      Was ist besser
      Linker
      Und so sieht das bei C/C++ aus
    Einführung in C/C++
      Grundsätzliches zur Spieleprogrammierung mit C/C++
      Das erste eigene Programm
      Aufbau eines C/C++ Programmes
      Aufbau einer C/C++ Funktion
      Das "Hallo Welt" Programm
      Datentypen, Variablen und Anweisungen in C/C++
      Die wichtigsten Datentypen von C/C++
      Arbeiten mit Variablen und Casting
      Die #include Anweisung
      Die Funktion printf() im Detail
      Bedingte Anweisungen, die Bürokraten der Syntax
      Schleifen, die Wiederholungstäter
      Zwischenresümee
      Arrays, der Herdentrieb des Programmierers
      Zeichenketten in Arrays
      Speicherbereiche und Zeiger
      Mehr über Funktionen
      Geben ist seliger denn nehmen, der Rückgabewert
      Prototypen und Header Dateien, so viel Ordnung muß sein.
      Call-by-Reference versus Call-by-Value
      Dynamische Speicherzuweisung
      Strukturen und eigene Datentypen
      Die einfach verkettete verkettete Liste
      Initialisieren der einfach verketteten Liste
      Einfügen von Daten in die einfach verkettete Liste
      Löschen von Daten aus der einfach verketteten Liste
      Hilfsfunktionen der einfach verketteten Liste
      Testen der einfach verketteten Liste
      Die obersten Direktiven, den Precompiler richtig nutzen
      Namenskonventionen
    Last Minute Gifts: Externes, Zufälle und Modulo
    Zusammenfassung
    Ausblick
  • Die Windows Programmierung mit C/C++

  • Die Mysterien von C/C++ unter Windows
      Die Windows-basierte Version von "Hallo Welt"
      Die Startfunktion unter Windows
      Eine Dialogbox erzeugen
      Ein einfaches Fensterprogramm
      Die Fenster-Klasse
      Erzeugen einer Fenster-Klasse
      Bitte um Rückruf, Nachrichtenverkehr und CALLBACK Funktionen
      Und jetzt alle zusammen
      Malen nach Zahlen – Windows GDI
      Geräte, Stifte und Pinsel
      Noch ein Wort zu den Handles
      Gerätekontext und Texte
      Linien, Rechtecke, Kreise und Fonts
    Die Spieleprogrammierung
      Einleitende Worte
      Das Entwicklungsskript
      1. GROBENTWURF
      1.1 GE: Der Arbeitsname des Spiels
      1.2 GE: Das Genre und die Systemanforderungen des Spiels
      1.3 GE: Der Ablauf des Spiels
      1.4 GE: Das Storyboard
      1.5 GE: Gameplay-Design
      1.6 GE: Level-Design
      1.7 GE: Last Chance Check
      2. FEINENTWURF
      2.1 FE: Unterteilung des Programms in Dateien
      2.2 FE: Datenstrukturen
      2.3 FE: Globale Variablen
      2.4 FE: Wichtige Funktionsprototypen
      2.5 FE: Der Zeitplan und die Meilensteine
      Fazit
      Die große Kälte – Codefreezing
      Die drei Phasen des Spielablaufs
      1. Initialisierung
      2. Hauptschleife
      3. Beenden
      Gesamtüberblick über die drei Phasen
      Ein paar gute Tips
      Wer hat an der Uhr gedreht – Die Framerate
      Rahmenprogramm eines Windows Spiels
    Zusammenfassung
    Ausblick
  • COM’s und DirectX Grundlagen

  • Das Component Object Model Konzept
      Warnung!
      Die Idee hinter den COM Objekten
      Ein bißchen C++ muß sein
      Was ist ein Objekt
      Polymorphismus durch virtuelle Funktionen
      Zurück zu den COM Objekten
      Wie entstand COM
      Was steht in der COM Spezifikation
      Ein virtuelles COM Beispielprogramm in C/C++
    DirectX Einführung
      Warum braucht man DirectX
      So funktioniert DirectX
      Hardwarezugriff durch HAL
      Softwareemulation durch HEL
      Erzeugen eines DirectX Interface Objektes
      DirectX Datentypen, Windows und die langen Zeiger
      Kritik an DirectX
      Compiler Einstellung für DirectX Programme
      Generelle Compiler Einstellungen
      Einstellungen für jedes neue Projekt
    Zusammenfassung
    Ausblick
  • DirektDraw näher betrachtet

  • DirectDraw Einführung
      Wichtige DirectDraw Interfaces und Strukturen
      DirectDraw Interfaces
      DirectDraw Datenstrukturen
      Erzeugen des DirectDraw Objektes
      Zusammenarbeit mit Windows und der Bildschirmmodus
    Die Surfaces – Oberflächen von DirectDraw
      Primäre Oberflächen und Back Buffers
      Eine einfache Primary Surface erzeugen
      Eine Complex Surface erzeugen
      Eine Offscreen Surface erzeugen
      RAM versus VRAM
      Noch ein Wort zum (Back) Buffering
      Löschen von Surface Inhalten
      Anzeigen der Complex Surface am Bildschirm
      Anzeigen einer Offscreen Surface am Bildschirn
      Transparenz durch Color Keying
      Aufräumen nicht vergessen
      DirectDraw und GDI
      Malen von Pixeln
    Ein DirectDraw Beispielprogramm
    Primitive 2D Grafik
      Der Computer lernt schreiben – unsere eigene Textengine
      Eine DirectDraw Textengine
      Und das hat es uns gebracht
      Rechtecke sind einfacher als Linien
      Und es geht doch, Bresenhams Linienalgorithmus
    Zusammenfassung
    Ausblick
  • Interaktivität durch DirectInput

  • DirectInput Einführung
      Wozu braucht ein Spiel Input
      Wichtige DirectInput Interfaces und Strukturen
      DirectInput Interfaces
      DirectInput Datenstrukturen
      Erzeugen des DirectInput Objektes
    Arbeiten mit dem Keyboard
      Schritte zur Nutzung eines Keyboard Objektes
      Erzeugung des Keyboard Objektes
      Abfragen des Keyboard Objektes
    Arbeiten mit der Maus
      Schritte zur Erzeugung eines Maus Objektes
      Erzeugung des Maus Objektes
      Abfragen des Maus Objektes
    Arbeiten mit dem Joystick
      Schritte zur Erzeugung eines Joystick Objektes
      Erzeugung des Joystick Objektes
      Suchen eines Joysticks
      Erzeugen eines Joysticks
      Abfragen des Joystick Objektes
    Freigeben der DirectInput Objekte
    Eine DirectInput Bibliothek
    Zusammenfassung
    Ausblick
  • IsoDD: DirectDraw für Fortgeschrittene

  • Ein paar einleitende Worte
    Das Entwicklungsskript
      1. Der Grobentwurf
      1.1 GE: Der Arbeitsname für das Spiel
      1.2 GE: Das Genre und die Systemanforderungen des Spiels
      1.3 GE: Der Ablauf des Spiels
      1.4 GE: Das Storyboard
      1.5 GE: Gameplay-Design
      1.6 GE: Level-Design
      1.7 GE: Last Chance Check
      2. Der Feinentwurf
      2.1 FE: Unterteilung des Programms in Dateien
      2.2 FE: Datenstrukturen
      2.3 FE: Globale Variablen
      2.4 FE: Wichtige Funktionsprototypen
      2.5 FE: Der Zeitplan und die Meilensteine
    Laden eines Bitmaps
      So sieht der Computer eine Bitmap Datei
      Lesen von Daten aus externen Dateien
      Farbpaletten für DirectDraw Surfaces
    Verwenden von Bitmap Grafiken für IsoDD
      Kacheln - Einführung in Tiles
      Aus Tiles werden Sprites
      Die Datenstrukturen für IsoDD
      Handling der Datenstrukturen – Funktionen für die Sprites
      Schnittig bleiben mit den DirectDraw Clippern
      Die Dateien XXXBitmap.cpp und XXXBitmap.h
    Der schiefe Blick – Isometrie
      Erzeugen und Anzeigen des Spielsfeldes
      Weltkoordinaten versus Schirmkoordinaten – Scrolling
      Das Malen des Spielfeldes
      Die Dateien XXXSpielfeld.cpp und XXXSpielfeld.h
    Die Objekte im Spiel
      Das Erzeugen der Objekte
      Künstliche Intelligenz der Objekte
      Der IsoDD Kompaßring – Hilfsfunktionen zur Richtungsbestimmung
      Bewegung der Objekte auf dem Spielfeld
      Silikon denkt Teil I, KI der Lasertürme
      Silikon denkt Teil II, KI des Buggys
      Kollisionen der Objekte für ein interaktives Spielfeld
      Grafische Ausgabe der Objekte
      Die Dateien XXXObjekt.cpp und XXXObjekt.h
    Und jetzt alle zusammen, das fertige Spiel
      Input des Spielers abfragen
      Die Dateien XXXMain.cpp und XXXMain.h
      Das Erweiterungspotential von IsoDD
      Kleider machen Leute, die Optik von IsoDD
      Goofy oder Einstein, die KI von IsoDD
      Was steckt unter der Haube, die Technologien von IsoDD
    Zusammenfassung
    Ausblick
  • DirectSound bittet um Gehör

  • DirectSound Einführung
      Wichtige DirectSound Interfaces und Strukturen
      DirectSound Interfaces
      DirectSound Datenstrukturen
      Erzeugen des DirectSound Objektes
      Zusammenarbeit mit Windows
    Die SoundBuffer – Oberflächen von DirectSound
      Primäre und sekundäre SoundBuffer
      Was ist Sound
      Wave Dateien, so sieht der Computer den Sound
      Laden einer Wave Datei
      1. Schritt: Den Header mit dem Wave Format lesen
      2. Schritt: Die eigentlichen Wave Daten lesen
      Und jetzt alle zusammen
      Erzeugen eines Secondary SoundBuffers aus den Wave Daten
      Abspielen eines Secondary SoundBuffers
      Ein-Weg-Sound, das einfache Abspielen
      Recycling-Sound, das Abspielen als Schleife
    Eine DirectSound Bibliothek
    Einbinden von Sound in IsoDD
    Zusammenfassung
    Ausblick
  • Grundlagen der 3D Grafik

  • Die unvermeidliche Mathematik
      Das Kartesische Koordinatensystem
      Die drei Koordinatensysteme
      Perspektiven und Projektion
      Transformationen in drei Dimensionen
      Verschiebung
      Skalierung
      Rotation
      Bewegung in der virtuellen Welt
      Das vierte Koordinatensystem, die Kamera
      Exkurs: Matrixmultiplikation:
      Die komplette Transformationspipeline
      Malen von 3D Objekten und Rückseitenentfernung
      Das Problem der verdeckten Oberflächen
      Der Painter Algorithmus
      Der z-Buffer
      Culling und Clipping - Die Augen des Betrachters
    Ablaufschema einer 3D Engine
    Etwas mehr Realismus
      Die Quelle des Lebens, Lichteffekte
      Ambientes und direktes Licht
      Lichtreflexion auf Oberflächen, diffus oder spekulär
      Realistischere Beleuchtungen der Objekte
      Texturen auf den Objekten
    Zusammenfassung
    Ausblick
  • Durch die Hölle, Initialisierung von Direct3D

  • Direct3D Einführung
      Wichtige Direct3D Interfaces und Strukturen
      Direct3D Interfaces
      Direct3D Datenstrukturen
    Die zwei Seiten und das Gerüst von Direct3D
    Enumeration und wozu sie gut ist
    Die große Schlacht
      Das Angriffsziel, was gibt es überhaupt zu finden
      Der Angriffsplan, Wegpunkte im Manöver
      Eine Datenstruktur für Informationen aus der Enumeration
      1. DirectDraw Driver und Direct3D Devices enumerieren
      Enumeration der DirectDraw Driver und der DisplayModes
      Enumeration der Direct3D Devices
      2. Ein geeignetes Direct3D Device auswählen
      3. Erzeugen der DirectDraw Objekte
      4. Erzeugen der Direct3D Objekte
      Die Direct3D Objekte
      Der Z-Buffer
    Ade ihr 8 Bit, neue 2D Grafik Funktionen
    Bunte Bilder, 24 Bit Bitmaps laden
    Eine Direct3D Initialisierungs-Bibliothek
      Die Dateien XXXD3DInit.cpp und XXXD3DInit.h
      Die neuen Dateien XXXMain.h und XXXMain.cpp
    Zusammenfassung
    Ausblick
  • Primitive 3D Grafik erzeugen

  • Wichtige Grundlagen für Direct3D
      Weitere Typdefinition
      Implementierung der mathematischen Hilfsfunktionen
    Das Direct3D Device
      Die Direct3D Pipeline
      Nicht drängeln, einer nach dem anderen
      Kamerakoordinaten durch die View Matrix
      Bildschirmkoordinaten durch die Projektionsmatrix
      Die Malumgebung, festlegen des Render States
      Anfang und Ende der Szene
      Primitive malen, die Welt aus Dreiecken
      Punktlisten
      Linien
      Dreiecke
      Indiziert versus nicht inidziert
    Die erste 3D Ausgabe auf dem Bildschirm
    Initialisierung der Szene
      Das Material der Oberflächen
      Diffuse und ambiente Reflexion
      Die Erleuchtung, Emission von Licht
      Spekuläre Reflexion
      Das Testmaterial für die Szene
      Und es ward Licht, Direct3D Lichtquellen
      Directional Lights
      Point Lights
      Spot Lights
      Gutes Licht, böses Licht
      Ein beispielhaftes Licht
      Die Szene erstellen
    Malen eines Rechtecks
    Texturen für mehr Realismus
      Erzeugen von Texturen
      Automatisches Texture Management
      Goldene Regeln für Texturen
      Laden von Texturen
      Rendern mit Texturen
      Texturen aktivieren
      Texturkoordinaten
      Ein Rechteck mit Texture Map malen
    Transparentes Rendern, das Alpha
      Alpha hier und Alpha da
      Ein semi-transparentes Rechteck malen
    Testen der Renderfunktionalität
      Die Dateien XXX3DMathe.cpp und XXX3DMathe.h
      Die Dateien XXXTextur.cpp und XXXTextur.h
      Die neuen Dateien XXXD3DInit.cpp und XXXD3DInit.h
      Notwendige Änderungen für die Main Dateien
    Zusammenfassung
    Ausblick
  • Das virtuelle Universum, Wing Captain 2.0

  • Bewegung in der virtuellen Welt
      Und schon wieder Mathematik
      Normalisierung von Vektoren
      Multiplikation eines Vektors mit einer Matrix
      Rotationsmatrizen um die x,y und z Achse
      Rotationsmatrix um eine beliebige Achse
      Die neue View Matrix
    Nachschlag für XXXSound Dateien
    Wing Captain 2.0
      Was ist Wing Captain
      Wo ist das Entwicklungsskript
      Die Spielerstruktur für Wing Captain
      Das Bewegungsmodell für Wing Captain
      Steuerkommandos für unseren Raumjäger
      Initialisierung des Spielers und der View Matrix
      Bewegung und Rotation des Spielers
      Ein Meer von Sternen als Hintergrund
      Fliegende Partikel zeigen die Bewegung
      Der Sonne geht es blendend
      Aktivierung der Effekte
    Laden und rendern komplexer 3D Objekte
      So werden die 3D Modelle erzeugt
      Das X File Datei Format
      Die Wing Captain Datenstruktur für X Files
      Laden und rendern eines X Files
      Gedanken zur Performance
      Überblick über die Objekte in Wing Captain
      Laden und Malen der Wing Captain Objekte
    Schneller malen durch Object Culling
    Eine harte Welt, Kollisionsabfragen
    Wing Captain Quelltext
      Die Dateien XXXSpieler.cpp und XXXSpieler.h
      Die Dateien XXXObjekt.cpp und XXXObjekt.h
      Die Dateien XXXUmgebung .cpp und XXXUmgebung.h
      Die neue Initialisierung der Szene
      Die neue Datei XXXGlobal.h
      Geänderte Funktionen der Datei XXXMain.cpp
    Zusammenfassung
    Ausblick
  • Wing Captain Special Effects

  • Special Effects Techniken
      3D Modelle versus Decals
      Billboards statt Decals
      Und wieder Decals statt Billboards
      Echte Modelle versus Decals versus Billboards
      Animierte Billboards
    Wing Captain‘s Feuerzauber
      Voraussetzungen für den Feuerzauber
      Erweiterung der XXXOBJEKT Struktur
      Besserer Sound
      Laserschüsse erzeugen und bewegen
      Explosionen erzeugen und animieren
      Partikelsysteme erzeugen und animieren
      Weitere Ideen für Partikelsysteme
      Das Malen der Effekte
    Wing Captain Quelltext
      Die neue Datei XXXMain.cpp
      Weitere Änderungen am bisherigen Quelltext
      Die Dateien XXXFeuerzauber.cpp und XXXFeuerzauber.h
    Zusammenfassung
    Ausblick
  • Künstliche Intelligenz

  • Ich denke, also bin ich
      Das menschliche Gehirn: Neuronen, Kanonen und Spatzen
      Pragmatischere Ansätze
    Entscheidungen für globales Verhalten
      Zustandsautomaten
      Probabilistische Systeme
    Ausführung eines gewählten Zustands
      Einfache Zielverfolgungstechniken
      Realistische Zielverfolgungstechniken
      Echte Pfadfinder haben es schwer
      Voraufgezeichnete Pfade
      Die Wegpunkt Engine von Wing Captain
      Änderungen an der XXXOBJEKT Datenstruktur
      Wing Captain, folgen sie dem weißen Kaninchen
      Initialisierung der WCp Objekte und des neuen Transporter Pfads
      Fauxpas
      Die Jäger bitten zum Tanz
    KI für Fortgeschrittene
      Arbeiten im Team
      Wie intelligent darf ein Objekt sein
    Zusammenfassung
    Ausblick
  • Last Minute Ideen

  • Kopf hoch, das HUD
      Position der Objekte auf einem Scanner
      Markierungsrechteck und Vorhaltewinkel
      Zeilmarkierung, Umrechnung von Welt- in Bildschirmkoordinaten
      Durchschalten der Ziele
      Vorhaltewinkel
    Energieschirme
    Einheiten in Meter pro Sekunde
    Zusammenfassung
    Ausblick
  • Das bittere Ende

    Index


    Zurück zur Buchseite