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