GEC1
Tag 4 · 27.11.2026

Vertical Slice: spielen lassen

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

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 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

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

Eine Runde, 22 Minuten

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?

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

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

Ein 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

Animation Clip: zwei Keyframes reichen.

Der Animator wählt den Clip

Der Animator ist ein Zustandsautomat, 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

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.

ObjektAnlegenPositionScale
TruheRechtsklick auf die freie Fläche der Hierarchy › Create Emptydort, wo sie stehen soll1, 1, 1
KisteRechtsklick auf Truhe › 3D Object › Cube0, 0.3, 01, 0.6, 0.6
ScharnierRechtsklick auf Truhe › Create Empty0, 0.6, 0.31, 1, 1
DeckelRechtsklick auf Scharnier › 3D Object › Cube0, 0.05, −0.31, 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

  1. Clip „Auf“: Loop Time aus (falls noch nicht geschehen)
  2. Animator: neuer Zustand „Zu“, als Standard setzen, Übergang zu „Auf“
  3. Trigger „Öffnen“; am Übergang: Has Exit Time aus, Condition „Öffnen“
  4. 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

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: Tonpakete unter CC0, ohne Namensnennung nutzbar.
  • 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: 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:

SitzungDauerErgebnis
12 hEntscheidung aus dem Playtest umgesetzt, Truhen-Animation (oder eine eigene) in der eigenen Welt, Commit
23–4 hDie fehlenden Interaktionen eingebaut, mindestens zwei aus der Aufgabenstellung laufen
33–4 hGrafik und Ton erstmals überarbeitet: Materialien, Licht, drei bis fünf Töne
41–2 hPlaytest außerhalb des Kurses mit der Karte, Devlog-Eintrag
52 hWindows-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.

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.