<!-- Markdown-Fassung von https://www.allknivesnobagel.com/teaching/gec1/days/04/ · Stand 2026-10-05T13:39Z · 21cef83 -->

# Tag 4: Vertical Slice: spielen lassen

27.11.2026 · Game Engines & Coding 1 · Macromedia Leipzig · Folien: https://www.allknivesnobagel.com/teaching/gec1/days/04/slides/

Andere spielen euer Spiel, ihr schaut zu. Danach bekommt eure Welt ihre erste eigene Animation.

Begriffe: [playtest](https://www.allknivesnobagel.com/teaching/gec1/concepts/playtest/), [feedback](https://www.allknivesnobagel.com/teaching/gec1/concepts/feedback/), [animation](https://www.allknivesnobagel.com/teaching/gec1/concepts/animation/), [animator](https://www.allknivesnobagel.com/teaching/gec1/concepts/animator/), [branch](https://www.allknivesnobagel.com/teaching/gec1/concepts/branch/)

Bis zum nächsten Termin: Meilenstein Alpha bis 11.12., zugleich Feature-Freeze: Alle geplanten Interaktionen sind eingebaut, mindestens zwei aus der Aufgabenstellung. Grafik und Ton sind erstmals überarbeitet. Ein aktueller Windows-Build dieses Stands läuft auf einem anderen Rechner. Aufwand: etwa 12–16 Stunden in 14 Tagen. Nach 48 Stunden: die Entscheidung aus dem Playtest umgesetzt, die Animation von heute in die eigene Welt übertragen. Eine Woche später im Blackboard-Thread: 30-Sekunden-Clip, ein Hindernis, der nächste Schritt. Vor dem 11.12.: ein zweiter Playtest mit jemandem außerhalb des Kurses, mit der Playtest-Karte.

## Heute wird gespielt

Meilenstein Vertical Slice

Zwei Interaktionen laufen im Blockout, als Windows-Build dieses Stands. Das KI-Verzeichnis hat Einträge.

Heute spielen andere euer Spiel.

Wer erst eine Interaktion hat, testet trotzdem mit: Eine reicht für einen Test. Ein Build, der nicht zustande kam, ist ein Rettungsfall: Fehlermeldung in den Devlog und in den Blackboard-Thread, dann gemeinsam lösen. Der Meilenstein gilt damit noch nicht als erreicht.

## Ihr seht euer Spiel nie wieder zum ersten Mal

Andere schon.

Ein [Playtest](https://www.allknivesnobagel.com/teaching/gec1/concepts/playtest/) leiht sich fremde Augen: Eine Person spielt und denkt laut. Ihr schaut zu.

## Drei Fragen an jeden Test

1. Was habe ich zuerst versucht?
2. Wo wusste ich nicht weiter?
3. Was hat sich gut angefühlt?

Die Fragen beantwortet, wer gespielt hat, auf der Karte.

## Wer gebaut hat, schweigt

Ein Satz zum Start: „Bitte einfach spielen und dabei laut denken.“

Nichts erklären, nichts verteidigen. Hilfe erst nach einer Minute Feststecken; jede Hilfe gibt einen Strich auf dem Bogen.

Jeder Strich: Hier müsste das Spiel selbst etwas sagen.

## Die Playtest-Karte

**Tafelbild:** Die gedruckte Playtest-Karte: Spiel von, gespielt von; Was habe ich zuerst versucht? In der ersten Minute. Wo wusste ich nicht weiter? Wann, wo, was hätte geholfen? Was hat sich gut angefühlt? Ein Moment, so genau wie möglich.

Zwei Karten pro Person: für die zwei Spiele, die ihr testet. Dazu ein Bogen fürs eigene Spiel.

## Eine Runde, 22 Minuten

**Tafelbild:** Zeitleiste einer Runde: 0 bis 8 Minuten spielt B bei A, 8 bis 11 Karte, 11 bis 19 spielt A bei B, 19 bis 22 Karte. Die Kartenzeiten sind gelb umrandet: erst schreiben, dann reden. Wer gebaut hat, schweigt und notiert.

Schon fertig? Noch einmal von vorn spielen, ohne Hinweis.

Nach acht Minuten wird abgebrochen, auch mitten im Level. Kleine Slices sind nach zwei Minuten durchgespielt; das ist der Normalfall. Dann notiert, wer gebaut hat, auf dem Bogen, wo die Person zuerst hingeschaut hat, und die Person spielt ein zweites Mal, ohne Hinweis. Was beim zweiten Durchgang schneller geht, hat das Spiel beim ersten Mal erklärt.

## Wer spielt bei wem?

**Tafelbild:** Vier Tische mit je zwei Plätzen, A und B, C und D, E und F, G und H. Runde 1: Am eigenen Tisch spielt erst links, dann rechts. Runde 2: Wer rechts sitzt, zieht mit dem Laptop zwei Tische weiter; von den letzten Tischen geht es vorn weiter.

Der Laptop wandert mit. Das Spiel läuft dort, wo es gebaut wurde.

**Runde 1** spielt am eigenen Tisch. In **Runde 2** zieht, wer rechts sitzt, mit dem eigenen Laptop zwei Tische weiter; wer an den letzten beiden Tischen rechts sitzt, geht nach vorn an Tisch 1 oder 2. Ab drei Tischen trifft so jede Person in Runde 2 jemand Neues.

**Ungerade Zahl:** Der letzte Tisch ist ein Dreiertisch mit den Plätzen links, Mitte, rechts. Dort dauert jede Spielzeit 5 Minuten plus 2 Minuten Karte, dreimal hintereinander, also 21 Minuten.

- Runde 1: Mitte spielt bei links, dann rechts bei Mitte, dann links bei rechts.
- Runde 2: Wer rechts sitzt, zieht wie alle anderen zwei Tische weiter; die ankommende Person setzt sich nach rechts. Dann spielt rechts bei links, links bei Mitte, Mitte bei rechts.

**Kein lauffähiges Spiel dabei:** an einen Zweiertisch setzen, bei beiden Tests zuschauen und für beide Spiele eine Karte ausfüllen, mit Kreuz bei „zugeschaut“.

## Wenn das Spiel nicht startet

Zwei Minuten Rettungsversuch, dann gilt: vorspielen statt spielen lassen.

Auf der Karte „zugeschaut“ ankreuzen.

Ich notiere euren Namen und komme in Block 2 zu euch.

Startet ein Spiel nach zwei Minuten nicht, spielt die Person, die es gebaut hat, es selbst vor, und die andere füllt die Karte als Zuschauerin aus. Auch das zeigt, ob man versteht, was passiert. Ein Spiel, das nur im Editor läuft, darf heute im Editor gespielt werden: im Game-Fenster **Play Maximized** wählen, und wer testet, klickt nur ins Spiel. Während der Runde wird nicht repariert; das kostet beide ihre Testzeit.

## Ein Test, eine Änderung

HIGH WATER

**Tafelbild:** Links: Die Karte SYSTEM BREACHED füllt fast das ganze Bild. Rechts, nach dem Test: ein Streifen, 21 % hoch, im unteren Drittel, nach 1,8 Sekunden wieder weg.

Beim Spielen notiert: „viel zu groß“. Am selben Nachmittag: drei Varianten, eine gewählt, committet.

## Startklar?

1. Spiel offen, Szene gespeichert, Play funktioniert
2. Auf dem Bogen: eure Designfrage, nicht vorlesen
3. Auf dem Bogen: der Commit, der getestet wird

Die Designfrage stammt aus der ersten Hausaufgabe und steht in Kapitel 3 von `DOKUMENTATION.md`. Den Commit findet ihr in GitHub Desktop unter History: Nachricht oder Kennung abschreiben.

## Runde 1: am eigenen Tisch

8 + 3 + 8 + 3

Erst spielt, wer links sitzt.

## Runde 2: zwei Tische weiter

8 + 3 + 8 + 3

Wer rechts sitzt, nimmt den Laptop und zieht zwei Tische weiter.

## Was folgt aus dem Test?

1. Beide Karten und den eigenen Bogen nebeneinanderlegen
2. Designfrage: beantwortet oder offen? Mit Beleg.
3. Eine Zeile der Spec ändern, oder begründet beibehalten und den nächsten Test planen

Was zwei Personen bemerken, ist ein Muster. Was eine bemerkt, ist ein Hinweis.

## Vom Befund zur Spec

Befund „Ich habe die Truhe dreimal benutzt. Ich wusste nicht, dass sie offen war.“

Vorher Rückmeldung: Die Truhe ist offen.

Nachher Rückmeldung: Der Deckel klappt auf, es klackt, innen leuchtet es.

Ein ausgedachtes Beispiel, passend zur Werkstatt in Block 2. Hat sich die Spec im Test bewährt, ist auch das ein Ergebnis: Dann steht im Devlog, welcher Beleg dafür spricht und was der nächste Test prüfen soll.

## Devlog und Commit

„Getestet mit zwei Personen. Designfrage: … Beobachtet: … Entschieden: …, weil …“

Ins Entwicklungstagebuch unten in `DOKUMENTATION.md`.

Commit-Nachricht zum Beispiel: „Spec nach Playtest: Rückmeldung Truhe“. Im Januar wird aus diesen Einträgen der Prozessteil der Dokumentation: Was beobachtet und was daraufhin entschieden wurde, zeigt Designarbeit besser als jede fertige Beschreibung. Die Karten fotografieren; die Fotos gehören in Kapitel 5 (Tests).

## Ein Branch für das Experiment

**Tafelbild:** Die Linie main mit zwei Commits, beim zweiten läuft der Slice. Davon zweigt die Linie experiment ab, mit drei Commits. Geklappt: Ein gelber Pfeil führt zurück in main (mergen). Verworfen: Das Ende von experiment ist durchgestrichen, main bleibt, wie es war.

Ein [Branch](https://www.allknivesnobagel.com/teaching/gec1/concepts/branch/) in GitHub Desktop: Current Branch › New Branch › `experiment-animation`

Ein Branch ist eine eigene Linie im Verlauf. Alles, was heute in Block 2 entsteht, landet auf `experiment-animation`; der getestete Slice auf `main` bleibt unberührt. Vorher die Szene speichern und den Stand aus Block 1 committen. Unity darf dabei offen bleiben: Beim Anlegen eines Branches ändert sich keine Datei. Im Terminal: `git switch -c experiment-animation`.

## Ein Clip hält Werte über die Zeit

**Tafelbild:** Eine Truhe, zu bei 0 Sekunden und auf bei 1 Sekunde. Darunter die Kurve der Rotation x: ein Keyframe bei 0 s mit 0 Grad, einer bei 1 s mit 100 Grad. Dazwischen rechnet Unity jeden Frame aus.

[Animation Clip](https://www.allknivesnobagel.com/teaching/gec1/concepts/animation/): zwei Keyframes reichen.

## Der Animator wählt den Clip

**Tafelbild:** Animator Controller als Zustandsautomat: Entry führt zum Standardzustand Zu. Ein Übergang führt von Zu nach Auf; an ihm hängt das Schild Öffnen, ein Trigger. Has Exit Time ist aus: Der Übergang wartet nur auf Öffnen.

Der [Animator](https://www.allknivesnobagel.com/teaching/gec1/concepts/animator/) ist ein [Zustandsautomat](https://www.allknivesnobagel.com/teaching/gec1/concepts/state/), fertig eingebaut.

Der Animator ist eine Komponente. Sein Animator Controller enthält Zustände, Übergänge und Parameter. Ein Trigger ist ein Parameter für einen Moment: Er wird gesetzt, ein Übergang verbraucht ihn. Neue Übergänge warten zunächst, bis der Clip des aktuellen Zustands fast durch ist (Has Exit Time); für eine Reaktion auf eine Handlung wird das ausgeschaltet.

## Vom Graphen zum Clip

**Tafelbild:** Im Graphen: Benutzen (Taste E) feuert ein Event an Animator-Wert mit dem Parameter Öffnen. Animator-Wert setzt den Trigger im Animator. Dort wechselt der Zustand von Zu nach Auf, und der Clip läuft.

Der Graph sagt, wann. Der Animator weiß, wie.

Den Knoten **Animator-Wert** gibt es im Kit in der Gruppe **Erweiterung**. Passen Parametername oder Art nicht zum Animator Controller, meldet er das im Graphen und in der Console.

## Bewegen oder Clip?

Bewegen Ein Wert, von A nach B, über eine einstellbare Dauer.

Clip Mehrere Werte, eine eigene Kurve, eine Wiederholung.

Eine Eigenschaft, die ein Clip animiert, kann Bewegen nicht mehr bewegen.

Der Kit-Knoten **Bewegen** verschiebt, dreht oder skaliert ein Objekt über eine einstellbare Dauer: ein kleiner Tween ohne eigene Datei. Ein Clip lohnt sich, sobald mehrere Eigenschaften zusammenspielen, die Kurve eine eigene Form braucht (langsam anlaufen, überschwingen) oder sich etwas wiederholt, etwa eine flackernde Lampe. Animiert ein Clip eine Eigenschaft, etwa die Drehung des Scharniers, schreibt der Animator sie in jedem Frame neu; ein Bewegen-Knoten auf derselben Eigenschaft desselben Objekts hat dann keine Wirkung. Andere Eigenschaften und andere Objekte bleiben frei.

## Werkstatt: eine Animation, selbst gebaut

42 Minuten

Etwas aus eurer Welt bewegt sich, weil die Spielfigur etwas tut. Am Beispiel: eine Truhe.

Ziel für alle: Der Graph löst eure Animation aus.

Unterwegs gibt es drei Zwischenstände: Der Clip läuft von allein (Stufe 1), der Animator wartet (Stufe 2), der Graph löst aus (Stufe 3). Stufe 3 ist das Ziel für alle. Wer statt der Truhe eine Tür, eine Lampe oder eine Plattform animiert, folgt denselben Schritten. Wer schnell fertig ist, baut eine zweite Animation, die zur Entscheidung aus dem Playtest passt.

**Rettungsweg:** Wer beim Bauen der Truhe hängen bleibt, nimmt den fertigen Rohling: **Tools › Kit › Rohling „Truhe“ bauen** (ab Kit v0.3.2). Er legt die Truhe mit Kiste, Scharnier und Deckel in die Szene, ohne Animation. Clip, Animator und Graph baut ihr dann selbst ab Schritt 2.

## Schritt 1–4: Truhe und Clip

1. Truhe bauen: leeres Objekt, darin Kiste, Scharnier und Deckel (Werte im Handout)
2. „Truhe“ auswählen: Window › Animation › Animation › Create › „Auf“
3. Add Property: Scharnier › Rotation
4. Abspielkopf ans Ende, Aufnahme, Scharnier drehen, Aufnahme aus, Play

**Die Truhe.** In der Hierarchy gilt: Was ihr per Rechtsklick _auf_ ein Objekt anlegt, wird sein Kind. Alternativ ein Objekt in der Hierarchy auf ein anderes ziehen.

| Objekt | Anlegen | Position | Scale |
|---|---|---|---|
| Truhe | Rechtsklick auf die freie Fläche der Hierarchy › Create Empty | dort, wo sie stehen soll | 1, 1, 1 |
| Kiste | Rechtsklick auf **Truhe** › 3D Object › Cube | 0, 0.3, 0 | 1, 0.6, 0.6 |
| Scharnier | Rechtsklick auf **Truhe** › Create Empty | 0, 0.6, 0.3 | 1, 1, 1 |
| Deckel | Rechtsklick auf **Scharnier** › 3D Object › Cube | 0, 0.05, −0.3 | 1, 0.1, 0.6 |

Kiste und Scharnier sind Geschwister, beide Kinder der Truhe; der Deckel ist ein Kind des Scharniers. Das Scharnier sitzt an der oberen Hinterkante der Kiste. Gedreht wird das Scharnier, also klappt der Deckel um diese Kante. Der Animator kommt auf die Truhe, eine Ebene höher, damit sich die Truhe später noch frei im Raum verschieben lässt: Ein Clip schreibt feste Werte und würde ein animiertes Wurzelobjekt immer an die aufgenommene Stelle zurücksetzen.

**Clip anlegen.** Mit „Truhe“ ausgewählt im Animation-Fenster **Create** klicken und den Clip als `Auf.anim` speichern. Unity legt dabei einen Animator Controller `Truhe.controller` an, setzt eine Animator-Komponente auf „Truhe“ und trägt „Auf“ als Standardzustand ein.

**Keyframes.** **Add Property** › Scharnier › Transform › Rotation, mit **+** hinzufügen. Unity setzt Keyframes bei 0:00 und am Ende, beide mit der aktuellen Drehung. Den Abspielkopf auf den letzten Keyframe ziehen, den roten Aufnahmeknopf drücken und beim Scharnier Rotation x auf 100 setzen. Klappt der Deckel dabei in die Kiste hinein, −100 nehmen. Aufnahme beenden.

**Stufe 1:** Play drücken. Der Deckel klappt auf, springt zu und klappt wieder auf, endlos. Das ist Absicht: Mit genau diesem Symptom übt ihr gleich das Debugging mit dem Agenten.

## Wenn es nicht läuft: Agent als Zweitmeinung

1. Symptom beschreiben: was ihr tut, was passiert, was passieren sollte
2. Agent liest Console, Editor-Log und Dateien. Er ändert nichts.
3. Er nennt eine Ursache mit Beleg
4. Ihr prüft den Beleg selbst
5. Erst dann ändern

## Das Symptom, genau beschrieben

„Ich drücke Play. Der Deckel der Truhe klappt auf, springt zu und klappt wieder auf, endlos. Lies Console, Editor-Log, `Auf.anim` und `Truhe.controller`. Nenne die Ursache mit der Zeile, die sie belegt. Ändere nichts.“

Das Editor-Log liegt unter Windows in `%LOCALAPPDATA%\Unity\Editor\Editor.log`, auf dem Mac in `~/Library/Logs/Unity/Editor.log`; in der Console führt das Menü oben rechts zu **Open Editor Log**. Weil die Datei außerhalb des Projektordners liegt, fragt der Agent vorher um Erlaubnis. Lesen zu erlauben ist in Ordnung. Clips und Animator Controller speichert Unity als Text, ein Agent kann sie also lesen.

## Behauptung prüfen

Agent „In `Auf.anim` steht `m_LoopTime: 1`. Der Clip wiederholt sich.“

Prüfen: Clip im Project-Fenster anklicken. Ist **Loop Time** angehakt? Erst dann abhaken, dann Play.

Verwendet ihr die Diagnose, bekommt sie eine Zeile im KI-Verzeichnis, auch wenn ihr selbst ändert.

Die Zeile in `KI-VERZEICHNIS.md` nennt Werkzeug, Version, Zweck und Stelle in der Arbeit, zum Beispiel: Claude Code, Modell laut Chat, „Diagnose: Deckel wiederholt sich (Loop Time)“, `Auf.anim`. Stimmt die Behauptung nicht, zurück zu Schritt 1, mit dem, was ihr beim Prüfen gesehen habt.

## Schritt 5–8: Animator und Graph

5. Clip „Auf“: Loop Time aus (falls noch nicht geschehen)
6. Animator: neuer Zustand „Zu“, als Standard setzen, Übergang zu „Auf“
7. Trigger „Öffnen“; am Übergang: Has Exit Time aus, Condition „Öffnen“
8. Graph: Benutzen (Truhe) → Animator-Wert (Truhe, „Öffnen“, Trigger)

**Animator.** Window › Animation › Animator, „Truhe“ ausgewählt. Rechtsklick auf die freie Fläche › **Create State › Empty**, den Zustand „Zu“ nennen. Rechtsklick auf „Zu“ › **Set as Layer Default State**: Er wird orange. Rechtsklick auf „Zu“ › **Make Transition**, dann auf „Auf“ klicken.

**Parameter.** Links im Reiter **Parameters** auf **+** › **Trigger**, Name „Öffnen“. Den Pfeil von „Zu“ nach „Auf“ anklicken; im Inspector **Has Exit Time** abhaken, unter **Conditions** mit **+** „Öffnen“ wählen. **Stufe 2:** Im Play-Modus bleibt der Deckel jetzt zu.

**Graph.** In der Interaktion wie am 13.11. einen Knoten **Benutzen** anlegen, Objekt: „Truhe“. Der Blick trifft Kiste oder Deckel, beides Kinder der Truhe; das zählt. Dazu **Animator-Wert** aus der Gruppe **Erweiterung**: Animator „Truhe“, Parameter „Öffnen“, Art Trigger. Den Ausgang „Benutzt“ mit „Setzen“ verbinden. Play, die Truhe anschauen, E drücken. **Stufe 3:** Der Deckel klappt auf.

**Häufige Fehler:** Animator auf dem Deckel statt auf der Truhe. Parametername im Knoten anders geschrieben als im Animator (der Knoten meldet das). Has Exit Time noch an: Der Deckel öffnet verspätet. Deckel klappt in die falsche Richtung: Vorzeichen der Rotation x umdrehen.

Commit auf `experiment-animation`: „Truhe klappt beim Benutzen auf“.

## Eine Handlung, mehrere Rückmeldungen

**Tafelbild:** Zeitachse von 0 bis 0,5 Sekunden ab dem Moment Benutzt. Darunter vier Balken, die alle bei 0 beginnen: Ton bis 0,4 s, Größe kurz größer und zurück bis 0,08 s, Material blitzt auf bis 0,06 s, Animation bis 0,5 s.

[Feedback](https://www.allknivesnobagel.com/teaching/gec1/concepts/feedback/) beginnt im selben Frame wie die Handlung.

Im Kit, jeweils an „Benutzt“ angeschlossen:

- **Ton abspielen** (nächste Folie).
- **Kurz größer und zurück** mit zwei Bewegen-Knoten auf dasselbe Objekt, beide mit Was: Größe. Der erste: Weg (0.1, 0.1, 0.1), Dauer 0.08 s, „Benutzt“ an „Hin“. Der zweite: Dauer 0.08 s, „Angekommen“ des ersten an „Zurück“ des zweiten. Der zweite Knoten bekommt keine ausgehende Verbindung; sonst stößt jede Rückfahrt die nächste an. Bewegt wird ein Objekt, das kein Clip animiert, hier die Kiste.
- **Material tauschen** für ein kurzes Aufblitzen, mit **Warten** und „Zurück“.
- **Erzeugen** für ein Prefab mit Partikelsystem.

„Kamera wackeln“ (Spielsysteme) rüttelt die Kamera des Spielers kurz, „Anhalten“ (Aktion) hält das Spiel für ein paar Millisekunden an. Erinnert euch an den Dreier-Schlag vom 23.10.: 55, 65 und 130 ms Anhalten sind dort die stärkste Rückmeldung. Beide Knoten gibt es ab Kurs-Paket 0.3.2.

## Ton zuerst

Ein Ton bestätigt eine Handlung, auch wenn niemand hinschaut.

AudioSource an die Truhe, Play On Awake aus, Spatial Blend 3D.

Im Graphen: Ton abspielen.

**Woher ein „Klack“ kommt:**

- [Kenney, Kategorie Audio](https://kenney.nl/assets/category:Audio): Tonpakete unter CC0, ohne Namensnennung nutzbar.
- [freesound.org](https://freesound.org/): bei der Suche nach Lizenz filtern, CC0 oder CC-BY. CC-BY heißt: Name und Link in die Quellen der Dokumentation.
- [sfxr.me](https://sfxr.me/): Töne selbst erzeugen und als WAV laden. Selbst erzeugt heißt selbst gemacht.

**Importieren:** die WAV- oder OGG-Datei in einen Ordner `Assets/Audio` ziehen. Unity macht daraus einen Audio Clip; den ins Feld **Audio Generator** der AudioSource (so heißt es in Unity 6.3) ziehen oder im Knoten **Ton abspielen** eintragen.

**Einstellen:** Die AudioSource gehört an das Objekt, von dem der Ton kommt. **Play On Awake** abschalten, sonst klingt sie beim Start. **Spatial Blend** auf 3D: Der Ton kommt aus der Richtung der Truhe und wird mit Abstand leiser. Derselbe Ton bei jedem Benutzen nutzt sich ab; zwei oder drei Varianten lassen sich mit dem Knoten **Zufällig** abwechseln. Für alle fremden Töne gelten die Regeln der nächsten Folie.

## Lizenzen

- CC0 (Kenney): frei, ohne Namensnennung
- CC-BY (oft auf freesound): frei, mit Namensnennung
- Asset Store: im Spiel ja, Dateien weitergeben nein
- Mixamo: im eigenen Projekt frei, Dateien weitergeben verboten

Jede fremde Datei: Quelle und Lizenz in Kapitel 9 der Doku.

Kapitel 9 von `DOKUMENTATION.md` heißt „Quellen und KI“. Mixamo und Asset-Store-Pakete erlauben die Nutzung im eigenen Projekt, aber nicht die Weitergabe der Dateien selbst, auch nicht kostenlos. Ein öffentliches Repository mit solchen Dateien wäre genau das; euer Kursprojekt bleibt deshalb privat.

## Mergen oder verwerfen

Geklappt Auf `main` wechseln, Branch › Merge into current branch… › `experiment-animation`

Verworfen Auf `main` wechseln. Der Slice ist, wie er war.

Vorher: Szene speichern, committen. Nach dem Wechsel lädt Unity die Dateien neu.

Ein verworfener Branch kann liegen bleiben oder über Branch › Delete gelöscht werden. Fragt Unity nach dem Wechsel, ob die geänderte Szene neu geladen werden soll: ja. Im Terminal: `git switch main`, dann `git merge experiment-animation`.

## Erklärt euren Animator

Zu zweit, eine Minute pro Person: Welche Zustände hat er, und was löst den Übergang aus?

## Checkpoint

1. Nach dem Playtest: Spec geändert oder begründet beibehalten
2. Devlog-Eintrag zum Test
3. Eine eigene Animation, vom Graphen ausgelöst
4. Branch gemergt oder bewusst verworfen

Was fehlt, ist eure Aufgabe für die nächsten 48 Stunden.

## Bis zum 11.12.: Alpha

Feature-Freeze

Alles, was das Spiel können soll, ist eingebaut. Danach wird nur noch repariert und verbessert.

Grafik und Ton sind erstmals überarbeitet.

Windows-Build dieses Stands, auf einem anderen Rechner getestet.

Feature-Freeze heißt: Was am 11.12. nicht drin ist, kommt nicht mehr hinein. Gestrichen werden nur zusätzliche Ideen; mindestens zwei Interaktionen aus der Aufgabenstellung bleiben. Wer zu viel geplant hat, streicht jetzt, nicht im Januar.

Der Build in dieser Reihenfolge: Szene speichern, committen, aus genau diesem Stand bauen, die .exe auf einem anderen Windows-Rechner starten. Den Build-Ordner als ZIP per USB-Stick oder Cloud-Link weitergeben; das Repository ist privat. Klappt der Build nicht, kommt die Fehlermeldung in den Devlog und in den Blackboard-Thread. Das ist ein Rettungsfall, kein erreichter Meilenstein.

## Die nächsten 14 Tage

1. Nach 48 Stunden: Playtest-Entscheidung umgesetzt, Animation in der eigenen Welt
2. Eine Woche später: Clip, Hindernis, nächster Schritt in den Blackboard-Thread
3. Wer 30 Minuten feststeckt, fragt
4. Vor dem 11.12.: ein Playtest mit jemandem außerhalb des Kurses

12–16 Stunden, fünf Sitzungen.

**Aufwand, ehrlich geschätzt: 12–16 Stunden.** So verteilt:

| Sitzung | Dauer | Ergebnis |
|---|---|---|
| 1 | 2 h | Entscheidung aus dem Playtest umgesetzt, Truhen-Animation (oder eine eigene) in der eigenen Welt, Commit |
| 2 | 3–4 h | Die fehlenden Interaktionen eingebaut, mindestens zwei aus der Aufgabenstellung laufen |
| 3 | 3–4 h | Grafik und Ton erstmals überarbeitet: Materialien, Licht, drei bis fünf Töne |
| 4 | 1–2 h | Playtest außerhalb des Kurses mit der Karte, Devlog-Eintrag |
| 5 | 2 h | Windows-Build, auf einem anderen Rechner getestet, Commit |

Reicht die Zeit nicht, wird in dieser Reihenfolge gekürzt: zweite Animation weglassen, Grafik auf Materialien und Licht beschränken, ein Ton statt fünf. Die zwei Pflichtinteraktionen und der Build bleiben.

Ein Test mit Mitbewohnerin oder Geschwistern ist ausdrücklich gemeint: Wer keine Spiele spielt, findet andere Stellen als wir. Die Playtest-Karte gibt es als Druckvorlage: [druck/playtest-karte.html](/teaching/gec1/druck/playtest-karte.html).

## Für Neugierige: fertige Animationen

Optional

Laufen, springen, winken: Für Figuren mit Skelett gibt es fertige Animationen, etwa bei Mixamo. Unser Spieler ist eine Kapsel ohne Skelett.

**Mixamo** (Adobe, kostenlos mit Adobe-Konto) bietet Figuren und Animationen. Export als **FBX for Unity**; Laufanimationen mit **In Place**, sonst läuft die Figur aus ihrem Collider. In Unity die FBX-Datei anklicken, im Inspector den Reiter **Rig** öffnen und **Animation Type: Humanoid** einstellen. Eine solche Figur ersetzt nicht den Spieler aus dem Kurs-Paket, sie kann aber eine Nebenfigur sein. Wer das ausprobiert: auf einem eigenen Branch, nach dem Alpha-Minimum. Lizenz: siehe Folie „Lizenzen“; mehr auf der Seite [Animation](https://www.allknivesnobagel.com/teaching/gec1/concepts/animation/).
