Ajoute le skill raggaroth-senior-dev

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-12 15:18:42 +02:00
parent 9dddfb1ed2
commit e81d88166b
5 changed files with 259 additions and 0 deletions
@@ -0,0 +1,25 @@
# Scripting jeu : C# (Godot/Mono), GDScript, Lua
## C# (Godot/Mono)
- Signaux vs appels directs : préférer les signaux Godot pour le découplage entre nœuds, plutôt que des références directes croisées entre scènes — couplage fort non justifié = 🟠.
- Cycle de vie des nœuds : vérifier l'usage correct de `_Ready()`, `_Process()` vs `_PhysicsProcess()` (logique physique/mouvement doit être dans `_PhysicsProcess`, pas `_Process` = 🔴 si ça casse le déterminisme physique).
- `GetNode()` avec chemin en dur fragile aux réorganisations de scène → préférer `[Export]` ou constantes de chemin centralisées (🟡).
- Allocations dans `_Process`/`_PhysicsProcess` (boucle par frame) : allocation d'objets/listes à chaque frame = 🟠 (pression GC, risque de stutter, critique en pixel-art temps réel).
- `async`/`await` avec Godot : attention aux tâches qui survivent à la destruction du nœud (`QueueFree`) sans annulation → fuite/crash potentiel = 🔴.
- Cohérence avec la structure de scènes du projet (ElironWorldDungeons ou autre) : vérifier que le script respecte l'organisation de dossiers déjà en place plutôt que d'en introduire une nouvelle sans discussion.
## GDScript
- Typage statique disponible (`var x: int`, `-> void`) : l'utiliser sur les fonctions publiques/API de nœud, surtout dans du code partagé — absence = 🟡 (perte de perf + autocomplete + détection d'erreurs à l'édition).
- `@onready var` pour les références de nœuds internes plutôt que `get_node()` répété dans plusieurs fonctions.
- Éviter la logique lourde dans `_process()` par frame sans nécessité — même remarque que C# sur les allocations en boucle.
- Signaux : connecter/déconnecter proprement (`connect`/`disconnect`) pour éviter les callbacks fantômes sur des nœuds libérés = 🔴 si ça crash en prod.
- Cohérence de nommage : `snake_case` pour variables/fonctions, `PascalCase` pour classes/nœuds (convention GDScript standard) — à vérifier si le studio n'a pas dévié explicitement.
## Lua
- Scope des variables : `local` par défaut, variable globale non déclarée volontairement = 🟠 (pollution du scope global, bugs difficiles à tracer, surtout si Lua est embarqué comme langage de modding/scripting).
- Gestion d'erreurs : `pcall`/`xpcall` autour de tout code exécuté dynamiquement ou venant de scripts externes/mods (si Lua sert à du modding, un script tiers qui plante ne doit pas crasher le jeu) → absence = 🔴 dans ce contexte précis.
- Tables : attention à la confusion array-like vs map-like dans une même table, source de bugs subtils avec `#`/`ipairs`/`pairs`.
- Si Lua est utilisé pour du contenu moddable : vérifier qu'aucune fonction dangereuse (accès fichier système, `os.execute`, etc.) n'est exposée au sandbox de script sans contrôle explicite = 🔴 (risque sécurité si mods tiers).