Spiele entwickeln mit Unity 5 (eBook)

2D- und 3D-Games mit Unity und C# für Desktop, Web & Mobile. Für Unity 5.6
eBook Download: PDF | EPUB
2017 | 3., aktualisierte und erweiterte Auflage
670 Seiten
Carl Hanser Verlag GmbH & Co. KG
978-3-446-45368-5 (ISBN)

Lese- und Medienproben

Spiele entwickeln mit Unity 5 - Carsten Seifert, Jan Wislaug
Systemvoraussetzungen
Systemvoraussetzungen
39,99 inkl. MwSt
  • Download sofort lieferbar
  • Zahlungsarten anzeigen

- Der Bestseller zur Spieleentwicklung mit Unity in der dritten, aktualisierten Auflage

- Für alle, die ihr eigenes Spiel entwickeln wollen; Vorkenntnisse sind nicht erforderlich

Begeben Sie sich mit Carsten Seifert - alias Hummelwalker auf YouTube - und Jan Wislaug - Video-Trainer für Unity - in die Welt von Unity 5. Erfahren Sie hier, wie Sie Ihre Ideen umsetzen und eigene Spiele entwickeln können. Nach einer Einführung in C# und die Skript-Programmierung lernen Sie, wie die wichtigsten Werkzeuge und Systeme in Unity funktionieren, zusammenarbeiten und wie Sie diese kombinieren können. Darauf aufbauend entwickeln Sie zwei komplette Spiele - ein 2D- und ein 3D-Game.

Die dritte Auflage wurde komplett auf Unity 5.6 aktualisiert und geht u. a. auf die neue Plattform WebGL ein, beschreibt das überarbeitete Licht-System und zeigt die neuen Möglichkeiten beim Partikelsystem. Die Spiele sowie Video-Tutorials stehen als Online-Download zur Verfügung.

Aus dem Inhalt

Installation & Oberfläche von Unity 5.6 // Einführung in C# // Skript-Programmierung // Objekte in der 2. und 3. Dimension // Physically Based Shading // Kameras: die Augen des Spielers // Unitys aufgebohrtes Lichtsystem // Physik-Engine // User-Interaktion auf PC und mobilen Geräten // Audiosysteme und Abmischung // Partikeleffekte mit Shuriken // Landschaften gestalten // Wind Zones // GUI-Systeme // Prefabs // Internet & Datenbanken // Animationen // Künstliche Intelligenz // Fehlersuche & Performance // Spiele für verschiedene Plattformen vorbereiten // Beispiel 1: 2D-Touch-Game // Beispiel 2: 3D-Adventure// Produktionsprozesse in der Spieleentwicklung

Online finden Sie

•die Games aus dem Buch mit allen Ressourcen

•Videotutorials zur Vertiefung

•weitere Beispiele, Zusatzmaterialien

Dipl-Ing (FH) Carsten Seifert ist Spiele- und Softwareentwickler, Blogger und YouTuber. Der Unity-Community ist er mit seinen Tutorials bestens bekannt.Jan Wislaug arbeitet als Unity 3D-Entwickler bei einer Spieleentwicklungsfirma in Bochum. Privat entwickelt er Indie Games. Als Softwareentwickler und Technical Artist ist er sowohl mit der technischen als auch mit der künstlerischen Seite des Game Developments vertraut.

