Inhalt | 8 |
Vorwort | 14 |
1 Das Gamestudio-Autorensystem | 20 |
1.1?Die Acknex-Engine A8 | 20 |
1.2?Die verschiedenen Editionen | 21 |
1.3?Die Komponenten des Gamestudios | 23 |
1.3.1?Der Scripteditor (SED) | 23 |
1.3.2?Der Worldeditor (WED) | 26 |
1.3.3?Der Modelleditor (MED) | 27 |
1.3.4?Der Ingame-Editor (GED) | 27 |
1.4?Templates?– Zwei Wege führen zum Ziel | 28 |
1.4.1?Arbeiten mit Templates | 28 |
1.4.2?Spiele ohne Templates | 30 |
1.5?Die Geschichte der Acknex-Engine | 30 |
1.6?Was Sie sonst noch benötigen | 31 |
2 Theorie der Spieleentwicklung | 34 |
2.1?Unterschied zwischen Spielen und Desktopanwendungen | 34 |
2.2?Ausgleichende Gerechtigkeit | 35 |
2.3?Die Ungarische Notation als Namenskonvention | 36 |
2.4?Namenskonventionen für Dateien | 38 |
2.5?Buildautomatisierung | 38 |
3 Mathematik in Computerspielen | 40 |
3.1?Das Kartesische Koordinatensystem | 40 |
3.2?Vektoren | 42 |
3.2.1?Vektorlänge | 43 |
3.2.2?Normalisieren eines Vektors | 44 |
3.2.3?Das Skalarprodukt | 45 |
3.2.4?Das Kreuzprodukt | 45 |
3.2.5?Vektorprojektion | 46 |
3.2.6?Differenz zweier Vektoren | 47 |
3.3?Winkel | 47 |
3.3.1?Drehen eines Vektors | 48 |
3.3.2?Drehen eines Winkels um einen anderen Winkel | 49 |
3.3.3?Berechnen des Eulerwinkels aus einem Vektor | 49 |
3.4?RGB(A)-Farben | 50 |
3.5?Das Schichtenmodell | 51 |
4 Grundlagen der Lite-C-Programmierung | 52 |
4.1?Installieren der Entwicklungsumgebung | 52 |
4.2?Struktur eines neuen Projekts | 54 |
4.3?Das eingestaubte „Hello World“ | 55 |
4.4?Die Grundlagen der Programmierung im Schnelldurchlauf | 56 |
4.4.1?Variablen | 57 |
4.4.2?Datentypen | 58 |
4.4.3?Arrays | 62 |
4.4.4?Mehrdimensionale Arrays | 62 |
4.4.5?Rechenbefehle | 63 |
4.4.6?If-Bedingung | 64 |
4.4.7?Switch | 67 |
4.4.8?Schleifen | 68 |
4.4.9?Funktionen | 70 |
4.4.10?Pointer | 72 |
4.4.11?Compiler-Direktiven | 76 |
4.4.12?Structs | 79 |
4.5?Zusammenfassung | 87 |
5 Spieleprogrammierung mit Lite-C | 88 |
5.1? Ein „Hello World“ nach unserem Geschmack | 88 |
5.2?Die erste Bewegung | 91 |
5.2.1?Die Funktion wait | 93 |
5.3?Eingaben über die Tastatur | 94 |
5.3.1?Was war noch mal time_step? | 96 |
5.4?Eine eigene Aktion für unsere Weltkugel | 97 |
5.4.1?Exkurs: Zwei Wege, ein Objekt zu erstellen | 100 |
5.5?Bewegen der Kamera | 100 |
5.5.1?Bewegen der Kamera mit Maus und Tastatur | 104 |
6 Bewegung mit Kollisionserkennung | 108 |
6.1?Exkurs: set, reset, toggle und is | 113 |
7 Verschiedene Kameratypen | 116 |
7.1?First-Person-Camera oder Egoperspektive | 116 |
7.2?Sidescroller | 117 |
7.2.1?Exkurs: Skills und Flags | 123 |
7.2.2?Exkurs: Kollision | 124 |
7.3?Third-Person-Camera | 126 |
7.3.1?Exkurs: Animieren von Entities | 30 |
7.4?Resident-Evil-Camera | 134 |
7.5?Mehrere Kameras durch mehrere Views | 138 |
8 Input mit Maus und Tastatur | 140 |
8.1?Eingaben mit der Maus | 140 |
8.1.1?Der Mauszeiger | 144 |
8.2?Eingaben über die Tastatur | 144 |
9 GUI-Elemente | 148 |
9.1?Das Element BMAP | 148 |
9.1.1?Manipulieren von Bitmaps | 150 |
9.2?Das Element TEXT | 154 |
9.2.1?Strings | 157 |
9.2.2?Schriftarten definieren über FONT | 159 |
9.3?Das Element PANEL | 161 |
9.3.1?Steuerelemente auf dem Panel | 163 |
9.4?Grafikeinstellungen ändern | 172 |
10 Interaktion über Events | 176 |
11 Sounds, Musik und Videos | 180 |
11.1?Dateitypen für Musik und Videos | 180 |
11.2?Geräusche in unserer Spielwelt | 181 |
11.3?Streams | 184 |
11.3.1?Dynamische Arrays | 188 |
12 Physik | 192 |
12.1?Was ist eine Physik-Engine? | 192 |
12.2?Einige Physik-Engines im Vergleich | 193 |
12.3?Aktivieren der Physik-Engine | 194 |
12.4?Dosenwerfen | 197 |
12.4.1?Exkurs: Ein realistischer Himmel | 201 |
12.5?Gelenke | 203 |
12.5.1?Drehgelenke mit PH_HINGE | 204 |
12.5.2?Kugelgelenk mit PH_BALL | 206 |
12.5.3?Drehschubgelenk mit PH_SLIDER | 208 |
12.5.4?Räder mit PH_WHEEL | 210 |
12.5.5?Seile mit PH_ROPE | 213 |
12.5.6?Ein beliebig konfigurierbares Gelenk mit PH_6DJOINT | 214 |
12.6?Physikalische Spielersteuerung | 216 |
12.7?Ragdolls | 220 |
12.8?PhysX Community Edition1 | 227 |
13 Effekte | 228 |
13.1?Partikeleffekte | 228 |
13.1.1?Was sind Partikel? | 228 |
13.1.2?Wie erstelle ich einen Partikeleffekt? | 229 |
13.2?Licht und Schatten | 235 |
13.2.1?Statische und dynamische Lichtquellen | 235 |
13.2.2?Sonne | 235 |
13.2.3?Schatten | 236 |
13.3?Nebel | 241 |
13.4?Wetter | 242 |
13.5?Decals | 249 |
14 Shader | 256 |
14.1?Verschiedene Arten von Shadern | 256 |
14.2?Programmiersprachen für Shader | 257 |
14.3?Anforderungen an Engine, Grafikkarte und Programmierer | 257 |
14.4?Vor- und Nachteile des Einsatzes von Shadern | 258 |
14.5?Die Direct3D-Pipeline | 258 |
14.6?Ein erster Pixel-Shader für eine Entity | 262 |
14.7?Postprocessing-Shader für eine View | 267 |
14.7.1?Stages und die Rendering-Kette | 267 |
14.7.2?Ein einfacher Wasserfall ohne Shader | 276 |
14.8?Ein Vertex-Shader für Vegetation | 279 |
14.9?Hilfe bei Problemen und weiterführendes Material | 288 |
15 Performance messen und optimieren | 290 |
15.1?Performance-Messung | 290 |
15.2?Performance-Optimierung | 298 |
16 Debugging | 304 |
16.1?Der Luxus der Compiler-Fehler | 304 |
16.2?Variablen im SED beobachten | 305 |
16.3?Break-Points | 308 |
16.4?Die Konsole | 309 |
16.5?Logging | 310 |
16.5.1?Exkurs: In Dateien schreiben | 316 |
16.6?Debugging für Ungeduldige | 317 |
16.7?Hilfe bei der Fehlersuche | 318 |
17 Künstliche Intelligenz | 320 |
17.1?Der NPC?– Ein endlicher Automat | 321 |
17.2?Pfade | 330 |
17.3?Pathfinding?– Abseits des Weges | 334 |
17.3.1?Die doppelt verkettete Liste | 336 |
17.4?Dialoge | 344 |
17.4.1?Das XML-Format der Dialoge | 345 |
18 Multiplayer | 350 |
18.1?Mehrere Spieler, eine View | 350 |
18.2?Mehrere Spieler, mehrere Views | 354 |
18.3?Netzwerkspiel | 358 |
18.3.1?Nur eine Anwendung für Client und Server? | 358 |
18.3.2?Server und Client | 359 |
18.3.3?Performance in Netzwerkspielen | 366 |
19 Spielablauf | 368 |
19.1?Laden und Speichern | 368 |
19.2?Ladebildschirme | 372 |
20 Ein Spiel publizieren | 378 |
20.1?Einbinden aller nötigen Ressourcen | 378 |
20.2?Credits und Lizenzen | 379 |
20.3?Kompilieren und Packetieren von Ressourcen | 380 |
20.4?Erstellen eines Installationspaketes | 380 |
20.5?Exkurs: Ein Startup-Fenster | 381 |
21 Level-Design | 384 |
21.1?Übersicht über den WED | 385 |
21.2?Das erste Level | 386 |
21.2.1?Bewegen eines Objekts | 386 |
21.2.2?Skalieren eines Objekts | 387 |
21.2.3?Verformen einer Box | 388 |
21.2.4?Ändern der Blickrichtung | 389 |
21.2.5?Das Projektfenster | 390 |
21.2.6?Das Objektfenster | 391 |
21.2.7?Snapping | 391 |
21.2.8?Kompilieren und Testen | 392 |
21.2.9?Hinzufügen von Texturen | 394 |
21.2.10?Erstellen eigener Texturen | 398 |
21.3?Das Erstellen mehrerer Räume | 402 |
21.3.1?Aushöhlen eines Primitives | 402 |
21.3.2?Erstellen und Auflösen von Gruppen | 403 |
21.4?Ausstanzen von Löchern in Objekten | 404 |
21.5?Hinzufügen weiterer Objekte | 406 |
21.5.1?Lichtquellen | 407 |
21.5.2?Level-Bausteine über Prefabs und Primitives | 409 |
21.5.3?Terrains, Modelle, Sprites und Sounds | 411 |
21.5.4?Zuweisen von Aktionen | 417 |
21.5.5?Pfade und Regionen | 423 |
21.6?Der letzte Schliff | 429 |
22 Modell-Design | 438 |
22.1?Modellierung eines Schalters | 439 |
22.2?Animieren über Bones | 451 |
22.2.1?Bone-Animationen importieren | 454 |
22.3?Terrains erstellen | 456 |
22.4?Terrains erstellen mit Earth Sculptor | 459 |
22.5?Importieren von Modellen anderen Formats | 464 |
23 Planen eines Spiels | 466 |
23.1?Aufgabenverteilung | 467 |
23.2?Entwickeln einer Idee | 467 |
23.3?Inhaltliche Planung | 469 |
23.3.1?Charaktere eines Spiels | 470 |
23.3.2?Levels | 470 |
23.3.3?Quests | 472 |
23.3.4?Gegenstände und Inventar | 473 |
23.3.5?Waffen und Magie | 474 |
23.3.6?Weitere technische Features | 475 |
23.4?Projektplanung | 475 |
23.5?Kommen wir zum Schluss | 476 |
Index | 478 |