Spieleentwicklung Diane Hanke, Okan Danyeli & Toni Wirth
Organisatorisches Welche Vorkenntnisse sind von Vorteil? • • •
Java Crashkurs Oder: ALP2 (Objektorientierte Programmierung) Oder: C#‐Kenntnisse/vergleichbare objektorientierte Programmiersprache
Welche Hardware benötige ich? • •
Pool Rechner Oder: Laptop mit OSX oder Windows
Unity Spieleentwicklung, Tag 1: 28.04.2017
2
Organisatorisches Wann findet der Kurs statt? • •
Freitag, den 28.04.2017 14:00 – 18:00 Uhr
Wo findet der Kurs statt? • • •
Takustraße 9 Theorie: SR 053 Praxis: K044 & K046
Unity Spieleentwicklung, Tag 1: 28.04.2017
3
Programm 1. 2. 3. 4.
Woche Woche Woche Woche
Unity Spieleentwicklung, Tag 1: 28.04.2017
1. Woche Man, ist das schön hier! Der Weg zum ersten eigenen Spiel! • • • • •
Einführung und Motivation Unity installieren Einführung in C# Unity Engine Terrain erstellen
4
Programm 1. 2. 3. 4.
Woche Woche Woche Woche
Unity Spieleentwicklung, Tag 1: 28.04.2017
2. Woche Unser Held wird lebendig! Willkommen in deiner neuen Welt! • • •
C# und die Unity API Spielobjekte ins Leben rufen Spielerbewegung
5
Programm 1. 2. 3. 4.
Woche Woche Woche Woche
Unity Spieleentwicklung, Tag 1: 28.04.2017
3. Woche Die erste Welt war schon ganz nett! Aber jetzt wird es richtig fancy! • • • •
Einbinden des Gameobjektes Partikelsystem (Regen) Soundeinbindung Assert Store
6
Programm 1. 2. 3. 4.
Woche Woche Woche Woche
4. Woche Hilfe, wir werden verfolgt! Unser Gegner lernt zu denken! • •
Unity Spieleentwicklung, Tag 1: 28.04.2017
Implementierung der gegnerischen Spielerbewegung Implementierung der gegnerischen KI
7
Einführung und Motivation
Unity Spieleentwicklung, Tag 1: 28.04.2017
8
Was ist mit Unity möglich?
Unity Spieleentwicklung, Tag 1: 28.04.2017
9
Was ist mit Unity möglich?
Unity Spieleentwicklung, Tag 1: 28.04.2017
10
Was ist mit Unity möglich?
Unity Spieleentwicklung, Tag 1: 28.04.2017
11
Was ist mit Unity möglich?
Unity Spieleentwicklung, Tag 1: 28.04.2017
12
Was ist mit Unity möglich?
Unity Spieleentwicklung, Tag 1: 28.04.2017
13
Was ist mit Unity möglich?
Unity Spieleentwicklung, Tag 1: 28.04.2017
14
installieren
Unity Spieleentwicklung, Tag 1: 28.04.2017
15
Installation 1. über USB
2. online über:
Unity Spieleentwicklung, Tag 1: 28.04.2017
https://unity3d.com
16
Unity einrichten 1. Schritt • Website öffnen • registrieren
Unity Spieleentwicklung, Tag 1: 28.04.2017
17
Unity einrichten 2. Schritt • unity/personal
Unity Spieleentwicklung, Tag 1: 28.04.2017
18
Unity einrichten 3. Schritt • Download Installer anklicken
Unity Spieleentwicklung, Tag 1: 28.04.2017
19
Unity einrichten 4. Schritt • Unity einrichten • die ersten drei brauchen wir • Rest optional
Unity Spieleentwicklung, Tag 1: 28.04.2017
20
Nach der Pause folgt die Einführung in C#. Unity Spieleentwicklung, Tag 1: 28.04.2017
21
Einführung in C#
Unity Spieleentwicklung, Tag 1: 28.04.2017
22
Einführung Zum selbstständigen Lernen: • •
https://unity3d.com/de/learn https://msdn.microsoft.com/ de‐de/library/67ef8sbd.aspx ISBN: 3446445633
Unity Spieleentwicklung, Tag 1: 28.04.2017
23
Motivation: Interaktion mit der Umwelt
Mit einer Anweisung wird in Unity eine Figur bewegt (Code unvollständig!). Unity Spieleentwicklung, Tag 1: 28.04.2017
24
Unsere Themen • • • • • • • •
Visual Studio/ Mono Develop (IDE) Datentypen if‐else‐Bedingung Schleifen Arrays, Listen, Dictionaries Funktionen Klassen Vererbung
Unity Spieleentwicklung, Tag 1: 28.04.2017
25
Integrated Development Environment … ist eine Sammlung von Anwendungsprogrammen, mit denen die Aufgaben in der Softwareentwicklung möglichst schnell und effektiv bearbeitet werden können.
Unity Spieleentwicklung, Tag 1: 28.04.2017
VisualStudio
MonoDevelop
26
Datentypen TYP
MINIMUM
MAXIMUM
sbyte
‐128
127
8 Bit
short
‐32.768
32.767
16 Bit
‐2.147.483.648
2.147.483.647
32 Bit
long
‐9.223.372.036.854.775.807
9.223.372.036.854.775.807
64 Bit
byte
0
255
8 Bit
ushort
0
65535
16 Bit
uint
0
4.294.968.295
32 Bit
ulong
0
18.446.744.073.709.551.615
64 Bit
int
Unity Spieleentwicklung, Tag 1: 28.04.2017
GRÖßE VORZEICHEN
27
if‐else‐Bedingung
Eine if‐Anweisung ermittelt, welche Anweisung, basierend auf dem Wert eines booleschen Ausdrucks, auszuführen ist. Hier wird die boolesche Variable condition auf true initalisiert und dann in der if‐ Anweisung überprüft. Die Ausgabe lautet „The variable is set to true“. Unity Spieleentwicklung, Tag 1: 28.04.2017
28
if‐else‐Bedingung
Wie würde hier die Ausgabe lauten? Die Ausgabe lautet: „Result2“
Unity Spieleentwicklung, Tag 1: 28.04.2017
29
while‐Schleife
Führt eine Anweisung wiederholt aus, bis die angegebene Abbruchsbedingung (der Ausdruck) zu 0 (null) ausgewertet wird.
Unity Spieleentwicklung, Tag 1: 28.04.2017
30
for‐Schleife
Mit einer for‐Schleife kann eine Anweisung oder ein Anweisungsblock wiederholt ausgeführt werden, bis ein angegebener Ausdruck false ergibt. Ist zum Beispiel für das Durchlaufen von Arrays nützlich, in denen vorhergesagt wird, wie oft die Schleife durchlaufen wird. Unity Spieleentwicklung, Tag 1: 28.04.2017
31
Array
Man kann mehrere Variablen des gleichen Typs in dem abstrakten Datentyp Array speichern. Ein Array wird deklariert, indem der Datentyp seiner Elemente angegeben wird. Unity Spieleentwicklung, Tag 1: 28.04.2017
32
Listen
Stellt eine stark typisierte Liste von Objekten dar, auf die über einen Index zugegriffen werden kann. Die Klasse Liste stellt Methoden zum Durchsuchen, Sortieren und Bearbeiten bereit. Unity Spieleentwicklung, Tag 1: 28.04.2017
33
Arrays/Listen Unterschiede • Arrays sind dadurch gekennzeichnet, dass die Elemente über einen Index angesprochen werden. • Listen sind dadurch gekennzeichnet, dass die Elemente über Zeiger miteinander verbunden werden. (Stichwort: linked lists)
Unity Spieleentwicklung, Tag 1: 28.04.2017
34
Dictionary
Ein Dictionary besteht aus Schlüssel‐Objekt‐Paaren. Zu einem bestimmten Schlüssel gehört immer ein Objekt. Man kann also die Schlüssel auf die Objekte "abbilden„.
Unity Spieleentwicklung, Tag 1: 28.04.2017
35
Funktionen
Eine Funktion ist ein Codeblock, die eine oder mehrere Anweisungen enthalten kann. Diese Funktion kann im Programm aufgerufen werden. Hier in diesem Beispiel enthält die Funktion funktionsname() die Anweisung einen String auszugeben. Unity Spieleentwicklung, Tag 1: 28.04.2017
36
Objekte Ein Objekt ist die Modellierung für einen Ausschnitt aus der realen Welt. Es hat einen Zustand, der durch Attribute, und ein Verhalten, das durch Methoden beschrieben wird. • •
Attribute: Beschreiben bestimmte Eigenschaften eines Objekts. Methoden: Beschreiben bestimmte Funktionen eines Objekts.
Unity Spieleentwicklung, Tag 1: 28.04.2017
37
Klassen Das Erstellen von Klassen dient der Kategorisierung von Objekten. (Bauplan des Hauses) Eine Klasse beschreibt alle Objekte mit gleichartigen Attributen und Methoden. (Haus) Unity Spieleentwicklung, Tag 1: 28.04.2017
38
Vererbung Vererbung ermöglicht die Erstellung neuer Klassen, die in anderen Klassen definiertes Verhalten wieder verwenden, erweitern und ändern. Die Klasse, deren Attribute und Methoden vererbt werden, wird Basisklasse genannt, und die Klasse, die diese Attribute und Methoden erbt, wird abgeleitete Klasse genannt.
Unity Spieleentwicklung, Tag 1: 28.04.2017
39
Vererbung/Basisklasse
Unity Spieleentwicklung, Tag 1: 28.04.2017
40
Vererbung/Basisklasse
Unity Spieleentwicklung, Tag 1: 28.04.2017
41
Vererbung/Basisklasse
Unity Spieleentwicklung, Tag 1: 28.04.2017
42
Nach der Pause folgt die Einführung in die Unity Engine. Unity Spieleentwicklung, Tag 1: 28.04.2017
43
Engine
Unity Spieleentwicklung, Tag 1: 28.04.2017
44
Login Wir starten Unity. •
Registrierung erforderlich
Unity Spieleentwicklung, Tag 1: 28.04.2017
45
Login Wir starten Unity. • • •
Registrierung erforderlich Email Password
Unity Spieleentwicklung, Tag 1: 28.04.2017
46
Login bereits vorbereitet Login Daten: •
Email:
[email protected]
•
Password: Fugast123
Unity Spieleentwicklung, Tag 1: 28.04.2017
47
Aufbau der Engine Projekt erstellen • • •
Titel des Projekts Speicherort wählen (in Z:\) 3D Projekt erstellen
Unity Spieleentwicklung, Tag 1: 28.04.2017
48
Aufbau der Engine
Unity Spieleentwicklung, Tag 1: 28.04.2017
49
Aufbau der Engine
Gameobject 3D Object Cube Unity Spieleentwicklung, Tag 1: 28.04.2017
50
Aufbau der Engine
Unity Spieleentwicklung, Tag 1: 28.04.2017
51
Aufbau der Engine
1
2
3
4
5
Feld
Funktion
Beschreibung
1
greifen
in der Szene nach links, rechts, oben, unten bewegen (zum Schwenken Rechtsklick gedrückt halten)
2
Objekt greifen
Objekt (Assert) um die x‐, y‐, z‐Achse bewegen
3
rotieren
Objekt (Assert) um die eigene Achse rotieren lassen
4
skalieren
Objekt (Assert) skalieren
5
gleichmäßig skalieren
Objekt (Assert) gleichmäßig um x‐ und z‐Achse skalieren (für Objekte geeignet, bei denen Höhe irrelevant ist, z.B. Boden)
Unity Spieleentwicklung, Tag 1: 28.04.2017
52
Aufbau der Engine
Unity Spieleentwicklung, Tag 1: 28.04.2017
53
Aufbau der Engine
Unity Spieleentwicklung, Tag 1: 28.04.2017
54
Aufbau der Engine
Unity Spieleentwicklung, Tag 1: 28.04.2017
55
Nach der Pause ziehen wir in die Räume K044/K046. Unity Spieleentwicklung, Tag 1: 28.04.2017
56
Terrain erstellen LIVE
Unity Spieleentwicklung, Tag 1: 28.04.2017
57
Ausblick 1. 2. 3. 4.
Woche Woche Woche Woche
Unity Spieleentwicklung, Tag 1: 28.04.2017
2. Woche Unser Held wird lebendig! Willkommen in deiner neuen Welt! • • •
C# und die Unity API Spielobjekte ins Leben rufen Spielerbewegung
58