Inhalt 5
Vorwort 20
1 Einleitung 22
1.1 Multiplattform-Publishing 22
1.2 Das kann Unity (nicht) 23
1.3 Lizenzmodelle 23
1.4 Aufbau und Ziel des Buches 24
1.5 Weiterentwicklung von Unity 25
1.6 Online-Zusatzmaterial 26
2 Grundlagen 28
2.1 Installation 28
2.2 Oberfläche 28
2.2.1 Hauptmenü 30
2.2.2 Scene View 31
2.2.3 Game View 33
2.2.4 Toolbar 35
2.2.5 Hierarchy 37
2.2.6 Inspector 38
2.2.7 Project Browser 42
2.2.8 Console 44
2.3 Das Unity-Projekt 44
2.3.1 Neues Projekt anlegen 45
2.3.2 Bestehendes Projekt öffnen 46
2.3.3 Projektdateien 47
2.3.4 Szene 47
2.3.5 Game Objects 48
2.3.6 Tags 50
2.3.7 Layer 51
2.3.8 Assets 52
2.3.9 Frames 55
2.4 Das erste Übungsprojekt 55
3 C# und Unity 58
3.1 Die Sprache C# 58
3.2 Syntax 59
3.3 Kommentare 60
3.4 Variablen 60
3.4.1 Namenskonventionen 60
3.4.2 Datentypen 61
3.4.3 Schlüsselwort var 62
3.4.4 Datenfelder/Array 62
3.5 Konstanten 64
3.5.1 Enumeration 64
3.6 Typkonvertierung 65
3.7 Rechnen 65
3.8 Verzweigungen 66
3.8.1 if-Anweisungen 67
3.8.2 switch-Anweisung 69
3.9 Schleifen 70
3.9.1 for-Schleife 70
3.9.2 Foreach-Schleife 71
3.9.3 while-Schleife 71
3.9.4 do-Schleife 72
3.10 Klassen 72
3.10.1 Komponenten per Code zuweisen 73
3.10.2 Instanziierung von Nichtkomponenten 73
3.10.3 Werttypen und Referenztypen 75
3.10.4 Überladene Methoden 76
3.11 Der Konstruktor 76
3.11.1 Konstruktoren in Unity 77
3.12 Lokale und globale Variablen 77
3.12.1 Namensverwechslung verhindern mit this 77
3.13 Zugriff und Sichtbarkeit 78
3.14 Statische Klassen und Klassenmember 78
3.15 Parametermodifizierer out/ref 79
3.16 Array-Übergabe mit params 80
3.17 Eigenschaften und Eigenschaftsmethoden 81
3.18 Vererbung 82
3.18.1 Basisklasse und abgeleitete Klassen 83
3.18.2 Vererbung und die Sichtbarkeit 83
3.18.3 Geerbte Methode überschreiben 84
3.18.4 Zugriff auf die Basisklasse 84
3.18.5 Klassen versiegeln 85
3.19 Polymorphie 85
3.20 Schnittstellen 86
3.20.1 Schnittstelle definieren 86
3.20.2 Schnittstellen implementieren 86
3.20.3 Zugriff über eine Schnittstelle 87
3.21 Namespaces 88
3.21.1 Eigene Namespaces definieren 89
3.22 Generische Klassen und Methoden 90
3.22.1 List 90
3.22.2 Dictionary 91
4 Skript-Programmierung 94
4.1 MonoDevelop 94
4.1.1 Hilfe in MonoDevelop 95
4.1.2 Syntaxfehler 95
4.2 Nutzbare Programmiersprachen 96
4.2.1 Warum C#? 97
4.3 Unitys Vererbungsstruktur 97
4.3.1 Object 98
4.3.2 GameObject 98
4.3.3 ScriptableObject 98
4.3.4 Component 98
4.3.5 Transform 99
4.3.6 Behaviour 99
4.3.7 MonoBehaviour 99
4.4 Skripte erstellen 99
4.4.1 Skripte umbenennen 100
4.5 Das Skript-Grundgerüst 101
4.6 Unitys Event-Methoden 101
4.6.1 Update 102
4.6.2 FixedUpdate 102
4.6.3 Awake 103
4.6.4 Start 103
4.6.5 OnGUI 103
4.6.6 LateUpdate 104
4.6.7 Aufruf-Reihenfolge 104
4.7 Komponentenprogrammierung 105
4.7.1 Auf GameObjects zugreifen 105
4.7.2 GameObjects aktivieren und deaktivieren 107
4.7.3 GameObjects zerstören 107
4.7.4 GameObjects erstellen 107
4.7.5 Auf Components zugreifen 108
4.7.6 Components hinzufügen 110
4.7.7 Components entfernen 110
4.7.8 Components aktivieren und deaktivieren 110
4.7.9 Attribute 111
4.8 Zufallswerte 112
4.9 Parallel Code ausführen 113
4.9.1 WaitForSeconds 114
4.10 Verzögerte und wiederholende Funktionsaufrufe mit Invoke 115
4.10.1 Invoke 115
4.10.2 InvokeRepeating, IsInvoking und CancelInvoke 115
4.11 Daten speichern und laden 116
4.11.1 PlayerPrefs-Voreinstellungen 116
4.11.2 Daten speichern 117
4.11.3 Daten laden 118
4.11.4 Key überprüfen 118
4.11.5 Löschen 118
4.11.6 Save 118
4.12 Szeneübergreifende Daten 119
4.12.1 Werteübergabe mit PlayerPrefs 119
4.12.2 Zerstörung unterbinden 121
4.13 Debug-Klasse 123
4.14 Kompilierungsreihenfolge 123
4.14.1 Programmsprachen mischen und der sprachübergreifende Zugriff 124
4.15 Ausführungsreihenfolge 124
4.16 Plattformabhängig Code kompilieren 125
4.17 Eigene Assets mit ScriptableObject 126
4.17.1 Neue ScriptableObject-Subklasse erstellen 126
4.17.2 Instanzen eines ScriptableObjects erstellen 127
5 Objekte in der zweiten und dritten Dimension 130
5.1 Das 3D-Koordinatensystem 130
5.2 Vektoren 131
5.2.1 Ort, Winkel und Länge 132
5.2.2 Normalisieren 133
5.3 Das Mesh 134
5.3.1 Normalenvektor 135
5.3.2 MeshFilter und MeshRenderer 136
5.4 Transform 138
5.4.1 Kontextmenü der Transform-Komponente 138
5.4.2 Objekthierarchien 139
5.4.3 Scripting mit Transform 140
5.4.4 Quaternion 140
5.5 Shader und Materials 141
5.5.1 Der Standard-Shader 142
5.5.2 Texturen 159
5.5.3 UV Mapping 162
5.6 3D-Modelle einer Szene zufügen 163
5.6.1 Primitives 163
5.6.2 3D-Modelle importieren 165
5.6.3 In Unity modellieren 166
5.6.4 Prozedurale Mesh-Generierung 167
5.6.5 Level Of Detail 167
5.7 2D in Unity 169
5.7.1 Sprites 170
5.7.2 SpriteRenderer 175
5.7.3 Parallax Scrolling 178
6 Kameras, die Augen des Spielers 182
6.1 Die Kamera 182
6.1.1 Komponenten eines Kamera-Objektes 184
6.1.2 HDR – High Dynamic Range-Rendering 184
6.1.3 Linearer- und Gamma-Farbraum 187
6.2 Kamerasteuerung 190
6.2.1 Statische Kamera 190
6.2.2 Parenting-Kamera 191
6.2.3 Kamera-Skripte 191
6.3 ScreenPointToRay 193
6.4 Mehrere Kameras 194
6.4.1 Kamerawechsel 194
6.4.2 Split-Screen 195
6.4.3 Einfache Minimap 196
6.4.4 Render Texture 198
6.5 Image Effects 200
6.5.1 Beispiel: Haus bei Nacht 200
6.6 Skybox 202
6.6.1 Mehrere Skyboxen gleichzeitig einsetzen 203
6.6.2 Skybox selber erstellen 204
6.7 Occlusion Culling 205
6.7.1 Occluder Static und Occludee Static 207
6.7.2 Occlusion Culling erstellen 207
7 Licht und Schatten 210
7.1 Environment Lighting 210
7.2 Lichtarten 212
7.2.1 Directional Light 213
7.2.2 Point Light 214
7.2.3 Spot Light 215
7.2.4 Area Light 216
7.3 Schatten 217
7.3.1 Einfluss des MeshRenderers auf Schatten 218
7.4 Light Cookies 219
7.4.1 Import Settings eines Light Cookies 219
7.4.2 Light Cookies und Point Lights 220
7.5 Light Halos 221
7.5.1 Unabhängige Halos 222
7.6 Lens Flares 222
7.6.1 Eigene Lens Flares 223
7.7 Projector 223
7.7.1 Standard Projectors 223
7.8 Lightmapping 225
7.8.1 Light Probes 228
7.9 Rendering Paths 230
7.9.1 Forward Rendering 231
7.9.2 Vertex Lit 232
7.9.3 Deferred Lighting 233
7.10 Global Illumination 234
7.10.1 Baked GI 235
7.10.2 Realtime Lighting 236
7.10.3 Lightmapping Settings 237
7.11 Light Explorer 238
7.12 Reflexionen (Spiegelungen) 239
7.12.1 Reflection Probes 240
7.13 Qualitätseinstellungen 243
7.13.1 Quality Settings 243
7.13.2 Qualitätsstufen per Code festlegen 243
8 Physik in Unity 246
8.1 Physikberechnung 246
8.2 Rigidbodies 247
8.2.1 Rigidbodies kennenlernen 248
8.2.2 Masseschwerpunkt 249
8.2.3 Kräfte und Drehmomente zufügen 250
8.3 Kollisionen 253
8.3.1 Collider 253
8.3.2 Trigger 257
8.3.3 Static Collider 259
8.3.4 Kollisionen mit schnellen Objekten 259
8.3.5 Terrain Collider 260
8.3.6 Layer-basierende Kollisionserkennung 260
8.3.7 Mit Layer-Masken arbeiten 261
8.4 Wheel Collider 263
8.4.1 Wheel Friction Curve 264
8.4.2 Entwicklung einer Fahrzeugsteuerung 266
8.4.3 Autokonfiguration 273
8.4.4 Fahrzeugstabilität 275
8.5 Physic Materials 275
8.6 Joints 276
8.6.1 Fixed Joint 276
8.6.2 Spring Joint 277
8.6.3 Hinge Joint 277
8.7 Raycasting 277
8.8 Character Controller 279
8.8.1 SimpleMove 279
8.8.2 Move 280
8.8.3 Kräfte zufügen 281
8.8.4 Einfacher First Person Controller 282
8.9 2D-Physik 284
8.9.1 OnCollision2D- und OnTrigger2D-Methoden 286
8.9.2 2D Physic Effectors 287
9 Maus, Tastatur, Touch 290
9.1 Virtuelle Achsen und Tasten 290
9.1.1 Der Input-Manager 290
9.1.2 Virtuelle Achsen 292
9.1.3 Virtuelle Tasten 292
9.1.4 Steuern mit Mauseingaben 293
9.1.5 Joystick-Inputs 293
9.1.6 Anlegen neuer Inputs 294
9.2 Achsen- und Tasteneingaben auswerten 294
9.2.1 GetAxis 294
9.2.2 GetButton 295
9.3 Tastatureingaben auswerten 296
9.3.1 GetKey 296
9.3.2 anyKey 296
9.4 Mauseingaben auswerten 297
9.4.1 GetMouseButton 297
9.4.2 Mauseingaben auf Objekten per Event 298
9.4.3 mousePosition 298
9.4.4 Mauszeiger ändern 299
9.5 Touch-Eingaben auswerten 301
9.5.1 Der Touch-Typ 301
9.5.2 Input.touches 302
9.5.3 TouchCount 302
9.5.4 GetTouch 302
9.5.5 CrossPlatformInput 303
9.6 Beschleunigungssensor auswerten 304
9.6.1 Input.acceleration 305
9.6.2 Tiefpass-Filter 306
9.7 Steuerungen bei Mehrspieler-Games 307
9.7.1 Split-Screen-Steuerung 307
9.7.2 Netzwerkspiele 308
10 Audio 310
10.1 AudioListener 310
10.2 AudioSource 311
10.2.1 Durch Mauern hören verhindern 313
10.2.2 Sound starten und stoppen 315
10.2.3 Temporäre AudioSource 316
10.3 AudioClip 317
10.3.1 Länge ermitteln 317
10.4 Reverb Zone 317
10.5 Filter 319
10.6 Audio Mixer 319
10.6.1 Das Audio Mixer-Fenster 319
10.6.2 Audiosignalwege 323
10.6.3 Mit Snapshots arbeiten 327
10.6.4 Views erstellen 328
10.6.5 Parameter per Skript bearbeiten 328
11 Partikeleffekte mit Shuriken 332
11.1 Editor-Fenster 333
11.2 Particle Effect Control 334
11.3 Numerische Parametervarianten 334
11.4 Farbparameter-Varianten 335
11.5 Default-Modul 335
11.6 Effekt-Module 337
11.6.1 Emission 337
11.6.2 Shape 337
11.6.3 Velocity over Lifetime 339
11.6.4 Limit Velocity over Lifetime 339
11.6.5 Inherit Velocity 340
11.6.6 Force over Lifetime 340
11.6.7 Color over Lifetime 340
11.6.8 Color by Speed 341
11.6.9 Size over Lifetime 341
11.6.10 Size by Speed 341
11.6.11 Rotation over Lifetime 341
11.6.12 Rotation by Speed 342
11.6.13 External Forces 342
11.6.14 Noise 342
11.6.15 Collision 343
11.6.16 Triggers 344
11.6.17 Sub Emitter 346
11.6.18 Texture-Sheet-Animation 346
11.6.19 Lights 347
11.6.20 Trails 347
11.6.21 Renderer 348
11.7 Partikelemission starten, stoppen und unterbrechen 350
11.7.1 Play 351
11.7.2 Stop 351
11.7.3 Pause 351
11.7.4 enableEmission 351
11.8 OnParticleCollision 352
11.8.1 GetCollisionEvents 352
11.9 Feuer erstellen 353
11.9.1 Materials erstellen 353
11.9.2 Feuer-Partikelsystem 354
11.9.3 Rauch-Partikelsystem 357
11.10 Wassertropfen erstellen 361
11.10.1 Tropfen-Material erstellen 361
11.10.2 Wassertropfen-Partikelsystem 362
11.10.3 Kollisionspartikelsystem 364
11.10.4 Kollisionssound 366
12 Landschaften gestalten 368
12.1 Was Terrains können und wo die Grenzen liegen 369
12.2 Terrainhöhe verändern 369
12.2.1 Pinsel 370
12.2.2 Oberflächen anheben und senken 370
12.2.3 Plateaus und Schluchten erstellen 371
12.2.4 Oberflächen weicher machen 372
12.2.5 Heightmaps 372
12.3 Terrain texturieren 374
12.3.1 Textur-Pinsel 375
12.3.2 Texturen verwalten 375
12.4 Bäume und Sträucher 377
12.4.1 Bedienung des Place Tree-Tools 378
12.4.2 Wälder erstellen 378
12.4.3 Mit Bäumen kollidieren 378
12.5 Gräser und Details hinzufügen 379
12.5.1 Detail-Meshs 380
12.5.2 Gräser 381
12.5.3 Quelldaten nachladen 381
12.6 Terrain-Einstellungen 382
12.6.1 Base Terrain 382
12.6.2 Resolution 382
12.6.3 Tree & Details Objects
12.6.4 Wind Settings 383
12.6.5 Zur Laufzeit Terrain-Eigenschaften verändern 384
12.7 Der Weg zum perfekten Terrain 385
12.8 Gewässer 386
13 Wind Zones 388
13.1 Spherical vs. Directional 389
13.2 Wind Zone – Eigenschaften 390
13.3 Frische Brise 391
13.4 Turbine 391
14 GUI 392
14.1 Das UI-System uGUI 393
14.1.1 Canvas 393
14.1.2 RectTransform 397
14.1.3 UI-Sprite Import 401
14.1.4 Grafische Controls 402
14.1.5 Interaktive Controls 406
14.1.6 Controls designen 413
14.1.7 Animationen in uGUI 414
14.1.8 Event Trigger 415
14.2 Screen-Klasse 416
14.2.1 Schriftgröße dem Bildschirm anpassen 416
14.3 OnGUI-Programmierung 417
14.3.1 GUI 418
14.3.2 GUILayout 420
14.3.3 GUIStyle und GUISkin 421
15 Prefabs 424
15.1 Prefabs erstellen und nutzen 424
15.2 Prefab-Instanzen erzeugen 424
15.2.1 Instanzen per Code erstellen 425
15.2.2 Instanzen weiter bearbeiten 426
15.3 Prefabs ersetzen und zurücksetzen 426
15.4 Prefab-Verbindungen auflösen 427
16 Internet und Datenbanken 428
16.1 Die WWW-Klasse 428
16.1.1 Rückgabewert-Formate 429
16.1.2 Parameter übergeben 430
16.2 Datenbank-Kommunikation 431
16.2.1 Daten in einer Datenbank speichern 431
16.2.2 Daten von einer Datenbank abfragen 432
16.2.3 Rückgabewerte parsen 434
16.2.4 Datenhaltung in eigenen Datentypen 435
16.2.5 HighscoreCommunication.cs 437
16.2.6 Datenbankverbindung in PHP 438
17 Animationen 440
17.1 Allgemeiner Animation-Workflow 441
17.2 Animationen erstellen 441
17.2.1 Animation View 442
17.2.2 Curves vs. Dope Sheet 443
17.2.3 Animationsaufnahme 443
17.2.4 Beispiel Fallgatter-Animation 448
17.3 Animationen importieren 449
17.3.1 Rig 450
17.3.2 Animationen 452
17.4 Animationen einbinden 455
17.4.1 Animator Controller 456
17.4.2 Animator-Komponente 471
17.4.3 Beispiel Fallgatter: Animator Controller 472
17.5 Controller-Skripte 474
17.5.1 Parameter des Animator Controllers setzen 475
17.5.2 Animation States abfragen 475
17.5.3 Beispiel Fallgatter Controller-Skript 476
17.6 Animation Events 478
17.7 Das „alte“ Animationssystem 479
18 Künstliche Intelligenz 482
18.1 NavMeshAgent 483
18.1.1 Eigenschaften der Navigationskomponente 484
18.1.2 Zielpunkt zuweisen 485
18.1.3 Pfadsuche unterbrechen und fortsetzen 485
18.2 Navigation-Fenster 486
18.2.1 Agents Tab 487
18.2.2 Object Tab 488
18.2.3 Bake Tab 488
18.2.4 Areas Tab 489
18.3 NavMeshObstacle 490
18.4 Off-Mesh Link 491
18.4.1 Automatische Off-Mesh Links 491
18.4.2 Manuelle Off-Mesh Links 492
18.5 Point & Click-Steuerung für Maus und Touch
19 Fehlersuche und Performance 496
19.1 Fehlersuche 496
19.1.1 Breakpoints 497
19.1.2 Variablen beobachten 498
19.1.3 Console Tab nutzen 499
19.1.4 GUI- und GUILayout nutzen 499
19.1.5 Fehlersuche bei mobilen Plattformen 500
19.2 Performance 502
19.2.1 Rendering-Statistik 503
19.2.2 Batching-Verfahren 504
19.2.3 Analyse mit dem Profiler 505
19.2.4 Echtzeit-Analyse auf Endgeräten 507
20 Spiele erstellen und publizieren 510
20.1 Der Build-Prozess 510
20.1.1 Szenen des Spiels 511
20.1.2 Plattformen 512
20.1.3 Notwendige SDKs 512
20.1.4 Plattformspezifische Optionen 513
20.1.5 Developer Builds 513
20.2 Publizieren 514
20.2.1 App 515
20.2.2 Browser-Game 515
20.2.3 Desktop-Anwendung 516
21 Erstes Beispiel-Game: 2D-Touch-Game 518
21.1 Projekt und Szene 518
21.1.1 Die Kamera 520
21.1.2 Texturen importieren und Sprites definieren 521
21.2 Gespenster und Hintergrund 523
21.2.1 Gespenster animieren 526
21.2.2 Gespenster laufen lassen 530
21.2.3 Gespenster-Prefab erstellen 532
21.3 Der GameController 533
21.3.1 Der Spawner 533
21.3.2 Level-Anzeige 535
21.3.3 Der Input-Controller 536
21.3.4 Game Over-UI 538
21.3.5 Hintergrundmusik 545
21.4 Punkte zählen 546
21.5 Spielende 547
21.6 Spiel erstellen 548
22 Zweites Beispiel-Game: 3D Dungeon Crawler 550
22.1 Level-Design 551
22.1.1 Modellimport 552
22.1.2 Materials konfigurieren 553
22.1.3 Prefabs erstellen 554
22.1.4 Dungeon erstellen 556
22.1.5 Dekoration erstellen 561
22.2 Inventarsystem erstellen 563
22.2.1 Verwaltungslogik 563
22.2.2 Oberfläche des Inventarsystems 571
22.2.3 Inventar-Items 574
22.3 Game Controller 581
22.4 Spieler erstellen 581
22.4.1 Lebensverwaltung 583
22.4.2 Spielersteuerung 594
22.4.3 Wurfstein entwickeln 602
22.4.4 Lautstärke steuern 608
22.5 Quest erstellen 609
22.5.1 Erfahrungspunkte verwalten 609
22.5.2 Questgeber erstellen 611
22.5.3 Sub-Quest erstellen 620
22.6 Gegner erstellen 625
22.6.1 Model-, Rig- und Animationsimport 625
22.6.2 Komponenten und Prefab konfigurieren 626
22.6.3 Animator Controller erstellen 628
22.6.4 NavMesh erstellen 630
22.6.5 Umgebung und Feinde erkennen 631
22.6.6 Gesundheitszustand verwalten 634
22.6.7 Künstliche Intelligenz entwickeln 638
22.7 Eröffnungsszene 647
22.7.1 Szene erstellen 647
22.7.2 Startmenü-Logik erstellen 648
22.7.3 Menü-GUI erstellen 650
22.8 WebGL-Anpassungen 652
22.8.1 WebGL-Input ändern 652
22.8.2 Quit-Methode in WebGL abfangen 653
22.9 Finale Einstellungen 654
22.10 So könnte es weitergehen 657
23 Der Produktionsprozess in der Spieleentwicklung 658
23.1 Die Produktionsphasen 658
23.1.1 Ideen- und Konzeptionsphase 659
23.1.2 Planungsphase 659
23.1.3 Entwicklungsphase 659
23.1.4 Testphase 660
23.1.5 Veröffentlichung und Postproduktion 660
23.2 Das Game-Design-Dokument 660
24 Schlusswort 662
Index 664

