Game Development 1 Flashcards

1
Q

Aus welchen 5 Komponenten besteht eine Game Engine?

A

System, Window, Grafiken, Audio, Netzwerk

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Wie könnte die Initialisierung eines Games aussehen?

A

System überprüfen (genug Speicherplatz, Input, mehrere Instanzen…)
Init Logger
Fenster erstellen und Grafikgerät einrichten
Game Subsysteme einrichten
Ressourcen laden
Gameplay starten

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Was ist wichtig zu beachten beim Game Shutdown?

A

Game Systeme sollten in umgekehrter Reihenfolge abgebaut werden, wie sie erzeugt worden sind
Exit(0) sollte nicht einfach so verwendet werden, weil das richtige Abbauen von Game Ressourcen ein Anzeichen von clean code ist und, dass der Speicher richtig freigegeben worden ist

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Wie werden Game States am besten gehandled?

A

Es gibt eine zentralen Game State Manager, der sich um das Handling von States kümmert. Ebenso kommt es zum Einsatz vom State Design Pattern (ConcreteStates erben vom State und erben die handle Methode) - der GameStateManager nimmt einen String bei SetState entgegen und kümmert sich dann um das richtige Setzen vom State.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Was ist ein Game Object?

A

Eine Entität in der Spielwelt

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Was ist ein hierarchisches Game Object?

A

Bei einem hierarchischen Game Object erben einzelne Game Objects von der Game Object Klasse und stellen somit neue einzigartige Game Objects dar - hierbei kann es allerdings zum Problem kommen, dass eine neues Game Object (zum Beispiel Mechtank) sowohl von Character als auch Vehicle erbt, wodurch es zu einem Diamond of Death kommt

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Was ist ein komponenten-basiertes Game Object?

A

Ein komponenten-basiertes Game Object ist ein Container für Komponenten, wobei jede Komponente ihre eigene Funktionalität enthält - somit können Game Objects sich einfach bilden, indem verschiedene Komponenten ineinander gestöpselt werden

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Wie kommunizieren Komponenten miteinander? Wann sollte welche Kommunikation verwendet werden?

A

1) Modifizierung von Container Objekt - Transformation
2) Komponente referenzieren sich gegenseitig (tightes coupling) - Animation + Rendering
3) Nachrichten senden - Play Sound, Trigger on collision

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Was sind Kontroller Dead Zones?

A

Zonen bei Kontrollern, die während dem Spiele keine Wirkung haben sollen - Tile-basiertes Bewegen sollte nur 4 Richtungen beim Joystick erlauben, oder kleine Bewegungswerte sollten beim Shooter ignoriert werden

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Welche Game Input Methoden gibt es?

A

Knopf, 1-Axis-Kontroller (Lenkrad), 2-Axis-Kontroller (Joystick, Maus), Motion Kontroller (Wii Remote), Motion Tracking (Playstatino Camera)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Woraus bestehen Motion Controller, um die Bewegung zu messen?

A

Accelerometer - misst die Beschleunigung
Gyroscope - misst die Rotation und Orientation vom Controller

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Welche Herausforderungen treten beim Motion Tracking auf?

A

Genaue Erkennung von Bewegung (Bewegungs-“noise” macht genaue Erkennung schwer)
Latenz (Player-Prediction hilft)
Synchronisation der Animation (Animation und Spielerbewegung sollen gleich aussehen)
Falsche Fehler (System denkt, Spieler hat Move falsch gemacht, obwohl dieser richtig war - der Spieler hat immer recht)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Welche Arten gibt es Input zu messen?

A

Über einen Input Manager mithilfe von Polling (konstantes Checken, ob Input betätigt worden ist - Player Controls) oder Callbacks (werden ausgeführt, wenn der Status vom Input Device sich verändert hat - User Interface)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Wie sieht eine Translations-Matrix aus?

A

1 0 0 t.x
0 1 0 t.y
0 0 1 t.z
0 0 0 1

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Wie sieht eine Scale-Matrix aus?

A

s.x 0 0 0
0 s.y 0 0
0 0 s.z 0
0 0 0 1

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Wie sieht eine Rotation-Matrix aus?

A

x-Achse
1 0 0 0
0 cos(a) -sin(a) 0
0 sin(a) cos(a) 0
0 0 0 1

y-Achse
cos(a) 0 sin(a) 0
0 1 0 0
-sin(a) 0 cos(a) 0
0 0 0 1

