1. 1
      09.10.Engine, Arbeitsweise
    2. 2
      23.10.Pitch, Blockout
    3. 3
      13.11.Kit, Physik
    4. 4
      27.11.Playtest, Animation
    5. 5
      11.12.Alpha und Oberfläche
    6. 6
      08.01.Doku, Show and Tell

    Game Engines & Coding 1 · WiSe 2026/27

    Interaktion von Hand

    Ereignisse, Bedingungen und Aktionen als Graph, dazu Kräfte, die Dinge in Bewegung setzen.

    Kreidezeichnung: Ein Schaltgerät verbindet sich mit einem kleinen Raum; Ereignis, Daten und Referenzen lassen eine Tür steigen und eine Kiste springen.
    KI-generiert
    Fr 13.11.2026
    14:15–17:15
    L-N-204
    Fr 13.11.2026
    14:15–17:15
    L-N-204

    Was läuft schon?

    1. Ein grauer Raum, durch den die Spielfigur läuft
    2. Der Build läuft auf einem fremden Windows-Rechner
    3. Die Spec der ersten Interaktion steht
    4. Das Devlog unten in DOKUMENTATION.md hat einen Eintrag

    Noch nicht so weit? Nehmt das Blatt „Rettungsweg“.

    Jetzt wird der Probe-Build getauscht: den Build-Ordner als ZIP per USB-Stick oder Cloud-Link an eine Person mit Windows-Rechner geben, dort entpacken und die .exe starten. Der Rettungsweg steht auch online: Rettungsweg als Blatt. Er zeigt, wie ihr heute im Kurs mitkommt und in der Woche danach aufholt.

    Kurs-Paket prüfen

    1. Kurs › Setup prüfen: Steht beim Kurs-Paket 0.3.2 oder höher? Dann ist alles gut.
    2. Älter? GitHub Desktop: erst committen
    3. Window › Package Manager › + › Install package from git URL…, Adresse einfügen, Install
    4. Commit: „Kurs-Paket auf 0.3.2“
    https://
    github.com/
    BabyToad/
    macromedia-
    gec1-kit.git
    #v0.3.2
    

    Die Kursvorlage bringt 0.3.2 seit dem 09.10. mit; aktualisieren müssen nur Projekte, die älter sind oder ohne Vorlage entstanden. Die Adresse am Stück: https://github.com/BabyToad/macromedia-gec1-kit.git#v0.3.2. Version 0.3.2 bringt die kaputte Werkstatt für heute, das Menü Tools › Kit › Eigener Knoten (C#) und zwei Korrekturen im Kit: Warnungen „Vor Play“ bleiben in der Console stehen, und Kraft › Dauerkraft schiebt jetzt so lange, bis der Eingang Stopp kommt. Ausführlich steht das in der Anleitung „Kurs-Paket aktualisieren“. Kontrolle: Kurs › Setup prüfen zeigt beim Kurs-Paket 0.3.2.

    Heute reagiert die Welt

    Bisher läuft man durch den Raum. Ab heute antwortet er.

    Wenn ich die Türzone betrete und den Schlüssel habe, fährt die Tür hoch. Sonst steht auf dem Schild: Verschlossen.

    Event, Bedingung, Aktion

    Event: ein Moment

    Zustand: was das Spiel sich merkt

    Bedingung: ja oder nein

    Ein Event ist ein Zeitpunkt, an dem etwas passiert: Betreten, Drücken, Aufprall. Ein Zustand bleibt von Frame zu Frame erhalten, etwa ob der Schlüssel schon aufgehoben ist. Eine Bedingung fragt diesen Zustand in dem Moment ab, in dem das Event ankommt, und schickt es auf den einen oder den anderen Weg.

    Drei Arten von Drähten

    Der Graph des Kits kennt drei Drahtarten. ▶ Events laufen von links nach rechts durch die Kette. ● Daten werden gelesen, wenn ein Knoten sie braucht. ◆ Referenzen sagen einem Knoten, mit welchem Objekt in der Szene er arbeitet. Hängen an einem Event-Ausgang mehrere Drähte, tragen sie Nummern: Nr. 1 läuft zuerst. Falsche Verbindungen lassen sich gar nicht ziehen: Ein Event-Ausgang passt nur auf einen Event-Eingang.

    Das Beispiel holen

    Tools › Kit › Beispiel „Schlüssel und Tür“ bauen

    Unity 6.3 · Kurs-Paket 0.3.1

    Doppelklick auf die Datei „Schlüssel und Tür.kit“ öffnet den Graph.

    Das Menü legt den Ordner Assets/Kit Beispiel an, mit dem Graph Schlüssel und Tür.kit und der Szene Keller. Gibt es das Beispiel schon, fragt Unity nach, bevor etwas überschrieben wird. Beispiele holt ihr immer über dieses Menü. Ist alles rosa, ist das Kurs-Paket zu alt: oben aktualisieren. Den Graph öffnet ein Doppelklick auf die .kit-Datei oder im Inspector der Interaktion der Knopf Graph öffnen.

    Ein Graph, viele Türen

    Der Graph sagt, was passiert. Die Interaktion sagt, mit welchen Objekten: je Platz eine Referenz.

    Der Graph ist eine Datei im Projekt. Er kennt keine Objekte der Szene, nur Plätze für sie (◆). Die Component Interaktion an einem GameObject verbindet beides: Sie zeigt auf einen Graph und hält eine Tabelle, welches Objekt welchen Platz füllt. Das ist eine Referenz. Umbenennen oder Verschieben bricht sie nicht. Ein leerer Platz ist ein Fehler, und das Kit meldet ihn schon vor Play. Jede Interaktion hat ihren eigenen Merker: Zwei kopierte Türen öffnen sich nicht gegenseitig.

    Die Plätze im Inspector

    Unity 6.3 · Kurs-Paket 0.3.1

    Objekte (◆): hineinziehen, was gemeint ist.

    Die Lupe neben jedem Platz springt in den Graph zum passenden Knoten. Benutzen: Kamera darf leer bleiben: Dann nimmt der Knoten die Hauptkamera, also die der Spielfigur.

    Zuschauen, während es läuft

    Unity 6.3 · Kurs-Paket 0.3.1

    ○ empfangen

    ▬ läuft

    ✓ fertig

    ⛔ blockiert

    ! Fehler

    Zum Ausprobieren: Play, ohne Schlüssel zur Tür laufen. Wenn zeigt „Nein, weil Schlüssel vorhanden: nein“, das Schild sagt „Verschlossen.“. Dann den Schlüssel anschauen und E drücken, zurück zur Tür: Bewegen läuft. Graph-Fenster und Game-Fenster nebeneinander legen hilft. Jeder Knoten zeigt im Play-Modus, was er gerade tut, und warum. Ein Knoten mit Fehler feuert nie seinen Erfolgs-Ausgang; der Grund steht am Knoten und in der Console. Die Leiste unten im Graph-Fenster zählt zusammen, wie viele Knoten laufen, fertig sind oder noch nicht erreicht wurden.

    Vom Knoten zum Objekt

    Unity 6.3 · Kurs-Paket 0.3.1

    Doppelklick auf einen Knoten: Das Objekt leuchtet in der Hierarchy.

    Objekt auswählen: Seine Knoten leuchten im Graph.

    Ein Klick auf einen Knoten zeigt unten im Graph-Fenster, was er tut, und die Knöpfe In der Hierarchy zeigen, Komponente öffnen und Code ansehen. Ein Doppelklick wählt das gebundene Objekt aus. Umgekehrt leuchten alle Knoten auf, die ein in der Hierarchy ausgewähltes Objekt benutzen. Das Abzeichen ◆1 in der Hierarchy zählt, wie viele Plätze ein Objekt füllt; mit der Maus darauf steht da, welche.

    Was steckt in einem Knoten?

    Unity 6.3 · Kurs-Paket 0.3.1

    </> am Knoten

    Orange: Hier feuert ein Ausgang.

    Jeder Knoten ist eine kleine C#-Datei. Code ansehen zeigt sie schreibgeschützt und markiert die Stellen, die zählen: orange, wo ein Ausgang feuert; gelb, wo der Knoten „läuft“ meldet; rot, wo er einen Fehler meldet; blaugrün, wo ein ◆-Platz steht. Im Code-Editor öffnen zeigt dieselbe Datei in VS Code. Lesen genügt; niemand muss das schreiben können.

    Jetzt baut ihr sie nach

    In eurem Blockout

    1. Würfel „Schlüssel“ und Würfel „Tür“
    2. Schild: 3D Object › Text - TextMeshPro
    3. Türzone: leeres GameObject vor der Tür, Box Collider, Is Trigger
    4. GameObject › Kit › Interaktion, dann Neuer Graph …

    So entstehen die Objekte, alle als Kinder einer leeren „Tür-Gruppe“ oder lose in der Szene:

    ObjektAnlegenMaße und Lage
    Schlüssel3D Object › CubeScale 0,2 × 0,2 × 0,6, auf den Boden, ein paar Meter von der Tür
    Tür3D Object › CubeScale 3 × 3 × 0,2, steht im Türdurchgang auf dem Boden
    Schild3D Object › Text - TextMeshProneben die Tür, auf Augenhöhe; beim ersten Mal fragt Unity nach Import TMP Essentials: bestätigen
    TürzoneCreate Empty, dann Add Component › Box Collider, Is Trigger anSize 3 × 2 × 2, Mitte etwa 1,5 m vor der Tür und 1 m über dem Boden, so dass man auf dem Weg zur Tür hineinläuft

    Ein leeres GameObject entsteht dort, wo die Scene-Ansicht gerade hinschaut, und sein Box Collider ist 1 × 1 × 1 m. Darum die Türzone bewusst verschieben und vergrößern; der grüne Drahtrahmen zeigt, wo sie liegt. Dann GameObject › Kit › Interaktion und im Inspector Neuer Graph …: Unity fragt, wo die .kit-Datei liegen soll.

    Acht Knoten holen

    1. „+ Knoten“: Benutzen, Merker, An/Aus, Zone, Wenn, Bewegen, Text setzen
    2. Den Schlüssel aus der Hierarchy auf die Leinwand ziehen: Objekt „Schlüssel“
    3. Unten links: Instanz wählen

    Ohne Instanz bleiben die ◆-Felder grau.

    „+ Knoten“ unten links im Graph-Fenster öffnet die deutsche Liste mit den Gruppen Auslöser, Ablauf, Zustand, Aktion, Spielsysteme und Erweiterung. Die Leertaste im Graph öffnet die Liste des Graph Toolkits mit englischen Klassennamen; beide legen dieselben Knoten an. Den Schlüssel brauchen zwei Knoten, Benutzen und An/Aus. Darum bekommt er einen eigenen Knoten Objekt: Zieht ihn aus der Hierarchy direkt auf die Leinwand. Instanz heißt: welche Interaktion in der Szene dieses Fenster gerade bearbeitet. Der Knopf unten links im Graph-Fenster wählt sie; erst dann lassen sich Objekte auf die ◆-Felder ziehen. Der Ton aus dem Beispiel ist für den Nachbau nicht nötig.

    Die Drähte

    1. Objekt ◆ → Benutzen, An/Aus
    2. Benutzt ▶ → 1. Ja setzen, 2. Ausschalten
    3. Betreten ▶ → Prüfen
    4. Wert ● → Bedingung
    5. Ja ▶ → Hin. Nein ▶ → Setzen

    Die vollständige Liste für den Nachbau. Links der Ausgang, rechts der Eingang:

    VonNachDraht
    Objekt „Schlüssel“ · ◆ ObjektBenutzen · ◆ Objekt◆
    Objekt „Schlüssel“ · ◆ ObjektAn/Aus · ◆ Objekt◆
    Benutzen · BenutztMerker · Ja setzen (Nr. 1)▶
    Benutzen · BenutztAn/Aus · Ausschalten (Nr. 2)▶
    Zone · BetretenWenn · Prüfen▶
    Merker · WertWenn · Bedingung●
    Wenn · JaBewegen · Hin▶
    Wenn · NeinText setzen · Setzen▶

    Einstellungen an den Knoten: Merker Name „Schlüssel vorhanden“, Startwert aus. Bewegen Was Position, Weg 0, 3, 0, Dauer 1. Text setzen Text „Verschlossen.“. Zone Nur Tag Player (so ist es voreingestellt).

    Was auf die ◆-Felder der Knoten kommt, aus der Hierarchy hineingezogen:

    Knoten · PlatzObjekt
    Objekt „Schlüssel“Schlüssel
    Zone · ◆ ZoneTürzone
    Bewegen · ◆ ObjektTür
    Text setzen · ◆ TextfeldSchild
    Benutzen · ◆ Kameraleer lassen (Hauptkamera)

    Dann Play. Gespeichert wird von selbst: Vor jedem Play speichert das Kit offene Graphen und prüft alle Interaktionen; was fehlt, steht als Warnung in der Console.

    Wenn es hängt:

    • Die ◆-Felder sind grau und nehmen nichts an: unten links im Graph-Fenster die Instanz wählen.
    • Wenn sagt immer Nein: Der Draht von Merker · Wert zu Wenn · Bedingung fehlt.
    • Zone zeigt nie ✓: Is Trigger fehlt, die Zone liegt nicht im Weg, oder sie ist zu klein (grüner Rahmen in der Scene-Ansicht).
    • Der Schlüssel reagiert nicht auf E: näher als 3 m herangehen und ihn ansehen; er braucht seinen Box Collider.

    Die Interaktion als Satz

    Sagt den Satz zu eurer Tür laut, bevor ihr Play drückt.

    Wenn [Event] und [Bedingung], dann [Aktion]. Sonst [andere Aktion].

    Wer den Satz nicht sagen kann, hat noch keine klare Interaktion. Das gilt auch für die eigene Spec.

    Läuft nicht? So sucht ihr

    1. Steht ein ! an einem Knoten? Grund lesen.
    2. ⛔ blockiert? Dort endet die Kette, mit Begründung.
    3. Gar nichts passiert? Hat der Auslöser ✓? Sonst Zone oder Tag prüfen.

    Der Graph sagt, wo es hängt. Gesucht wird von links nach rechts, vom Auslöser zur Aktion.

    Eure Variation

    10 Minuten

    Erst den Satz sagen, dann bauen.

    Eine Variante reicht; wer fertig ist, nimmt die nächste. Die Falle mit einer Kiste kommt nach der Pause, weil sie einen Rigidbody braucht.

    Pause

    10 Minuten

    Collider oder Trigger?

    Kollision: fest oder durchlässig.

    Is Trigger ist ein Haken am Collider.

    Ein Collider ist die unsichtbare Form, mit der ein Objekt an der Kollision teilnimmt. Ein normaler Collider ist fest. Mit Is Trigger wird er durchlässig und meldet nur noch, dass etwas hinein- oder hinauskommt. Die beiden Meldungen haben verschiedene Voraussetzungen:

    Meldungim Kitwann sie kommt
    Trigger: OnTriggerEnterZoneeines der beiden Objekte hat einen Rigidbody (auch kinematisch) oder einen CharacterController, wie die Spielfigur
    Aufprall: OnCollisionEnterZusammenstoßmindestens eines der beiden hat einen Rigidbody, bei dem Is Kinematic aus ist

    Darum meldet die Spielfigur Zonen zuverlässig, aber keinen Aufprall: Läuft sie gegen eine Wand, gibt es kein OnCollisionEnter und der Knoten Zusammenstoß bleibt still. Der CharacterController hat dafür eine eigene Meldung, OnControllerColliderHit, die das Kit nicht als Knoten anbietet. Zusammenstoß gehört an Dinge mit Rigidbody: eine Kiste, die auf den Boden fällt, ein Ball, der gegen eine Wand rollt.

    Ein Rigidbody übergibt an die Physik

    Mit Rigidbody fällt der Würfel.

    1. Kiste in die Luft, Add Component › Rigidbody, Play
    2. Die Falle: Zone, dann Kraft auf die Kiste
    3. Kraft: Richtung 0, 1, 0, Stärke 6, Stoß

    Felder: Mass, Use Gravity, Is Kinematic

    Mit Rigidbody bestimmt die Physik die Position. Wer die Transform trotzdem direkt verschiebt, arbeitet gegen sie; das Objekt ruckelt oder rutscht durch Wände. Is Kinematic heißt: Die Physik bewegt das Objekt nicht, ein Skript oder eine Animation tut es. Auf einen kinematischen Körper wirkt auch der Knoten Kraft nicht; er meldet das. Constraints sperren einzelne Achsen, etwa damit eine Figur nicht umkippt.

    Ein Aufprall lässt sich jetzt auch hören: Eine neue Interaktion mit Zusammenstoß (◆ Körper: der Collider der Kiste) · Getroffen → Notiz in Konsole. Fällt die Kiste auf den Boden, steht die Notiz in der Console. Das geht, weil die Kiste einen Rigidbody hat; an der Spielfigur bliebe Zusammenstoß still.

    Die Falle als Graph: eine neue Interaktion, Zone (◆ Zone: eine Türzone-artige Trigger-Box vor der Kiste) · Betreten → Kraft · Anstoßen, ◆ Körper = Kiste. Stoß wirkt einmal, wenn das Event ankommt. Dauerkraft schiebt ab Kurs-Paket 0.3.2 so lange, bis der Eingang Stopp kommt, etwa von Zone · Verlassen.

    Wie so etwas in einem fertigen Spiel aussieht: In HIGH WATER (gebaut in Godot) ist jeder Gegner ein Rigidbody mit 3 kg. Im Stehen sind seine Drehachsen gesperrt, damit er aufrecht läuft; ein harter Treffer hebt die Sperre auf, und aus dem Läufer wird ein Geschoss, das beim Aufprall andere trifft. In Unity hieße das Constraints › Freeze Rotation, im Code wieder freigegeben mit rb.constraints = RigidbodyConstraints.None.

    Kraft und Drehmoment

    Kraft: Knoten im Kit

    Drehmoment: fehlt im Kit

    Eine Kraft ist ein Vektor: Richtung und Stärke. AddForce schiebt den ganzen Körper, AddTorque dreht ihn um eine Achse. Beide gibt es als Stoß (ForceMode.Impulse, ein einzelner Moment, etwa ein Tritt) oder als gleichmäßiges Schieben (ForceMode.Force, in jedem Physik-Schritt, also in FixedUpdate()). Masse zählt: Die gleiche Kraft bewegt eine schwere Kiste weniger.

    Die Console liest man von oben

    1. Rot: Fehler. Gelb: Warnung. Weiß: Hinweis.
    2. Den obersten Fehler zuerst: Die anderen folgen oft aus ihm.
    3. Doppelklick führt zur Zeile im Code.
    4. Collapse fasst gleiche Meldungen zusammen.

    Console: Window › General › Console

    Strg + Umschalt + C

    Die Console sammelt, was Unity und eure Skripte melden. Ein roter Kompilierfehler (error CS…) blockiert Play ganz, bis er behoben ist; Unity sagt dann „All compiler errors have to be fixed before you can enter playmode!“. Ein Laufzeitfehler (Exception) bricht nur das Skript an dieser Stelle ab, das Spiel läuft weiter. Steht dieselbe Meldung hundertmal da, kommt sie aus Update() oder FixedUpdate(): in jedem Frame einmal. Clear leert die Liste (Kompilierfehler bleiben stehen), Error Pause hält das Spiel an, sobald ein Skript einen Fehler meldet.

    Die kaputte Werkstatt

    10 Minuten

    Tools › Kit › Beispiel „Werkstatt (kaputt)“ bauen

    Fünf Fehler. Play drücken, Console lesen, einen beheben, wieder Play.

    KI-generiert

    Ab Kurs-Paket 0.3.2

    Szene: Assets › Kit Beispiel › Werkstatt

    Die Werkstatt ist eine Beispiel-Szene im Kurs-Paket ab Version 0.3.2, absichtlich kaputt. Bauen: Tools › Kit › Beispiel „Werkstatt (kaputt)“ bauen. Das legt Assets/Kit Beispiel/Werkstatt/ an, darin die Szene Werkstatt.unity; per Doppelklick öffnen. Fehlt der Menüpunkt, ist das Kurs-Paket noch auf 0.3.1: oben unter „Kurs-Paket prüfen“ aktualisieren.

    So sieht die Console nach dem ersten Play aus, mit Collapse:

    [Kit] Lampe › An/Aus: ◆ Objekt fehlt (Slot „An/Aus: Objekt“ ist leer)            1
    UnassignedReferenceException: The variable fluegel of Windrad has not been assigned.  356
    
    Auflösung, erst nach dem eigenen Versuch
    1. Knopfzone: Is Trigger fehlt. Die Spielfigur läuft gegen eine unsichtbare Wand. Das Kit warnt vor Play: „„Knopfzone“: Collider ist kein Trigger (Is Trigger anhaken)“, und der Graph „Knopf und Kiste“ markiert die Zone rot.
    2. Kiste: Is Kinematic ist an. Erst wenn Fehler 1 behoben ist, meldet der Knoten Kraft: „„Kiste“ ist kinematisch: Kräfte wirken nicht“. Ein Fehler kann den nächsten verdecken.
    3. Lampe: Der ◆-Platz von An/Aus ist leer. Lampenschirm hineinziehen, dann schaltet L das Licht.
    4. Kiste (soll fallen): Ihr fehlt ein Rigidbody. Keine Meldung, sie schwebt einfach.
    5. Windrad: Im Skript ist das Feld Fluegel leer, in jedem Physik-Schritt kommt die Meldung neu. Doppelklick zeigt die Zeile mit AddTorque; die Lösung liegt im Inspector: Flügel hineinziehen.
    Unity 6.3 · Prototyp der Werkstatt

    Eine Meldung ist ein Hinweis

    Die Console sagt, wo es kracht. Warum, findet ihr in der Szene.

    Fehler 5 der Werkstatt ist der Normalfall in Unity: Die Zeile im Code ist richtig, das Feld im Inspector ist leer. Fehler 4 zeigt, dass nicht jeder Fehler eine Meldung hat.

    Interaktion 1 in eurem Blockout

    1. Den Satz aus eurer Spec sagen
    2. Event, Bedingung und Aktion darin markieren
    3. Bauen, Play, beobachten
    4. Commit

    Bis 17:00. Ich komme rum.

    Wer noch keine Spec hat, schreibt sie jetzt in fünf Minuten: Verb, Regel, Rückmeldung, Scheitern. Vor dem ersten Knoten ein Commit.

    Ein Knoten, den es nicht gibt

    Kein Drehmoment im Kit? Tools › Kit › Eigener Knoten (C#), dann füllt ein Agent die Dateien.

    Knoten „Drehmoment“
    füllen, wie Kraft
    (Push.cs).
    ◆ Körper: Rigidbody.
    Achse, Stärke.
    Drehen → Angewendet.
    Kopfkommentar.
    Nur diese zwei
    Dateien ändern.
    

    Agenten-Übung Tag 3: Spec → Agent schreibt einen kleinen Knoten im Vertrag des Kits → Diff lesen → spielen → committen oder verwerfen. Im Kurs lesen wir einen vorbereiteten Diff. Zu Hause selbst ausprobieren ist freiwillig. Zuerst Tools › Kit › Eigener Knoten (C#) mit dem Namen „Drehmoment“ ausführen; das legt die beiden Dateien in Assets/Eigene Knoten an. Dann committen. Dann der Auftrag an den Agenten: „Fülle den Kit-Knoten in Assets/Eigene Knoten/Drehmoment.cs und Assets/Eigene Knoten/Editor/DrehmomentNode.cs nach dem Muster von Kraft (Push.cs im Kurs-Paket). ◆ Körper: Rigidbody. Einstellungen Achse und Stärke. Eingang Drehen, Ausgang Angewendet. Ist der Körper kinematisch, soll der Knoten mit Grund scheitern (Fail). Beide Dateien bekommen oben einen Kopfkommentar. Nur diese zwei Dateien ändern, nicht committen.“ Danach eine Zeile ins KI-Verzeichnis.

    Was ein Knoten braucht

    Zwei Dateien in Assets › Eigene Knoten. Das Menü legt sie an.

    Ein eigener Knoten besteht aus zwei Dateien, beide unter Assets/Eigene Knoten: Drehmoment.cs (der Knoten) und Editor/DrehmomentNode.cs (sein Gesicht im Graph-Editor). Das Menü Tools › Kit › Eigener Knoten (C#) legt beide an, dazu die Assembly-Dateien des Ordners; dasselbe gibt es unter Assets › Create › Kit › Eigener Knoten (C#). Danach steht der Knoten unter „+ Knoten“ › Aktion › Drehmoment. Ohne NodeInfo landet er in der Gruppe „Eigene“ unter seinem Klassennamen.

    So sollte der Diff aussehen

    Assets/Eigene Knoten/Drehmoment.cs:

    // Drehmoment: ein eigener Kit-Knoten, der einen Rigidbody um eine Achse dreht.
    // Herkunft: geschrieben von einem Agenten (Werkzeug und Modell siehe KI-Verzeichnis),
    // geprüft und getestet von <Name>, 13.11.2026.
    using System;
    using UnityEngine;
    using Kit;
    
    [Serializable]
    [NodeInfo("Drehmoment", "Aktion", "Rigidbody um eine Achse drehen")]
    public class Drehmoment : KitNode
    {
        [Ref("Körper")] public Rigidbody body;
        [Setting("Achse")] public Vector3 axis = Vector3.up;
        [Setting("Stärke")] public float strength = 5f;
    
        [Output("Angewendet")] [NonSerialized] public Output applied;
    
        [Input("Drehen")]
        public void Spin(Signal s)
        {
            if (body.isKinematic) { Fail($"„{body.name}“ ist kinematisch: Drehmoment wirkt nicht"); return; }
            body.AddTorque(axis.normalized * strength, ForceMode.Impulse);
            applied.Fire(s);
        }
    }
    

    Assets/Eigene Knoten/Editor/DrehmomentNode.cs:

    // DrehmomentNode: zeigt den Knoten Drehmoment im Graph-Editor des Kits.
    // Herkunft: wie Drehmoment.cs.
    using System;
    using Kit.Editor;
    
    [Serializable]
    public class DrehmomentNode : KitEditorNode
    {
        public override Type RuntimeType => typeof(Drehmoment);
    }
    

    Diff lesen, spielen, entscheiden

    1. Diff: Nur die zwei Dateien in Eigene Knoten?
    2. Steht oben ein Kopfkommentar? Feuert Angewendet?
    3. Drehkreuz bauen, Taste → Drehmoment, Play
    4. Dreht es? Commit. Sonst verwerfen.

    In GitHub Desktop zeigt der Reiter Changes den Diff. Hat der Agent andere Dateien als die zwei in Assets/Eigene Knoten angefasst, ist das ein Grund zum Verwerfen, auch wenn es läuft.

    Das Drehkreuz zum Testen: ein Würfel „Arm“, Scale 2,4 × 0,12 × 0,25, auf etwa 1 m Höhe. Dazu Add Component › Rigidbody mit Use Gravity aus, Angular Damping 0,6 und unter Constraints Freeze Position X, Y und Z sowie Freeze Rotation X und Z. Ohne diese Sperren fällt der Arm herunter und rollt weg; das ist dann kein Fehler des Knotens. Graph: Taste (Taste R) · Gedrückt → Drehmoment · Drehen, Achse 0, 1, 0, Stärke 4, ◆ Körper = Arm.

    Jedes Skript sagt, was es ist

    Ab heute beginnt jedes eigene Skript mit einem Kopfkommentar.

    // Drehmoment: dreht einen Rigidbody.
    // Herkunft: Agent, geprüft von <Name>, 13.11.2026.
    

    Der Agent darf ihn schreiben. Ihr prüft, ob er stimmt.

    Der Kopfkommentar steht oben in jedem Skript, das ihr selbst oder mit einem Agenten schreibt: in einem Satz, was es tut, und woher es kommt (selbst geschrieben, oder von welchem Agenten, geprüft von wem). Stellen, an denen das Warum nicht offensichtlich ist, bekommen ebenfalls einen Kommentar. Der Abgabe-Check am Ende des Semesters fragt genau danach. Die Zeile im KI-Verzeichnis ersetzt er nicht.

    Der neue Knoten im Graph

    Unity 6.3 · Kurs-Paket 0.3.1, eigener Knoten

    Taste R, und der Arm des Drehkreuzes dreht sich.

    Der eigene Knoten steht unter „+ Knoten“ › Aktion und hat Code ansehen wie die eingebauten.

    Kaputt? Zurück zum letzten guten Stand

    Noch nicht committet: Discard changes

    Committet: Revert Changes in Commit, ein Revert

    In GitHub Desktop: Reiter History, Rechtsklick auf den Commit, Revert Changes in Commit, dann Push origin. Ein Revert löscht nichts. Git legt einen neuen Commit an, der die Änderungen eines alten zurücknimmt; beide bleiben im Verlauf. Das ist sicher, auch wenn der kaputte Stand schon gepusht ist. Noch nicht committete Änderungen verwirft in GitHub Desktop Discard changes (Rechtsklick auf die Datei). Vor dem Revert in Unity alles speichern; danach lädt Unity die geänderten Dateien neu. Im Terminal: git revert <Kennung>.

    Vor jedem Experiment ein Commit

    Commit vor dem Agenten, Commit vor dem Experiment. Dann kostet ein Fehlschlag einen Klick.

    Erklärt eure Interaktion

    Zu zweit: Satz sagen, dann im Graph auf jeden Knoten zeigen, der darin vorkommt.

    Die andere Person fragt: „Und wenn nicht?“

    Ab heute jeden Freitag: ein System des eigenen Spiels laut erklären. Das ist die Übung für das Kapitel „ein System in eigenen Worten“ in der Dokumentation.

    Checkpoint

    1. Interaktion 1 läuft im Blockout
    2. Committet und gepusht
    3. Zwei Sätze im Devlog unten in DOKUMENTATION.md
    4. Antwort eines Agenten übernommen? Zeile im KI-Verzeichnis

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

    Ins KI-Verzeichnis kommt eine Zeile, sobald die Antwort eines Agenten in die Arbeit eingeht: Code, eine Diagnose, die ihr anwendet, ein Text. Werkzeug, Modell, Zweck, Datei oder System, eine Notiz.

    Die nächsten 14 Tage

    1. Nach 48 Stunden: Schlüssel und Tür im eigenen Projekt, Werkstatt repariert
    2. Eine Woche später: Clip, Hindernis, nächster Schritt in den Blackboard-Thread
    3. Wer 30 Minuten feststeckt, fragt
    4. Bis zum 27.11.: zwei Interaktionen und ein aktueller Build

    Am 27.11. spielen andere euren Stand.

    Meilenstein Vertical Slice am 27.11.: zwei Interaktionen aus der Liste der Aufgabenstellung laufen im Blockout, das KI-Verzeichnis hat Einträge, und ein aktueller Windows-Build dieses Stands läuft auf einem fremden Rechner. Reihenfolge für den Build: speichern, committen, aus genau diesem Stand bauen, die .exe auf einem anderen Windows-Rechner testen (ZIP per USB-Stick oder Cloud-Link). Ab Tag 5 bekommt der getestete Commit zusätzlich einen Tag.

    Aufwand bis zum 27.11., ehrlich gerechnet: etwa 10 bis 13 Stunden.

    WasMindestensZeit
    Schlüssel und Tür im eigenen Projektläuft, committet2–3 h
    Werkstattalle fünf Fehler behoben1 h
    Spec der zweiten Interaktionvier Zeilen und der Satz0,5 h
    Interaktion 2läuft im Blockout, mit Knoten, die ihr kennt4–6 h
    Build und Test auf fremdem Rechner.exe startet, beide Interaktionen gehen1 h
    Clip, Post, Devlog30 s, ein Hindernis, zwei Sätze1 h

    Wird Interaktion 2 größer als sechs Stunden, wird sie kleiner: weniger Schritte, bekannte Knoten. Wer den Rettungsweg geht, rechnet etwa vier Stunden dazu. Wer feststeckt: 30 Minuten selbst suchen (Graph, Console, Konzeptseiten), dann im Blackboard-Thread fragen, mit Bild der Console und des Graphs.

    Tag 3