01 Einleitung

Computerspiele gehören heutzutage zu den beliebtesten Freizeitgestaltungen unserer Zeit. Mit Zunahme der Popularität ist aber auch der Anspruch an diese Spiele gestiegen. Während in den ersten Jahren bis Jahrzehnten dieser jungen Branche noch ein einziger Programmierer ausreichte, um alle notwendigen Aufgaben zu erledigen, werden anspruchsvolle Computerspiele heutzutage meist von großen Teams umgesetzt. Hier arbeiten 3D-Modellierer, Grafiker, Sounddesigner, Level-Designern und natürlich auch Programmierer aus unterschiedlichen Sparten Hand in Hand.

Um den stetig wachsenden Ansprüchen zu genügen, sind aber auch die Werkzeuge der Entwickler ständig mitgewachsen. Eines dieser Werkzeuge ist Unity. Unity ist eine Spieleentwicklungsumgebung für Windows- und Mac OS X-Systeme und wird von der aus Dänemark stammenden Firma Unity Technologies entwickelt. Mit ihr können Sie sowohl interaktive 3D- als auch 2D-Inhalte erstellen. Wir sprechen deshalb von Inhalten und nicht nur von Spielen, weil Unity zwar eigentlich für die Entwicklung von 3D-Spielen gedacht war, mittlerweile aber auch immer häufiger Anwendung in anderen Bereichen findet. So wird es beispielsweise für Architekturvisualisierungen genutzt, im E-Learning-Bereich eingesetzt oder in der Digital-Signage-Branche für das Erstellen digitaler Werbe- und Informationssysteme genommen.