z-Achse
cos(a) -sin(a) 0 0
sin(a) cos(a) 0 0
0 0 1 0
0 0 0 1

16
Q

Was sind Tile Maps?

A

Eine Map von Welt-Geometrie (2D), wo die Map in einzelne kleine Graphiken unterteilt ist (ebenso wie ein Sprite Sheet) und man sich eine Welt aus den einzelnen Teilen der Tiel Map bauen kann.

17
Q

Was ist Skinning?

A

Skinning ist der Prozess, wo man die Geometrie einer Mesh über Weight Values an ein Skelett (and die joints) bindet - Weight Painting ist essentiell für das „richtige“ Aussehen eines korrekt geskinnten Characters

18
Q

Was sind Forward Kinematics?

A

= Hierchische Rigging Methode, bei der Joints bewegt und rotiert werden können
Rotiert man zum Beispiel eine Schulter, dann rotiert sich der gesamte Arm mit

19
Q

Was sind Inverse Kinematics?

A

Das Gegenteil von Forward Kinematics: Man markiert den Fuß-Joint als IK, die Bewegung dessen hat dann Einfluss auf das gesamte Bein

Fuß wird angehoben, Oberschenkel geht automatisch mit
Beim Bewegen des Fußes wird die Bewegung in der Hierarchie nach oben hin verrechnet (Rigger setzt selbst fest, (bis) welche Joints beeinflusst werden von IK)

20
Q

Was ist Pixel Basierte Collisionserkennung?

A

Jeder einzelne Pixel wird auf eine Intersektion geprüft - ist aber sehr langsam und wird nur für Mouse Hit Tests in 2D Spielen verwendet

21
Q

Welche Kollisionsformen gibt es im 2D-Bereich?

A

Punkt, Linie, Kreis, Axis-Aligned Bounding Box (AABB), Oriented Bounding Box (OBB), Convex Polygon, Concaves Polygon (ein internet Winkel ist größer als 180°)

21
Q

Wie funktioniert die Kollisionserkennung bei Kreisen?

A

Wenn die Distanz zwischen den beiden Kreisen kleiner als der aufaddierte Radius beider Kreise ist, dann handelt es sich um eine Kollision.

22
Q

Wie kann die Kollisionserkennung über Distanzen performancemäßig optimiert werden?

A

Indem man im quadrierten Bereich rechnet und sich die Wurzel spart, also wenn der Radius beider Wurzeln zusammenaddiert zum Quadrat kleiner als Distanz zwischen den Kreisen ist.

r = a.radius + b.radius;
return r * r < (a.x - b.x) ² + (a.y - b.y) ²

23
Q

Was ist das Separating Axis Theorem?

A

Zwei convexe Objekte kollidieren NICHT, wenn es eine Achse gibt, wo die Objekte separiert sind - man muss also nur durch alle Checks durchgehen und eine Achse finden ohne Überlappung, damit man weiß, ob eine Kollision entsteht oder nicht

Checks: Man schnappt sich jeder Achse von jedem Objekte und macht eine orthogonale Linie auf diese Achse (Separating Axis) - man projiziert nun die Form des Objekts und legt diese “übereinander” - wenn es eine Separating Axis gibt, wo die Objekte nicht übereinander liegen, dann gibt es keine Kollision (funktioniert nur bei Convexen Objekten)

24
Q

Wie funktioniert die Kollisionserkennung bei AABB?

A

if (a.max.x < b.min.x || a.min.x > b.max.x)
return false; // no collision
if (a.max.y < b.min.y || a.min.y > b.max.y)
return false; // no collision

return true;

25
Q

Welche Kollisionsformen gibt es in 3D?

A

Ray, Plane, Cube, Cylinder, Cone, Capsule, AABB, OBB, Convex Polyhedron, Concave Polyhedron

26
Q

Wie ist eine Physics Engine grundsätzlich aufgebaut? Erläutere die einzelnen Phasen.

A

1) Kollisionserkennung mit Broad und Narrow Phase
In der Broad Phase werden potentielle Kollisionen gesammelt - kann durch BSP Tree oder Quad Trees verschnellert werden
In der Narrow Phase wird dann eine genaue Kollisionserkennung durchgeführt und für jede Kollision wird ein Manifold erstellt (speichert alle Informationen einer Kollision)

2) Kollisionsbehandlung
Kollisionen werden behandelt und die positional correction angewendet (bei Penetrationen)

