Unity Rapid Proto
Ce que fait cette skill
Transforme une idee de gameplay brute en prototype jouable Unity. Pas de GDD, pas de planning, pas d'architecture. On va droit au code minimum pour tester la mechanique.
Produit :
- 1 a 3 scripts C# (MonoBehaviour uniquement)
- Les instructions de setup scene (hierarchy, components, valeurs)
- Une checklist "press Play" pour verifier que ca marche
Prerequis
- Projet Unity existant
- Un dossier
Assets/Prototypes/ (sera cree si absent)
- Connaissance du concept a prototyper en 1-2 phrases
Arbre de decision
Type de prototype ?
|
+-- 3D gameplay ?
| +-- Deplacement + exploration --> Template 3D Platformer
| +-- Tir / combat --> Template FPS
| +-- Placement strategique --> Template Tower Defense
| +-- Course automatique --> Template Runner / Endless
|
+-- 2D gameplay ?
| +-- Deplacement top-down --> Template Top-Down 2D
| +-- Puzzle / grille --> Template Puzzle (grid-based)
| +-- Platformer 2D --> Adapter Template 3D Platformer en 2D
|
+-- Pas sur ?
+-- Commencer en 3D (plus visuel, plus facile a debloquer)
Demarrage rapide
- L'utilisateur decrit son idee en 1-2 phrases
- Identifier LA mechanique centrale
- Generer les scripts (max 3, max 100 lignes chacun)
- Ecrire les instructions de setup scene
- Fournir la checklist de test
Guide etape par etape
Etape 1 : Comprendre l'idee
Demander a l'utilisateur de decrire son idee en 1-2 phrases maximum. Ne PAS demander de details supplementaires. Ne PAS produire de document de design.
Extraire :
- Le verbe principal (sauter, tirer, placer, esquiver, collecter)
- Le contexte spatial (2D/3D, vue camera)
- La condition de fin (score, timer, survie, puzzle resolu)
Etape 2 : Identifier la mechanique core
Choisir UNE seule mechanique a prototyper. Si l'idee contient plusieurs mecaniques, prendre celle qui definit le gameplay loop principal.
Exemples de reduction :
- "Un jeu ou on construit des tours pour defendre une base contre des vagues d'ennemis" -> Mechanique core : placement de tourelles + path following
- "Un platformer avec des pouvoirs magiques et du crafting" -> Mechanique core : mouvement + saut (le reste viendra apres)
- "Un FPS multijoueur avec des classes" -> Mechanique core : deplacement + tir raycast
Etape 3 : Generer le code minimal
Structure type :
PlayerController.cs : mouvement + action principale (max 80 lignes)
- 1-2 scripts gameplay selon le besoin (max 60 lignes chacun)
Regles de code :
- MonoBehaviour uniquement, pas de ScriptableObject
- Input.GetKey / Input.GetAxis (ancien systeme, plus simple)
- Valeurs hardcodees (pas de SerializeField sauf si vraiment utile)
- Visuels = primitives Unity (Cube, Sphere, Capsule, Plane)
- Pas de namespace, pas de pattern, pas d'event system
- Un seul fichier = une seule responsabilite evidente
- 1 commentaire par bloc non-evident, pas plus
Note Input System (Unity 6+) : Si le projet utilise le New Input System (defaut dans Unity 6), remplacer les appels Input.* :
Input.GetKey(KeyCode.Space) → Keyboard.current[Key.Space].isPressed
Input.GetKeyDown(KeyCode.Space) → Keyboard.current[Key.Space].wasPressedThisFrame
Input.GetAxis("Horizontal") → Gamepad.current.leftStick.x.ReadValue() ou InputAction
Input.GetMouseButton(0) → Mouse.current.leftButton.isPressed
Pour un prototype rapide, le old Input Manager reste plus simple. Verifier Edit > Project Settings > Player > Active Input Handling.
Etape 4 : Ecrire les instructions de setup
Fournir dans cet ordre exact :
- Scene : creer une nouvelle scene ou utiliser SampleScene
- Objets a creer (avec nom, primitive, position, scale)
- Components a ajouter sur chaque objet
- Hierarchy parent/enfant si necessaire
- Tags et Layers necessaires
- Camera setup (position, rotation)
Format :
## Setup Scene
1. Creer un objet **Player** : Capsule a position (0, 1, 0)
- Ajouter `PlayerController.cs`
- Ajouter Rigidbody (Use Gravity: true, Freeze Rotation X/Z)
2. Creer un objet **Ground** : Plane a position (0, 0, 0), scale (5, 1, 5)
- Tag: "Ground"
Etape 5 : Checklist "press Play"
Lister exactement ce qui doit se passer quand on appuie sur Play :
## Test checklist
- [ ] Le joueur se deplace avec WASD/fleches
- [ ] Le joueur saute avec Space et retombe
- [ ] Les ennemis apparaissent toutes les 3 secondes
- [ ] Le score augmente quand on touche un ennemi
- [ ] Game Over s'affiche quand la vie atteint 0
Templates par genre
6 templates pre-configures dans references/proto-templates.md :
| Genre |
Scripts |
Objets cles |
| 3D Platformer |
PlayerController + MovingPlatform |
Capsule + CharacterController, Planes, Cubes |
| FPS |
FPSController + EnemyHealth + Spawner |
Capsule + Camera enfant, Cubes rouges |
| Top-Down 2D |
PlayerMovement2D + Bullet + EnemyPatrol2D |
Sprites, Rigidbody2D, Camera ortho |
| Puzzle (grid) |
GridManager + Tile |
Quads generes, UI Text victoire |
| Runner / Endless |
RunnerPlayer + ObstacleSpawner + ScoreManager |
Capsule auto-avance, 3 lanes |
| Tower Defense |
Turret + EnemyPath + TurretPlacer |
Waypoints, OverlapSphere, InvokeRepeating |
Regles strictes
TOUJOURS :
- Utiliser des primitives Unity pour les visuels (Cube, Sphere, Capsule, Plane)
- Inclure une condition de victoire/defaite ou un feedback loop
- Utiliser
Input.GetKey / Input.GetAxis (ancien input system)
- Garder les valeurs hardcodees (vitesse, vie, degats)
- Ecrire le code dans
Assets/Prototypes/<NomPrototype>/
- Tester mentalement chaque script : est-ce que ca compile ? est-ce que ca fait quelque chose de visible ?
JAMAIS :
- Plus de 3 scripts par prototype
- Plus de 100 lignes par script (80 pour le PlayerController)
- D'architecture : pas de SO, pas d'events, pas de managers, pas de singletons
- De documentation ou README
- De commentaires abondants (1 ligne par bloc non-evident maximum)
- De SerializeField sauf si absolument necessaire pour le workflow scene
- De namespace, d'interface, de classe abstraite, de generics
- D'asset externe, de package additionnel, d'Asset Store
Skills connexes
- Le prototype fonctionne et on veut passer en production ? Utiliser
/unity-code-gen (Unity Code Gen) pour restructurer avec les bons patterns
- Bug dans le prototype ? Utiliser
/unity-debug (Unity Debug)
- Besoin d'un shader custom pour le prototype ? Utiliser
/shader (Unity Shader Generator)
- Prototype 2D (platformer, top-down) ? Utiliser
/2d (Unity 2D) pour les patterns detailles
Troubleshooting
| Probleme |
Solution |
| Le joueur ne bouge pas |
Verifier que le script est attache au bon GameObject. Verifier que CharacterController ou Rigidbody est present. |
| Le joueur tombe a travers le sol |
Verifier que le sol a un Collider. Verifier que le joueur a un Collider + Rigidbody (ou CharacterController). |
| Le saut ne fonctionne pas |
Verifier le ground check : le raycast doit pointer vers Vector3.down avec une distance legerement superieure a la moitie de la hauteur du joueur. |
| Les collisions ne detectent pas |
Verifier qu'au moins un des deux objets a un Rigidbody. Si on utilise OnTriggerEnter, le Collider doit etre marque "Is Trigger". |
| La camera tremble |
Deplacer la logique camera dans LateUpdate au lieu de Update. |
| Les ennemis n'apparaissent pas |
Verifier que le prefab est assigne ou que Instantiate utilise le bon reference. Verifier que InvokeRepeating est appele dans Start. |
| Le score ne s'affiche pas |
Verifier la reference au Text ou TextMeshProUGUI. Verifier que le Canvas a un EventSystem. |
| Le prototype est trop lent |
Supprimer les Debug.Log dans Update. Verifier qu'on ne fait pas d'Instantiate/Destroy massif (passer a un pool basique si necessaire). |
1---2name: unity-rapid-proto3description: Prototypage instantane de gameplay Unity. Triggers: /proto, /prototype, 'prototyper', 'idee de jeu', 'tester une mechanique', 'rapid proto'. Transforme une idee de gameplay en scene jouable avec le minimum de code. Produit 1-3 scripts MonoBehaviour, les instructions de setup scene, et une checklist de test. Aucune architecture, aucun planning -- juste du code jouable.4---56# Unity Rapid Proto78## Ce que fait cette skill910Transforme une idee de gameplay brute en prototype jouable Unity. Pas de GDD, pas de planning, pas d'architecture. On va droit au code minimum pour tester la mechanique.1112Produit :13- 1 a 3 scripts C# (MonoBehaviour uniquement)14- Les instructions de setup scene (hierarchy, components, valeurs)15- Une checklist "press Play" pour verifier que ca marche1617## Prerequis1819- Projet Unity existant20- Un dossier `Assets/Prototypes/` (sera cree si absent)21- Connaissance du concept a prototyper en 1-2 phrases2223## Arbre de decision2425```26Type de prototype ?27|28+-- 3D gameplay ?29| +-- Deplacement + exploration --> Template 3D Platformer30| +-- Tir / combat --> Template FPS31| +-- Placement strategique --> Template Tower Defense32| +-- Course automatique --> Template Runner / Endless33|34+-- 2D gameplay ?35| +-- Deplacement top-down --> Template Top-Down 2D36| +-- Puzzle / grille --> Template Puzzle (grid-based)37| +-- Platformer 2D --> Adapter Template 3D Platformer en 2D38|39+-- Pas sur ?40 +-- Commencer en 3D (plus visuel, plus facile a debloquer)41```4243## Demarrage rapide44451. L'utilisateur decrit son idee en 1-2 phrases462. Identifier LA mechanique centrale473. Generer les scripts (max 3, max 100 lignes chacun)484. Ecrire les instructions de setup scene495. Fournir la checklist de test5051## Guide etape par etape5253### Etape 1 : Comprendre l'idee5455Demander a l'utilisateur de decrire son idee en 1-2 phrases maximum. Ne PAS demander de details supplementaires. Ne PAS produire de document de design.5657Extraire :58- Le verbe principal (sauter, tirer, placer, esquiver, collecter)59- Le contexte spatial (2D/3D, vue camera)60- La condition de fin (score, timer, survie, puzzle resolu)6162### Etape 2 : Identifier la mechanique core6364Choisir UNE seule mechanique a prototyper. Si l'idee contient plusieurs mecaniques, prendre celle qui definit le gameplay loop principal.6566Exemples de reduction :67- "Un jeu ou on construit des tours pour defendre une base contre des vagues d'ennemis" -> Mechanique core : placement de tourelles + path following68- "Un platformer avec des pouvoirs magiques et du crafting" -> Mechanique core : mouvement + saut (le reste viendra apres)69- "Un FPS multijoueur avec des classes" -> Mechanique core : deplacement + tir raycast7071### Etape 3 : Generer le code minimal7273Structure type :74- `PlayerController.cs` : mouvement + action principale (max 80 lignes)75- 1-2 scripts gameplay selon le besoin (max 60 lignes chacun)7677Regles de code :78```79- MonoBehaviour uniquement, pas de ScriptableObject80- Input.GetKey / Input.GetAxis (ancien systeme, plus simple)81- Valeurs hardcodees (pas de SerializeField sauf si vraiment utile)82- Visuels = primitives Unity (Cube, Sphere, Capsule, Plane)83- Pas de namespace, pas de pattern, pas d'event system84- Un seul fichier = une seule responsabilite evidente85- 1 commentaire par bloc non-evident, pas plus86```8788> **Note Input System (Unity 6+)** : Si le projet utilise le New Input System (defaut dans Unity 6), remplacer les appels `Input.*` :89> - `Input.GetKey(KeyCode.Space)` → `Keyboard.current[Key.Space].isPressed`90> - `Input.GetKeyDown(KeyCode.Space)` → `Keyboard.current[Key.Space].wasPressedThisFrame`91> - `Input.GetAxis("Horizontal")` → `Gamepad.current.leftStick.x.ReadValue()` ou InputAction92> - `Input.GetMouseButton(0)` → `Mouse.current.leftButton.isPressed`93>94> Pour un prototype rapide, le old Input Manager reste plus simple. Verifier `Edit > Project Settings > Player > Active Input Handling`.9596### Etape 4 : Ecrire les instructions de setup9798Fournir dans cet ordre exact :991. Scene : creer une nouvelle scene ou utiliser SampleScene1002. Objets a creer (avec nom, primitive, position, scale)1013. Components a ajouter sur chaque objet1024. Hierarchy parent/enfant si necessaire1035. Tags et Layers necessaires1046. Camera setup (position, rotation)105106Format :107```108## Setup Scene1091101. Creer un objet **Player** : Capsule a position (0, 1, 0)111 - Ajouter `PlayerController.cs`112 - Ajouter Rigidbody (Use Gravity: true, Freeze Rotation X/Z)1131142. Creer un objet **Ground** : Plane a position (0, 0, 0), scale (5, 1, 5)115 - Tag: "Ground"116```117118### Etape 5 : Checklist "press Play"119120Lister exactement ce qui doit se passer quand on appuie sur Play :121```122## Test checklist123124- [ ] Le joueur se deplace avec WASD/fleches125- [ ] Le joueur saute avec Space et retombe126- [ ] Les ennemis apparaissent toutes les 3 secondes127- [ ] Le score augmente quand on touche un ennemi128- [ ] Game Over s'affiche quand la vie atteint 0129```130131## Templates par genre1321336 templates pre-configures dans `references/proto-templates.md` :134135| Genre | Scripts | Objets cles |136|-------|---------|-------------|137| 3D Platformer | PlayerController + MovingPlatform | Capsule + CharacterController, Planes, Cubes |138| FPS | FPSController + EnemyHealth + Spawner | Capsule + Camera enfant, Cubes rouges |139| Top-Down 2D | PlayerMovement2D + Bullet + EnemyPatrol2D | Sprites, Rigidbody2D, Camera ortho |140| Puzzle (grid) | GridManager + Tile | Quads generes, UI Text victoire |141| Runner / Endless | RunnerPlayer + ObstacleSpawner + ScoreManager | Capsule auto-avance, 3 lanes |142| Tower Defense | Turret + EnemyPath + TurretPlacer | Waypoints, OverlapSphere, InvokeRepeating |143144## Regles strictes145146**TOUJOURS :**147- Utiliser des primitives Unity pour les visuels (Cube, Sphere, Capsule, Plane)148- Inclure une condition de victoire/defaite ou un feedback loop149- Utiliser `Input.GetKey` / `Input.GetAxis` (ancien input system)150- Garder les valeurs hardcodees (vitesse, vie, degats)151- Ecrire le code dans `Assets/Prototypes/<NomPrototype>/`152- Tester mentalement chaque script : est-ce que ca compile ? est-ce que ca fait quelque chose de visible ?153154**JAMAIS :**155- Plus de 3 scripts par prototype156- Plus de 100 lignes par script (80 pour le PlayerController)157- D'architecture : pas de SO, pas d'events, pas de managers, pas de singletons158- De documentation ou README159- De commentaires abondants (1 ligne par bloc non-evident maximum)160- De SerializeField sauf si absolument necessaire pour le workflow scene161- De namespace, d'interface, de classe abstraite, de generics162- D'asset externe, de package additionnel, d'Asset Store163164## Skills connexes165166- Le prototype fonctionne et on veut passer en production ? Utiliser `/unity-code-gen` (Unity Code Gen) pour restructurer avec les bons patterns167- Bug dans le prototype ? Utiliser `/unity-debug` (Unity Debug)168- Besoin d'un shader custom pour le prototype ? Utiliser `/shader` (Unity Shader Generator)169- Prototype 2D (platformer, top-down) ? Utiliser `/2d` (Unity 2D) pour les patterns detailles170171## Troubleshooting172173| Probleme | Solution |174|----------|----------|175| Le joueur ne bouge pas | Verifier que le script est attache au bon GameObject. Verifier que `CharacterController` ou `Rigidbody` est present. |176| Le joueur tombe a travers le sol | Verifier que le sol a un Collider. Verifier que le joueur a un Collider + Rigidbody (ou CharacterController). |177| Le saut ne fonctionne pas | Verifier le ground check : le raycast doit pointer vers `Vector3.down` avec une distance legerement superieure a la moitie de la hauteur du joueur. |178| Les collisions ne detectent pas | Verifier qu'au moins un des deux objets a un Rigidbody. Si on utilise `OnTriggerEnter`, le Collider doit etre marque "Is Trigger". |179| La camera tremble | Deplacer la logique camera dans `LateUpdate` au lieu de `Update`. |180| Les ennemis n'apparaissent pas | Verifier que le prefab est assigne ou que `Instantiate` utilise le bon reference. Verifier que `InvokeRepeating` est appele dans `Start`. |181| Le score ne s'affiche pas | Verifier la reference au `Text` ou `TextMeshProUGUI`. Verifier que le Canvas a un EventSystem. |182| Le prototype est trop lent | Supprimer les `Debug.Log` dans Update. Verifier qu'on ne fait pas d'Instantiate/Destroy massif (passer a un pool basique si necessaire). |