Da Unity ursprünglich für die Entwicklung von 3D-Spielen konzipiert wurde, lautet die Internet-Adresse der Firma unity3d.com. Dies ist der Grund, weshalb die Entwicklungssoftware auch gerne mal „Unity3D“ genannt wird, was aber eben nicht ganz korrekt ist.

1.1 Multiplattform-Publishing

Eine besondere Stärke von Unity ist die Unterstützung von Multiplattform-Publishing. Das bedeutet, dass Sie in Unity ein Spiel einmal entwickeln können, das Sie dann aber für mehrere Plattformen exportieren können. Aktuell werden mehr als 25 Plattformen unterstützt, die sich grob in folgende Kategorien einteilen lassen:

  • Die sogenannten „Standalones“. Hierzu gehören: Windows Desktop, Mac, Linux (und Steam OS)

  • Die mobilen Smartphone-/Tablet-Plattformen: iOS, Android, Windows Phone, Fire OS

  • Die Spielekonsolen: PlayStation 4, PlayStation Vita, Xbox One, Nintendo Switch, Wii U, Nintendo 3DS

  • Die Kategorie „Smart-TV“. Hier werden folgende Systeme unterstützt: AndroidTV, Samsung SMART-TV, tvOS

In Verbindung mit diesen Plattformen bietet Unity die Möglichkeit, Inhalte direkt für verschiedene Virtual-Reality-Systeme zu entwickeln. Hierzu gehören: Occulus-Rift, Google-Cardboard, Steam-VR, Playstation-VR, Gear-VR, Microsoft Hololens und Daydream.

