Suchen und Finden
Danksagung
6
Vorwort
7
Inhaltsverzeichnis
9
1 Die Buchstruktur
20
2 Was ist VB.NET?
22
2.1 Unterschiede zu Visual Basic 6
22
2.1.1 Rapid Application Development
23
2.1.2 Vererbung
23
2.1.3 Ausnahmebehandlung
23
2.1.4 Überladung
23
2.1.5 Overrides: Überschreiben von Methoden und Eigenschaften
24
2.1.6 Konstruktoren und Destruktoren
25
2.1.7 Datentypen
25
2.1.8 Verweise
26
2.1.9 Namespaces
26
2.1.10 Assemblies
26
2.1.11 Multithreading
26
2.1.12 Common Language Runtime (CLR)
26
2.1.13 Garbage Collection
27
3 Die Entwicklungsumgebungen von VB.NET
30
3.1 Das Visual Studio .NET
32
3.1.1 Formdesigner
34
3.1.2 Werkzeugfenster
35
3.1.3 Eigenschaftenfenster
35
3.1.4 Projektexplorer
36
3.1.5 Pin-Nadel-Symbol
36
3.2 SharpDevelop
37
3.2.1 Code-Competion-Datenbank
37
3.2.2 Der erste Start
39
4 „Hello World“ das erste .NET-Programm
42
4.1 Ein einfaches Programm mit einem einfachen Editor
42
4.1.1 Der Sourcecode
42
4.1.2 Der Compiler
43
4.2 Ein Projekt im Visual Studio.NET
44
5 Variablen
48
5.1 Deklaration
49
5.2 Datentypen und Konstanten
49
5.2.1 Der richtige Datentyp
51
5.2.2 Konstanten
53
5.2.3 Strukturen
56
5.3 Typensicherheit
57
5.4 Ermitteln des Variablentyps
60
6 Operatoren
62
6.1 Arithmetische Operatoren
62
6.2 Vergleichsoperatoren
64
6.2.1 Mit dem Gleich-Operator Werte zuweisen!
64
7 Verzweigungen
66
7.1 Verzweigungen oder Entscheidungen?
66
7.2 If-Then-Else-Anweisung
66
7.2.1 Notationsunterschiede!
69
7.2.2 Verschachtelungen oder ElseIf:ElseIf
69
7.3 Select-Case-Anweisungen
72
8 Schleifen
76
8.1 For-Next-Schleife
77
8.2 Do-Loop-Schleife
78
8.2.1 Endlosschleifen
81
8.3 While-End-While-Schleife
81
8.4 For-Each-Schleife
82
9 Arrays
86
9.1 Statische Arrays
86
9.2 Dynamische Arrays
87
9.2.1 GetUpperBound
88
9.3 Mehrdimensionale Arrays
89
10 Funktionen und Subroutinen
92
10.1 Subroutinen
92
10.1.1 ByVal oder ByRef
94
10.2 Funktionen
94
10.2.1 Return
95
10.2.2 Optionale Parameter
96
10.3 Rekursives Programmieren
97
11 Klassen
100
11.1 Was ist eine Klasse?
100
11.2 Nothing
101
11.3 Felder
102
11.4 Subroutinen und Funktionen
103
11.5 Eigenschaften: Property
105
11.5.1 Parameter in Properties
106
11.5.2 Eingeschränkte Properties
107
11.6 Enumerationen in Klassen
108
11.7 Events
109
11.8 Ein umfassendes Beispiel
111
11.8.1 Erstellen der Klasse
112
11.8.2 Klasse mit Daten füllen
114
11.8.3 Daten aus der Klasse lesen
114
11.9 Shared-Mitglieder
115
11.10 Vererbung
116
11.10.1 Overrides
118
11.10.2 MyBase
120
11.10.3 MustOverride und MustInherit
121
12 Namespaces
122
12.1 Namespaces ansprechen
123
12.1.1 Imports
123
13 Assemblies
126
13.1 Arbeitsweise von Assemblies
127
13.2 Shared Assembly
127
14 Fehlerbehandlung
128
14.1 Try-Catch-Finally-Anweisung
128
14.1.1 Ausnahmebehandlung (Beispiel)
129
14.2 OnError-GoTo-Befehl
130
15 Was ist DirectX
132
15.1 Die Säulen von DirectX
132
15.2 Die Einsatzgebiete für DirectX
134
16 DirectX-Grundlagen
136
16.1 Das Koordinatensystem
136
16.2 Primitives
138
16.2.1 Primitives rendern
140
16.2.2 Vorder- und Rückseite
144
17 Mein erstes DirectX-Programm
146
17.1 Ein Visual Studio .NET-Projekt erstellen
146
17.2 Direct3D-Device erzeugen
148
17.3 Rendern
150
18 Mein erstes Objekt im 3D-Raum
154
18.1 Vertexbuffer erstellen
155
18.2 Vertexbuffer mit Objektdaten füllen
156
18.3 Vertexbuffer rendern
158
19 World-, View- und Projektionsmatrix
160
19.1 Worldmatrix
160
19.2 Viewmatrix
161
19.3 Projektionsmatrix
162
20 Device Enumeration
164
20.1 DXSettings
164
20.1.1 Display-Adapter
167
20.1.2 Hardwarebeschleunigung (DeviceTyp)
168
20.1.3 Videomodus
169
20.1.4 Backbuffer-Format
171
20.1.5 Z-Stencilbuffer-Format (Depth-Stencilbuffer-Format)
173
20.1.6 Multisample-Typ
174
20.1.7 Vertex-Processing
176
20.2 DXSettings im praktischen Einsatz
178
20.2.1 Preset-Struktur
179
20.2.2 DXSettings initialisieren
181
21 Matrizen
184
21.1 Was ist eine Matrix
184
21.1.1 Einheitsmatrix
185
21.1.2 Addition
185
21.1.3 Subtraktion
185
21.1.4 Multiplikation
186
21.1.5 Division
186
21.1.6 Berechnen der invertierten Matrix M-
187
21.2 Transformation
188
21.2.1 Bewegt sich die Welt oder bewegt sich das Objekt?
189
21.2.2 Translation (Bewegung, Positionsveränderung)
189
21.2.3 Skalieren (Größenänderung)
190
21.2.4 Rotation (Drehung)
191
21.2.5 Grad vs Radiant
193
21.2.6 Beispielprogramm für Matrizen
194
22 Texturen
200
22.1 Texturkoordinaten
200
22.2 Kacheln einer Textur
202
22.3 Das passende Vertexformat
203
22.4 Größe einer Textur
204
22.4.1 Auslesen der maximalen Texturbreite und Höhe
205
22.5 Laden einer Textur
205
22.6 Texturfilter
207
22.6.1 MinFilter und MagFilter
207
22.6.2 Nearest Point Sampling
207
22.6.3 Linearer Texturfilter
208
22.6.4 Anisotropic Filter (uneinheitlicher Filter)
208
22.6.5 Bilineare und uneinheitliche Filterung
209
22.6.6 Mipmaps
209
22.7 Beispielprogramm für Texturen
210
22.7.1 Ermitteln der maximalen Texturbreite und -höhe
211
22.7.2 Erstellen des Vertexbuffers
212
22.7.3 Erstellen und Laden einer Textur
214
22.7.4 Rendern
215
22.8 Multitexturing (Multi Texture Mapping)
216
22.8.1 Mischparameter
217
22.8.2 Multi-Pass-Technik vs. Single-Pass-Technik
220
22.8.3 Texturkoordinaten, Vertexformat und Vertexbuffer
221
22.8.4 Beispielprogramm für Multitexturing
223
22.9 Alpha-Textur-Blending
230
22.9.1 Texturfaktor
230
23 Licht: Beleuchtung
232
23.1 Licht und Material
233
23.2 Direct3D.Lights
233
23.3 Normalvektor
234
23.3.1 Berechnung des Normalvektors
236
23.4 Lichttypen
237
23.4.1 Ambient-Light
238
23.4.2 Point-Light
239
23.4.3 Directional-Light
240
23.4.4 Spot-Light
241
23.4.5 Welcher Lichttyp ist der beste?
243
23.5 Licht, Schatten und Polygone
244
23.5.1 Flat-Shading
244
23.5.2 Gouraud-Shading
245
23.5.3 Phong-Shading
246
23.6 Licht und Polygone
246
23.7 Beispielprogramm für Licht und Polygone
247
23.7.1 Erstellen der Flächen
248
23.7.2 Erstellen der Lichter
251
23.8 Beispielprogramm für Lichttypen
253
23.8.1 Boden und Wände erstellen
255
23.8.2 Lichtquellen initialisieren
258
23.9 Licht und Mesh
261
23.9.1 Beispielprogramm für Licht und Mesh
262
24 Material
264
24.1 Zusammenspiel zwischen Material und Licht
264
24.1.1 Die Bestandteile des Materials
265
24.1.2 Diffuse
265
24.1.3 Ambient
266
24.1.4 Specular
266
24.1.5 Emissive
266
24.2 Material initialisieren und aktivieren
266
24.3 Beispielprogramm für Material
267
25 Meshobjekte
270
25.1 Erstellen eines Mesh–Objektes
271
25.2 Laden eines Mesh-Objektes
272
25.3 Darstellen eines Mesh-Objektes
274
26 Animation des Mesh-Objektes Frame- Animation
278
26.1 Prinzip der Frame-Animation
279
26.2 Timing bei der Frame-Animation
279
26.3 Mesh-Objekte: Tweening/Keyframe-Animation
282
26.4 Keyframe-Bestimmung
292
26.5 Keyframe-Interpolation
293
26.6 Keyframe rendern
297
27 Billboarding
300
27.1 Was sind Billboards?
300
27.2 Warum werden Billboards eingesetzt?
301
27.2.1 Schlechtes Billboarding
301
27.2.2 Gutes Billboarding
301
27.3 Berechnungsmethoden
302
27.4 Beispielprogramm für Billboarding
303
27.4.1 Textureoberfläche erstellen
304
27.4.2 Hauptspieleschleife erzeugen
305
27.4.3 Rendern
306
28 Wasser
310
28.1 Technik zum Erstellen der Wasseroberfläche
311
28.2 Aufbau der Wasseroberfläche (Gittergerüst)
313
28.3 Wasseroberfläche erstellen (inkl. Wellen und Textur)
314
28.4 Schwimmende Kisten integrieren
316
28.5 Rendern Alpha-Blending
317
29 Nebel
320
29.1 Was kann Nebel?
321
29.2 Berechnungsarten
321
29.2.1 Linear Fog
321
29.2.2 Exponential Fog
322
29.3 VertexFog oder Pixel-Fog/Table-Fog
323
29.3.1 Prüfung
324
29.4 Die wahre Tiefe
325
29.5 Renderstates
326
29.6 Beispielprogramm für Nebel
327
29.6.1 Erstellen der Straße
328
29.6.2 Einbinden der Meshes (Bäume und Auto)
329
29.6.3 Initialisierung des Nebels
330
29.6.4 Rendern
331
30 Partikeleffekte
334
30.1 Partikelstruktur
336
30.2 Zweidimensional vs. dreidimensional
337
30.3 Partikelklasse
339
30.4 Rendern
342
30.5 GUI
346
31 DirectSound: Modell
348
31.1 DirectSound-DeviceInformation
349
31.2 DirectSound-Device
349
31.3 DirectSound-Buffer
350
31.4 DirectSound-3DBuffer
351
31.4.1 Ausrichtung des 3DBuffers
352
31.5 DirectSound-3DListener
353
31.5.1 Ausrichtung des 3DListeners
353
31.6 DirectSound-CaptureBuffer
353
32 2DSound-Demo
356
33 3DSound-Demo
364
34 AudioVideoPlayback
372
34.1 Ein Wort zu DirectMusic
372
34.2 AudioVideoPlayback generell
372
34.3 Audio
373
34.4 Video
377
35 DirectInput
380
35.1 Objekthierarchie
380
35.2 Geräteauflistung
381
35.2.1 Beispielprogramm
382
35.2.2 Eingabegeräte ermitteln
382
35.2.3 Objekte ermitteln
384
35.3 Kooperationsebene
386
35.4 Datenformat
387
35.5 Daten empfangen
387
35.6 Keyboard (Beispielprogramm)
388
35.6.1 Sourcecode-Beispiel 1
388
35.6.2 Sourcecode-Beispiel 2
389
35.7 Maus
393
35.7.1 Kooperationsebene anlegen und das Device erzeugen
394
35.7.2 Daten abfragen
395
35.8 Joystick
396
35.8.1 Angeschlossene Joysticks ermitteln
398
35.8.2 Akquirieren und Achseneigenschaften festlegen
399
35.8.3 Daten abfragen
399
35.9 First-Person-Camera
402
35.9.1 Variablen und Strukturen definieren
403
35.9.2 Erzeugen der DirectInput-Devices
404
35.9.3 Maus- und Tastaturdaten empfangen
405
35.9.4 Maus- und Tastaturdaten auswerten
406
36 DirectPlay
410
36.1 Service-Provider
411
36.2 Wie ist eine Peer-to-Peer Verbindung aufgebaut?
412
36.3 Erstellen einer GUID
413
36.4 Host
414
36.5 Player
414
36.5.1 Host suchen
415
36.5.2 Player erstellen und an der Session anmelden
417
36.6 Senden von Daten
417
36.7 Empfangen von Daten
418
36.8 Beispielprogramm: Simple Chat
419
36.9 Kommunikationsmodelle
421
36.9.1 Peer-to-Peer-Session
421
36.9.2 Client/Server-Session
421
36.9.3 Sicherheit
421
37 Das Spiel: Return From Orion
424
37.1 Erste Gedanken zum Spiel
425
37.2 Von der ersten Spielidee zu einem Konzept
425
37.3 Der Entwicklungsprozess oder die Arbeit vor der Arbeit
427
37.4 Festlegung des Spielprinzips/Spielablaufs
427
37.5 Die Storyline – eine Geschichte entsteht
428
37.6 Festlegen des Designs mit Designstudien
429
37.7 Das Konzept des Spiels
430
38 Das Projekt startet
432
38.1 Erstellen der ersten Objekte
432
38.2 Erstellen des Basis-Devices für das Projekt
434
39 Eine Welt erschaffen
438
39.1 Die Theorie des Spielfeldes
438
39.2 Das Spielfeld in der Praxis
439
39.2.1 Spielfelddaten auslesen
440
39.2.2 Performance-Steigerung im Spielfeld
443
39.2.3 Das Spielfeld erstellen
445
39.2.4 Die Bitmaske
446
39.2.5 Das Spielfeld rendern
447
39.3 Skydome: Die Begrenzung der Spielwelt
451
40 Die Spielfigur
454
40.1 Die Techniken der Spielfigur
455
40.1.1 Bewegungsablauf – Animation der Spielfigur
455
40.1.2 Bewegung der Spielfigur
459
40.1.3 Relative Bewegungen im Spiel
460
40.1.4 Logik der Bewegung
462
40.1.5 Drehung der Spielfigur
465
40.1.6 Laufen der Spielfigur
467
40.2 Einfügen der Tastaturabfrage
470
40.3 Einfügen des Kameramoduls
476
41 Gegner: Computergesteuerte Elemente
480
41.1 Arten von Gegnern
480
41.1.1 Festgelegte Bewegungen und Aktionen
480
41.1.2 Intelligente Bewegungen und Aktionen
481
41.1.3 Intelligente Bewegungen, Aktionen und Kommunikation
482
41.2 Einfügen der Gegner in „Return From Orion“
483
42 Künstliche Intelligenz
490
42.1 Was ist künstliche Intelligenz?
490
42.1.1 Menschlich handeln
491
42.1.2 Menschlich denken
491
42.1.3 Rational denken
492
42.1.4 Rational handeln
492
42.2 KI in Computerspielen
492
42.3 KI in „Return From Orion“
493
42.3.1 Random-Strategie
495
42.3.2 Vertikale Strategie
497
42.3.3 Horizontale Strategie
501
42.3.4 Änderung der KI-Strategie
504
43 Kollision
506
43.1 Kollision in DirectX
506
43.1.1 BoundingBox
506
43.1.2 BoundingSphere
507
43.1.3 Feintuning
508
43.2 Kollision im Spiel
509
44 Soundeffekte
512
45 Abschließende Funktionen
516
45.1 Statusanzeigen erstellen und integrieren
516
45.2 Splash-Screens
521
45.3 Kamerafahrt am Anfang jedes Levels
523
45.4 Framerate begrenzen
525
46 Leveleditor
528
46.1 Zeichnen des Spielfeldes
529
46.2 Editieren der Spielfelddaten
532
46.3 Steuerelemente des Leveleditors
537
46.4 Das Programm-Menü
543
46.4.1 Level neu erstellen
543
46.4.2 Level laden
545
46.4.3 Level speichern
546
46.4.4 Direkt Zugriff auf ein Level
546
46.4.5 Spielfeld umranden
548
46.4.6 Dynamische Objekte einfügen: Random
549
46.5 Hilfsfunktionen
550
47 Fragen und Antworten zu VB.NET
554
48 Fragen und Antworten zu DirectX
560
48.1 Fragen und Antworten zu Texturen
561
Glossar
564
Anhang
568
Datentypen
568
Index
570
Alle Preise verstehen sich inklusive der gesetzlichen MwSt.