3) Berechnungen der Bewegungen
Positionen von Objekte werden an Hand der Geschwindigkeit festgelegt / berechnet

27
Q

Welche Informationen enthält ein Manifold?

A

Collisionsnormale
Penetration
Die kollidierenden Objekte
Kontaktpunkt

28
Q

Auf welchen physikalischen Grundsätzen basiert eine Game Physics Engine normalerweise?

A

Trägheitsgesetz (Inertia Law) - Objekt bleibt in Ruhe / in Bewegung so lange, bis externe Kräfte auf dieses einwirken
Aktionsprinzip (Action Law) - a = F / m (Beschleunigung = Kräfte / Masse)
Reaktionsprinzip (Reaction Law) - auf jede Aktion folgt eine Reaktion, wenn also ein Körper A auf Körper B Kräfte ausübt, wird Körper B in die entgegengesetzte Richtung ebenso Kräfte ausüben

29
Q

Welche Eigenschaften / Attribute enthält ein Rigid Body normalerweise?

A

Position
Velocity
Acceleration
Shape
Mass

30
Q

Was ist die simpelste Methode der Kollisionsbehandlung? Wie funktioniert diese?

A

Ein one-time Impuls wird ausgesendet, sodass sich beide Objekte in der nächsten Frame in die selbe Richtung bewegen basierend auf der Kollisionsnormale und der Geschwindigkeit der Objekte

Man nimmt die relative Geschwindigkeit (vb - va = vab) und multipliziert diese mit der Kollisionsnormale –>
vn = (vab * n) * n
Um nun den Impuls zu berechnen, nimmt man die Hälfte von vn und zieht diese von va und addiert die andere Hälfte zu vb
v’a = va - 1/2vn
v’b = vb + 1/2vn

31
Q

Was ist Inverse Masse?

A

Bessere Methode zum Rechnen mit Massen in der Physik, da eine teure Division erspart wird
Mit inversen Massen können Körper mit unendlich Masse ebenso leichter definiert werden (0)

Inverse Masse = 1 / Masse

32
Q

Wie wird Bewegung in Spielen programmiertechnisch umgesetzt?

A

Vec2f F = calculateForces();

acceleration = F / mass;
velocity += acceleration * delta;
position += velocity * delta;

33
Q

Was ist Tunneling?

A

Kollisionserkennung wird nur zu bestimmten Zeiten ausgeführt (Steps) - schnelle Objekte können somit durch dünne Objekte durchfliegen (Tunneling) - eine mögliche Lösung ist den time step zu reduzieren oder kontrinuierliche Kollisionserkennung

34
Q

Was ist das Observer Pattern?

A

Beim Observer Pattern können sich Objekte an andere Objekte “anhängen” (registrieren) und werden über mögliche Statusveränderungen dann benachrichtigt - das Subjekt führt eine Liste von Observern, die während der Runtime geupdated wird und wenn eine mögliche Nachricht aufgerufen wird, die observed werden soll, führt das Subjekt “Notify()” aus, wo das “onNotify()” von allen registrierten Observern ausgeführt wird

35
Q

Was ist das Strategy Pattern?

A

Beim Strategy Pattern kann man eine austauschbare Strategy bei einem Objekt definieren, die ausgeführt wird (“execute()”) - hierbei kann beim Contextobjekt die Strategy gesetzt werden und alle Objekte die vom Strategy Interface erben, können hier eingefügt werden und deren Verhaltensweise ausgeführt werden - so kann man beispielsweise leicht switchen, ob ein Mitspieler gerade durch einen Spieler oder durch AI gesteuert werden soll

36
Q

Was ist das Factory Pattern?

A

Die Factory dient zum Instanziieren einer Klasse, ohne die konkrete Klasse zu wissen

Beispiel:

1) Im Mainstate vom Spiel wird “create(“Enemy”)” aufgerufen
2) In der GameObjectFactory wird die AbstractFactory in einer Map gefunden (EnemyFactory) und die Methode “create()” bei diesem aufgerufen
3) Die EnemyFactory instanziiert nun einen Gegner und das GameObject wird im MainState returned

37
Q

Was ist ein Event Bus?

A

Ein Event Bus wird meist als Singleton implementiert und dieser hat im Hintergrund eine Queue hinterlegt, die Event processed - Komponenten können Events an den Event Bus senden und alle “Subscriber” zu diesem Event werden benachrichtigt, dass dieses Event getriggered worden ist –> praktisch für lose Kommunikation