Auch für Web-Inhalte bietet Unity entsprechende Features. Mit der Plattform „WebGL“, die im Browser läuft und auf HTML5 basiert, können Sie Nutzern direkten Zugriff auf Ihre Inhalte geben.

Bei den erwähnten Spielekonsolen müssen Sie allerdings noch eine Einschränkung beachten: Sie müssen hier extra Lizenzen erwerben, die zum einen nicht günstig und zum anderen nur für Firmen verfügbar sind, die von den jeweiligen Konsolenherstellern auch als Entwickler akzeptiert wurden. Deshalb werden wir die Konsolenentwicklung in diesem Buch auch außen vor lassen und nicht näher beleuchten.

1.2 Das kann Unity (nicht)

Unity bringt eine ganze Reihe an nützlichen Werkzeugen mit, um Spiele und andere 2D- und 3D-Anwendungen zu entwickeln. So gibt es neben einer ausgeklügelten Physik-Engine auch Tools für Partikeleffekte, zur Landschaftsgestaltung oder auch für Animationen. Außerdem wird Unity mit einer extra angepassten Version der Softwareentwicklungsumgebung MonoDevelop ausgeliefert, in der die Programmierung umgesetzt und das Debugging vorgenommen werden kann.

Eines ist Unity allerdings nicht: Es ist keine 3D-Modellierungssoftware. Unity bietet zwar von Haus aus einige 3D-Grundobjekte an, sogenannte Primitives, die für kleinere Aufgaben genutzt werden können, aber für richtige Modellierungsaufgaben sollten Sie auf die dafür entwickelten Spezialtools wie 3ds Max oder das kostenlose Blender zurückgreifen.

