Jonas Freiknecht
Spiele entwickeln mit Gamestudio
Virtuelle 3D-Welten mit Gamestudio A8 und Lite-C
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
© 2009-2024 ciando GmbH