Spiele effektiv programmieren mit VB.net und DirectX (eBook)
XIX, 559 Seiten
Springer Berlin (Verlag)
978-3-540-27111-6 (ISBN)
Zum beruflichen Werdegang von Herrn Uwe Kettermann:
1989 - 1997 Programmierer bei Berlet 1997 - 2000 Selbstständiger Programmierer bei SK-Software (Schnittstellen-Programmierung MX-512, Visualisierungssoftware, Lichtsteuerung für Discotheken und mobile Bands) Seit dem Jahr 2000 Software-Engineer bei der Firma Actebis / PeacockZum beruflichen Werdegang von Herrn Andreas Rohde:
Ausbildung zum Informationstechnischen Assistent 1995 - 2002 Leiter der Abteilung Software-Engineering bei Actebis / Peacock Seit dem Jahr 2002 Software-Engineer bei MAXDATAZum beruflichen Werdegang von Herrn Uwe Kettermann:1989 – 1997 Programmierer bei Berlet 1997 – 2000 Selbstständiger Programmierer bei SK-Software (Schnittstellen-Programmierung MX-512, Visualisierungssoftware, Lichtsteuerung für Discotheken und mobile Bands) Seit dem Jahr 2000 Software-Engineer bei der Firma Actebis / Peacock Zum beruflichen Werdegang von Herrn Andreas Rohde:Ausbildung zum Informationstechnischen Assistent 1995 – 2002 Leiter der Abteilung Software-Engineering bei Actebis / Peacock Seit dem Jahr 2002 Software-Engineer bei MAXDATA
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
2 Was ist VB.NET? (S. 3-4)
VB.NET ist eine Programmiersprache basierend auf dem Microsoft .NETFramework. Das Framework verbindet verschiedene Programmiersprachen. Programme werden zwar in den jeweiligen Programmierspachen geschrieben, diese werden aber in ein und dieselbe Common Language Runtime kompiliert. Dies ist geradezu ein revolutionäres Konzept, denn bis dato waren wir (die Progrmmierer) unterschiedliche Kompiler mit unterschiedlichen Ergebnissen gewohnt. So konstantierten sich Stärken und Schwächen der einzelnen Programmiersprachen und daraus resultierent schrieb man einer Programmiersprache einem bestimmten Aufgabenbereich zu. Der Aufgabenbereich von Viausl Basic (der Vorgängerversion von VB.NET) war die Datenbankprogrammierung im Officeumfeld. Hier lagen die Stärken dieser Programmierspachen. Mit den neuen Spachen von .NET sind die Grenzen gefallen.
Ein Kompiler für alle Sprachen offenbart die Leistungsfähigkeit aller angeschlossenen Programmierspachen. Nun ist es egal ob der Sourccode in C# oder VB.NET erstellt wird. Das Ergebnis ist ein zum Framework kompatibeles Programm mit identischen Leistungsmerkmalen. Für uns bedeutet dies: wir können mit einer relativ leicht verständlichen Syntax sowie einer übersichtlichen Programmierumgebung arbeiten und leistungsstarke Programme erstellen, welche einem Vergleich zu C# nicht scheuen müssen.
2.1 Unterschiede zu Visual Basic 6
Diese Erläuterungen werden nur für Leser mit VisualBasic6-Erfahrung von Interesse sein. Für Einsteiger werden die aufgelisteten Neuerungen noch keine Aussagekraft haben. Natürlich wird sich das mit wachsender Erfahrung ändern und dann werden Sie sicherlich einige der Neuerungen von VB.NET als selbstverständlich ansehen.
VB.NET ist der Nachfolger von Visual Basic 6. VB.NET ist aber auch Bestandteil von Visual Studio.N ET. Hier haben wir bereits einen Unterschied zu VB 6: Visual Basic 6 war nicht in das Visual Studio-Paket integriert. Zwar wurde VB gemeinsam mit dem Visual Studio-Paket ausgeliefert, aber sie verwendeten unterschiedliche IDEs. Integrated Development Environment (IDE) beschreibt die integrierte Entwicklungsumgebung von Visual Studio.NET.
Mit Visual Studio.NET wird ein C++-, C#- oder VB.NET- Programmierer mit der gleichen Entwicklungsumgebung arbeiten. Dies ist ein bedeutender Vorteil. So rücken Programmierer der unterschiedlichen Programmiersprachen enger zusammen und die Wahl, in welcher Programmiersprache das nächste Projekt verwirklicht wird, ist leichter zu treffen. 2.1.1 Rapid Application Development VB.NET unterstützt die schnelle Anwendungsentwicklung (RAD, Rapid Application Development) mit Projektvorlagen, Designern und anderen Features in der Visual Studio.NET-Entwicklungsumgebung.
2.1.2 Vererbung
Ein weiterer Fortschritt ist die Vererbung. Vererbung ist das Ableiten einer Klasse von einer anderen. Abgeleitete Klassen erben die Eigenschaften, Methoden und Ereignisse der Basisklasse und können diese erweitern. Abgeleitete Klassen können auch vererbte Methoden mit neuen Implementierungen überschreiben.
2.1.3 Ausnahmebehandlung
Außerdem wurde eine verbesserte Fehlerhandhabung (Ausnahmebehandlung) implementiert. Visual Basic verwendet eine erweiterte Version der Try-Catch-Finally-Syntax, die bereits von anderen Sprachen (z.B. von C++) unterstützt wurde. Die strukturierte Ausnahmebehandlung kombiniert eine moderne Kontrollstruktur (vergleichbar mit Select…Case oder While) mit Ausnahmen, geschützten Codeblöcken und Filtern.
| Erscheint lt. Verlag | 17.8.2005 |
|---|---|
| Reihe/Serie | Xpert.press | Xpert.press |
| Zusatzinfo | XIX, 559 S. |
| Verlagsort | Berlin |
| Sprache | deutsch |
| Themenwelt | Mathematik / Informatik ► Informatik ► Programmiersprachen / -werkzeuge |
| Schlagworte | Animation • Computer • DirectX • Entwicklung • Entwurf • Künstliche Intelligenz • Modellierung • Multimedia • objektorientiert • Optimierung • Programmieren • Programmierung • Rendern • Spezialeffekte • Spieleprogrammierung • VB.NET • Visual BASIC |
| ISBN-10 | 3-540-27111-2 / 3540271112 |
| ISBN-13 | 978-3-540-27111-6 / 9783540271116 |
| Informationen gemäß Produktsicherheitsverordnung (GPSR) | |
| Haben Sie eine Frage zum Produkt? |
DRM: Digitales Wasserzeichen
Dieses eBook enthält ein digitales Wasserzeichen und ist damit für Sie personalisiert. Bei einer missbräuchlichen Weitergabe des eBooks an Dritte ist eine Rückverfolgung an die Quelle möglich.
Dateiformat: PDF (Portable Document Format)
Mit einem festen Seitenlayout eignet sich die PDF besonders für Fachbücher mit Spalten, Tabellen und Abbildungen. Eine PDF kann auf fast allen Geräten angezeigt werden, ist aber für kleine Displays (Smartphone, eReader) nur eingeschränkt geeignet.
Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür einen PDF-Viewer - z.B. den Adobe Reader oder Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür einen PDF-Viewer - z.B. die kostenlose Adobe Digital Editions-App.
Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.
aus dem Bereich