1.3 Lizenzmodelle

Sie haben die Möglichkeit, auf verschiedene Modelle zurückzugreifen, wenn Sie Unity nutzen möchten. Zum eine gibt es eine komplett kostenfreie Variante, welche bereits alle oben genannten Zielplattformen unterstützt und eine komplette Spieleentwicklung bis hin zum fertigen Spiel erlaubt. Es gibt jedoch auch einige Einschränkungen, die sich allerdings nur auf erweiterte oder visuelle Features beziehen. So müssen Sie zum Beispiel auf die dunkle Oberfläche (Skin) Ihres Unity-Programms verzichten oder haben auch keinen Zugriff auf den Premium-Support von Unity.

Bei der kostenpflichtigen Variante unterscheidet man die drei Abo-Modelle „Plus“, „Pro“ und „Enterprise“, welche jeweils monatlich zu bezahlen sind. Je teurer das Abo ist, umso mehr Funktionen stehen zur Verfügung.

Da sowohl die kostenfreie als auch die kostenpflichtige Edition kommerziell genutzt werden darf, gibt es beim Einsatz der kostenlosen Version die Vorgabe, dass nur Firmen bzw. Entwickler diese einsetzen dürfen, die nicht mehr als 100.000 US-Dollar Umsatz in einem Geschäftsjahr machen.

