Unity Gameplay-Entwicklungs-Skill (First-Person / Unity 6 / URP)
Pfadkonvention (zuerst lesen): Alle
scripts/-,references/- undassets/-Verweise in dieser Datei sind relativ zum Verzeichnis, in dem sich diese SKILL.md befindet. Vor dem Ausführen von Skripten zuerst in dieses Verzeichnis wechseln. Die Installationsorte variieren je nach Host: Claude Code Plugin im Plugin-Verzeichnis; Cursor/Codex installieren viainstall.ps1in<Projekt>/skills/game-dev/<Skill-Name>/. Wenn unsicher, zuerst mitglobden absoluten Pfad dieser SKILL.md finden und dann Skripte mit absolutem Pfad aufrufen.python scripts/xxx.pydirekt im Projektstammverzeichnis führt zu file-not-found.
Übersicht
Dieses Skill verwandelt GDD-Spezifikationen und 3D-Assets in spielbare Gameplay-Funktionen: Erstellen/Ändern von Skripten, Anhängen von Komponenten, Konfigurieren von Animationen und UI, Überprüfen im Play-Modus, Ausführen von Tests und Erstellen von Builds – alles per MCP. Standard-Stack: Unity 6 (6000.x LTS, kompatibel mit 6000.3), URP, UGUI, neues Input System, Cinemachine 3 (optional), Singleplayer, kein Multiplayer.
Grenzen
- Aufgaben: Gameplay-Logik, Controller, Interaktion, UI, Inventar/Dialog/Speichern, KI, Audio, Tests, Builds und Performance-Analyse.
- Nicht: 3D-Asset-Erstellung/Import/Materialien (überlassen Sie dies dem unity-blender-mcp Skill); Multiplayer (Netcode); Handgeschriebene Shader (nur Empfehlungen für Effekte).
- Zielprojekt verwendet First-Person-Perspektive; Third-Person/Top-Down nutzen dieselbe Architektur (Zustandsmaschine, Input, Interaktion, UI), nur Controller und Kamera-Zweig unterscheiden sich – siehe
references/02. - 2D-Projekte: Architekturebene (Zustandsmaschine/Event-Bus/Speichern/Inventar/UI-Stack) kann übernommen werden, aber Character-Controller, Physik, Navigation und Performance-Budget müssen ausgetauscht werden,
siehe
references/11-2d-gameplay.md. Verwenden Sie nicht den 3D-CharacterController+NavMeshfür 2D.
Voraussetzungen
- Unity 6000.x (6000.0 LTS bis Oktober 2026 unterstützt, danach Upgrade auf 6000.3 LTS; Code ist kompatibel mit beiden).
- Erforderliche Pakete:
com.unity.inputsystem(neues Input System),com.unity.ugui(UGUI),com.unity.ai.navigation(NavMesh-Baking),com.unity.test-framework(Tests, Scaffold erzeugt sie automatisch mit--tests); optional:com.unity.cinemachine, URPcom.unity.render-pipelines.universal. - Pakete per MCP
manage_packagesinstallieren, oder das Scaffold schreibt die manifest automatisch (Input System / UGUI / Test-Framework, Versionen gemäß Editor-Integrations- und Mainline-Rückfalltabelle auflösen); nach der Installation in Project Settings → Active Input Handling auf Both setzen (das Scaffold schreibtactiveInputHandler: 2). - Version prüfen:
ProjectSettings/ProjectVersion.txt; bei unsicherer APIunity_docs/unity_reflectverwenden, keine API aus dem Gedächtnis schreiben.
Standard-Workflow (Von GDD zu spielbaren Funktionen)
Ablauf A: Neues Projekt / Neue Engine von Grund auf
- Version und Pipeline bestätigen:
manage_editorliest die Editor-Version; Projekt URP oder Built-in (Materialien und Post-Processing unterscheiden sich). - Scaffold ausführen:
python scripts/new_gameplay.py --out "<Projekt>/Assets/Game" --namespace <Spielname>– erzeugt Framework-Code, asmdefs, Test-Assemblys und fügt automatisch die Input System-Abhängigkeit hinzu; einmal Unity öffnen, damit die Pakete heruntergeladen werden, dann das Scaffold erneut ausführen, um die asmdef-GUIDs zurückzuschreiben.- ⚠️ Erste Kompilierung mit Fehlern wie
CS0234/CS0246(UnityEngine.InputSystemnicht gefunden) ist erwartet, nicht das Scaffold ist kaputt: Ein neues Projekt hat die Pakete noch nicht heruntergeladen, daher fehlen die InputSystem-asmdef-GUIDs. Einmal Unity öffnen (Paket-Download) → Scaffold erneut ausführen → GUIDs zurückgeschrieben → dann Kompilierung fehlerfrei. - Getestet in Unity 6000.0.84f1: Nach erneuter Ausführung Kompilierung fehlerfrei,
InventoryTests3/3 bestanden.
- ⚠️ Erste Kompilierung mit Fehlern wie
- Szenen-Einstiegsobjekte hinzufügen: Start-Szene gemäß
references/01aufbauen (GameManager, AudioManager, UIManager, EventSystem, Canvas) mitmanage_gameobject/manage_components. - Funktionen nach Reihenfolge implementieren: Input → First-Person-Controller → Interaktion → HUD → spezifische Gameplay-Systeme → KI → Audio/VFX (Reihenfolge siehe unten „Funktionsentwicklungsreihenfolge“).
- Funktion für Funktion verifizieren: Nach jeder Funktion manuell im Play-Modus testen + EditMode/PlayMode-Tests schreiben – siehe
references/00für den Verifizierungszyklus. - Navigation/Baking/Build: NavMesh-Baking, Szene in Build einbeziehen, Build-Checkliste – siehe
references/08,references/09.
Ablauf B: Einzelne Funktion entwickeln (häufigster Fall)
GDD-Seite für die entsprechende Komponente lesen (Charakter/Interaktion/System/Dialog/Animations-Spezifikation) → Liste der zu ändernden Skripte und Komponenten erstellen → Vorlage auswählen oder neu erstellen → Implementierung im MCP-Editierzyklus → Play-Validierung → Tests ergänzen → „Definition of Done“ aktualisieren.
Ablauf C: Fehlersuche und Optimierung
Bei Kompilierungs-/Laufzeitfehlern references/10 konsultieren; bei Rucklern/Performance-Problemen den Profiler-Workflow aus references/08 durchführen; bei MCP-Fehlern den Fallback-Plan aus references/00 anwenden.
MCP-Editierzyklus (bei jeder Code-Änderung beachten)
refresh_unityzuerst zur Synchronisation der Festplatte ausführen;read_consoleverwenden, um fehlerfreien Ausgangszustand zu bestätigen.- Skript erstellen:
create_script; Skript ändern: bevorzugtscript_apply_edits(strukturierte Methoden-Editierung), nur kleine Änderungen mitapply_text_edits; nach der Änderungvalidate_scriptaufrufen. refresh_unityausführen (löst Kompilierung aus) →read_consolefür Kompilierungsergebnisse (CS-Fehler sofort beheben, nicht mit Fehlern fortfahren).- Komponenten anhängen/Referenzen setzen:
manage_components/manage_gameobject; Animationen mitmanage_animation; UI mitmanage_gameobject(nur UI Toolkit mitmanage_ui). - Play-Modus-Validierung:
manage_editorzum Wechseln in den Play-Modus,read_consolefür Laufzeitausnahmen; Kameraperspektive/-Gefühl mitfind_gameobjectszum Auslesen des Transform-Status prüfen, bei Bedarfexecute_codefür Game View-Screenshot. - Mehrere nicht-konfliktäre Operationen in
batch_executezusammenfassen; vor Abschluss jeder Funktionmanage_scenezum Speichern der Szene aufrufen.
Funktionsentwicklungsreihenfolge (nach dem Scaffold)
1. Input InputReader (vom Scaffold generiert) → Im Player in der Szene platzieren, WASD/Maus funktionieren
2. First-Person PlayerLook + FirstPersonController (Gehen, Rennen, Springen, Ducken, Landen)
- 2D-Projekte verwenden stattdessen `PlatformerController2D` (wird automatisch mit `--dimension 2d` generiert; 3D-spezifische Dateien werden nicht generiert)
3. Interaktion Interactor + Tür/Aufhebbare Objekte (Fadenkreuz-UI muss funktionieren)
4. HUD + Menü-Panel-Stack (UIManager, ESC zum Pausieren)
5. Gameplay-Systeme: Health/Inventar/Dialog (je nach GDD auswählen)
6. Speichern SaveSystem (vorhandene Systeme mit ISaveable verbinden)
7. Gegner-KI: NavMesh-Baking + EnemyAI + Wahrnehmung
8. Audio AudioManager + Mixer; VFX (Partikel/Mündungsfeuer/Treffer)
9. Performance Profiler zur Frame-Analyse; Build erstellen (references/08, 09)
Scaffold und Vorlagen
python scripts/new_gameplay.py --out "D:/MyProject/Assets/Game" --namespace MyGame
# --no-tests: Keine Test-Assemblys generieren
# --editor-data "Editor/Data-Pfad": Input System-Version auflösen (wenn nicht angegeben, wird die Rückfalltabelle verwendet)
Vorlagenliste (assets/templates/). Hinweis: Vorlagen enthalten Platzhalter für Namespace {{NS}}, vor manuellem Kopieren ersetzen, oder besser new_gameplay.py ausführen, das die Ersetzung automatisch vornimmt – sonst kann nicht kompiliert werden:
| Modul | Datei | Zweck |
|---|---|---|
| Core | PersistentSingleton / StateMachine / EventBus / GameManager / GameEvents | Singleton, Zustandsmaschine, Event-Bus, Spielablauf (Menü/Spiel/Pause/Laden) |
| Input | InputReader | Code-basierte Kapselung des neuen Input Systems, Tastatur/Maus + Gamepad |
| Player | FirstPersonController / PlayerLook / PlatformerController2D | 3D: CharacterController-Bewegung, Mausperspektive, Rennen/Springen/Ducken. 2D: Rigidbody2D-Plattform-Jumping (mit Coyote-Time / Jump-Buffer / variable Sprunghöhe) |
| Interaktion | InteractableBase / Interactor / PickupItem | Fadenkreuz-Interaktion, Aufhebbare Objekte (Beispiel) |
| Systeme | Health / Inventory / SaveSystem / DialogueRunner / ObjectPool / AudioManager | Leben, Inventar, JSON-Speicher, linearer Dialog, Objekt-Pool, Audio |
| KI | EnemyAI / EnemyPerception | NavMesh-Patrouille/Verfolgung/Angriff Zustandsmaschine + Kegel-Wahrnehmung |
| UI | UIPanel / UIManager / HUDController | Panel-Stack, HUD mit Lebensbalken/Hinweisen/Untertiteln |
| Tests | InventoryTests (+ asmdef) | Beispiel für Inventar-Logik-Tests, ausführbar mit run_tests |
Referenzdokument-Index (bei Bedarf laden)
references/00-mcp-code-workflow.md: MCP-47-Tools abgebildet auf Gameplay-Aufgaben, Editierzyklus, Play-Validierung, Tests, Fallback ohne MCPreferences/01-architecture.md: Verzeichnisstruktur, asmdef, Namenskonventionen, datengesteuertes Design, Grenzen von Referenzen/Events/Singletons, ScriptableObjectreferences/02-input-and-fp-controller.md: Implementierung des Input-Systems, Player-Prefab-Hierarchie, Parametertabelle für First-Person-Bewegung und -Kamera, Third-Person/Top-Down-Zweigreferences/03-interaction-animation.md: Interaktionsebene, Animator-Zustandsmaschine/Blend-Tree/Root-Motion, Animations-Events, Humanoid-Anbindungreferences/04-ui-ugui.md: Canvas/EventSystem-Aufbau, Panel-Stack, HUD, Pause, Eingabeumschaltungreferences/05-gameplay-systems.md: Verwendung und Erweiterungsrichtlinien für Health/Inventar/Dialog/Speichern/Object-Pooling, Datendefinitionenreferences/06-ai-navigation.md: NavMesh-Baking, Gegner-Konfiguration, Patrouillenpunkte, Wahrnehmungs-Parameter, Zustandserweiterungreferences/07-audio-vfx.md: AudioMixer-Gruppen, Audio-Pool, Musik-Überblendung, Partikel/VFX Graph-Auswahlreferences/08-performance.md: 60fps-Budget, Profiler/Frame-Debugger-Workflow, häufige Engpässereferences/09-build-release.md: Build-Einstellungen, Szenen-Liste, Steam/Deck-Prüfung, Speicher-Kompatibilitätreferences/10-troubleshooting.md: Häufige Fehler bei Kompilierung/Null-Referenzen/Ausführungsreihenfolge/Input/Navigation/UIreferences/11-2d-gameplay.md: Vor der Arbeit an 2D-Projekten zuerst lesen. 2D-Paket-Installation, Sprite-Import, Physics2D und Layer-Matrix, 2D-Plattform-Jumping (Coyote-Time/Jump-Buffer), Tilemap und Composite-Kollision, Pixel-Perfect-Kamera, 2D-Budget basierend auf Overdraw und Batches (Dreiecks-Budget-Tabellen sind für 2D irrelevant).
Hinweis für 2D-Projekte: Die C#-Vorlagen dieses Skills sind standardmäßig auf 3D First-Person ausgelegt (
CharacterController,NavMesh). Für 2D die dimensionsunabhängigen Teile wiederverwenden (EventBus,StateMachine,Inventory,SaveSystem,Health,ObjectPool,UIManager,AudioManager), während Controller, Navigation, Physik und Performance-Budget gemäßreferences/11neu geschrieben werden müssen.
Eiserne Regeln
- Werte aus GDD: Bewegungsgeschwindigkeit, Sprunghöhe, Schaden, Treffer-Frames, Sichtweite müssen im Inspector exponiert sein und mit der GDD-Seite übereinstimmen; wenn der GDD-Wert fehlt, mit
【Zu bestätigen】markieren, keine Werte erfinden. - Jeder Schritt muss verifizierbar sein: Nach Code-Änderungen Kompilierung fehlerfrei, Play-Modus-Test bestanden; bei gefühlssensitiven Aspekten (Bewegung/Kamera/Interaktion) müssen Transform/Status-Beweise aufgezeichnet werden, nicht nur „sollte funktionieren“ sagen.
- Keine vorgetäuschte Kompilierung: Wenn
validate_scriptoderread_consolenicht bestanden ist, gilt die Aufgabe als nicht abgeschlossen; wenn eine Verifizierung in dieser Umgebung nicht möglich ist, dies klar angeben, keine Ergebnisse erfinden. - Daten und Logik trennen: Einstellbare Werte als SerializeField/ScriptableObject; Präsentationsschicht abonniert Events, nicht in Systemklassen schreiben.
- Namenskonventionen: Klassen PascalCase; Dateiname mit Hauptklassenname übereinstimmend; Szenen/ Prefabs
Level_01_,PF_Player; Konstanten kein Chinesisch; CS-Warnungen in der Console ebenfalls beheben. - Kleine Schritte, häufige Commits: Eine Funktion pro Commit; vor Änderungen Szene speichern/sichern; bei riskanten Operationen (Löschen, Massen-Änderungen an Komponenten) zuerst die betroffenen Objekte auflisten.
Definition of Done (DoD)
- Implementierte Logik stimmt mit der GDD-Seite überein, Werte nachvollziehbar (Branchen-Standardwerte sind markiert)
- Kompilierung fehlerfrei, keine Warnungen (Screenshot/Log von
read_consoleals Beleg) - Play-Modus-Test bestanden: Eingabe, Zustandswechsel, Interaktion, Feedback reproduzierbar
- Unit-testbare Logik hat Tests (
run_testsgrün) - Zugehörige Referenzen/Komponenten/Hierarchie vollständig konfiguriert (Prefab kann in leere Szene gezogen werden und funktioniert, ohne manuelle temporäre Verkabelung)
- Speicher-Neufelder mit Versionsnummer behandelt; neue Szenen in Build eingebunden
- Performance ohne neue Engpässe (Ziel 60fps, mobile/Deck siehe 08)