1.4 Aufbau und Ziel des Buches

Mit diesem Buch werden Sie lernen, auf Basis von Unity eigene 2D- und 3D-Spiele zu entwickeln. Sie werden sich mit den unterschiedlichen Tools der Game Engine vertraut machen und die Skript-Programmierung erlernen. Dabei steht aber nicht das Ziel im Fokus, wirklich jede einzelne Funktion und Möglichkeit zu beleuchten, die Unity dem Entwickler anbietet. Vielmehr zeigen wir Ihnen, wie die unterschiedlichen Bereiche von Unity funktionieren und miteinander zusammenarbeiten. Denn der Funktionsumfang dieser Spieleentwicklungsumgebung ist mittlerweile so umfangreich geworden, dass es gar nicht mehr möglich ist, alle Tools und deren Möglichkeiten bis ins letzte Detail in einem einzigen Buch ausführlich zu behandeln. Daher liegt der Schwerpunkt auf den Kernfunktionen und wichtigen Optimierungstechniken, die in Unity für die 2D- und 3D-Spieleentwicklung bereitgestellt werden, ergänzt um Anwendungsbeispiele und Praxistipps.

Möchten Sie weiter in die Tiefe eines speziellen Tools gehen oder mehr Informationen zu bestimmten Scripting-Klassen erhalten, empfehlen wir Ihnen die mit Unity mitgelieferten Hilfe-Dokumente, die Sie über das Help-Menü erreichen. Dort finden Sie sowohl ein ausführliches Manual über die in Unity integrierten Tools sowie eine Scripting-Referenz über alle Unity-Klassen und deren Möglichkeiten. Letztere finden Sie auch über die Hilfe von MonoDevelop, der mitgelieferten Programmierumgebung.

Spieleentwicklung wird häufig auch als Spieleprogrammierung bezeichnet, auch wenn viele Aufgaben in der Spieleentwicklung heutzutage nicht mehr programmiert, sondern mithilfe von Tools erledigt werden. Nichtsdestotrotz ist der Programmieranteil bei der Entwicklung eines Spiels doch immer noch sehr hoch. Deshalb wird auch das Buch zunächst mit zwei größeren programmierbezogenen Kapiteln beginnen. Das erste behandelt allgemeine Grundlagen der Programmierung, das zweite geht auf die Unity-spezifischen Themen ein. Erst danach werden wir in die 3D-Welt von Unity eintauchen und die verschiedenen Werkzeuge behandeln. Der Aufbau ist deshalb so gewählt, weil wir in den folgenden Kapiteln immer wieder kleinere Skript-Beispiele zeigen, die Einsatzmöglichkeiten in der Praxis demonstrieren.

Ganz grundsätzlich ist die Reihenfolge der einzelnen Kapitel so gewählt, dass die Inhalte aufeinander aufbauen. Aus diesem Grund kommen auch erst zum Ende des Buches die beiden Beispiel-Games, eines für 2D und eines für 3D. In diesen werden alle angesprochenen Themen noch einmal aufgegriffen und die gesamten Zusammenhänge in der Praxis gezeigt. Nichtsdestotrotz können Sie gerne diese Kapitel auch vorziehen. Speziell das 2D-Spiel eignet sich hierfür gut.

Im Buch werden wir Hinweiskästen, wie den obigen, einsetzen, um Hinweise und Tipps zu geben. Je nach Typ des Hinweises werden diese mit unterschiedlichen Icons ausgezeichnet.

Hinweise zu weiterführenden Inhalten im InternetPraxistippsAllgemeine Hinweise

1.5 Weiterentwicklung von Unity

Die Spieleindustrie gehört zu den Branchen, die sich aktuell am schnellsten verändern. Kein Wunder also, dass auch Unity ständig weiterentwickelt wird und neue Funktionen erhält. Sollten Sie Unterschiede zwischen dem Buch und Ihrer Unity-Version erkennen, wird dies sicher der ständigen Weiterentwicklung von Unity geschuldet sein.

Aber nicht nur der Funktionsumfang wird ständig weiterentwickelt, auch das Lizenzmodell von...

Erscheint lt. Verlag 11.9.2017
Verlagsort München
Sprache deutsch
Themenwelt Mathematik / Informatik Informatik Programmiersprachen / -werkzeuge
Schlagworte Animationen • Spieleentwicklung • Spiele programmieren mit Unity • Spieleprogrammierung • Unity 3D • Virtual Reality
ISBN-10 3-446-45368-7 / 3446453687
ISBN-13 978-3-446-45368-5 / 9783446453685
Haben Sie eine Frage zum Produkt?
Wie bewerten Sie den Artikel?
Bitte geben Sie Ihre Bewertung ein:
Bitte geben Sie Daten ein:
PDFPDF (Wasserzeichen)
Größe: 31,9 MB

DRM: Digitales Wasserzeichen
Dieses eBook enthält ein digitales Wasser­zeichen und ist damit für Sie persona­lisiert. Bei einer missbräuch­lichen Weiter­gabe des eBooks an Dritte ist eine Rück­ver­folgung an die Quelle möglich.

Dateiformat: PDF (Portable Document Format)
Mit einem festen Seiten­layout eignet sich die PDF besonders für Fach­bücher mit Spalten, Tabellen und Abbild­ungen. Eine PDF kann auf fast allen Geräten ange­zeigt werden, ist aber für kleine Displays (Smart­phone, eReader) nur einge­schrä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.

Zusätzliches Feature: Online Lesen
Dieses eBook können Sie zusätzlich zum Download auch online im Webbrowser lesen.

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.

EPUBEPUB (Wasserzeichen)
Größe: 22,3 MB

DRM: Digitales Wasserzeichen
Dieses eBook enthält ein digitales Wasser­zeichen und ist damit für Sie persona­lisiert. Bei einer missbräuch­lichen Weiter­gabe des eBooks an Dritte ist eine Rück­ver­folgung an die Quelle möglich.

Dateiformat: EPUB (Electronic Publication)
EPUB ist ein offener Standard für eBooks und eignet sich besonders zur Darstellung von Belle­tristik und Sach­büchern. Der Fließ­text wird dynamisch an die Display- und Schrift­größe ange­passt. Auch für mobile Lese­geräte ist EPUB daher gut geeignet.

Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür die kostenlose Software 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 eine kostenlose App.
Geräteliste und zusätzliche Hinweise

Zusätzliches Feature: Online Lesen
Dieses eBook können Sie zusätzlich zum Download auch online im Webbrowser lesen.

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.

Mehr entdecken
aus dem Bereich
Entwicklung von GUIs für verschiedene Betriebssysteme

von Achim Lingott

eBook Download (2023)
Carl Hanser Verlag GmbH & Co. KG
39,99
Das umfassende Handbuch

von Johannes Ernesti; Peter Kaiser

eBook Download (2023)
Rheinwerk Computing (Verlag)
44,90
Mit über 150 Workouts in Java und Python

von Luigi Lo Iacono; Stephan Wiefling; Michael Schneider

eBook Download (2023)
Carl Hanser Verlag GmbH & Co. KG
29,99