godot-genre-fighting
Installation
SKILL.md
NEVER Do (Expert Anti-Patterns)
Frame-Data & Logic
- NEVER use variable framerates; strictly lock logic to a Deterministic Fixed Loop (using
_physics_processwith a frame-counter) and callreset_physics_interpolation()on teleport. - NEVER use standard Physics for hit detection; strictly use
PhysicsDirectSpaceState.intersect_shape()to query hitboxes instantly without Area2D signal lag. - NEVER skip Damage Scaling; strictly apply 10% reduction per hit in a combo to prevent infinite matches.
- NEVER make all moves safe on block; strictly ensure high-reward moves have Recovery Windows where the attacker is punishable.
- NEVER rely on
Area2D.get_overlapping_areas(); strictly useintersect_shape()for immediate, frame-perfect resolution. - NEVER forget Hitbox Proximity (Proximity Guard); strictly trigger guard states when a hitbox enters a nearby zone, even if it hasn't landed.
Character & Animation
- NEVER use simple parenting (
scale.x = -1) for character flip; strictly adjust the dedicated Visuals node while managing hitbox offsets programmatically. - NEVER use string-based animation triggers; strictly use
AnimationMixerwithADVANCE_MANUALfor frame-synced playback. - NEVER use
yieldorawaitfor frame-critical logic; strictly use Integer Frame Counting within state machines to manage recovery/startup windows perfectly. - NEVER store frame data in raw scripts; strictly use
Resourcefiles (.tres) with delegated logic for damage scaling, cancels, and combo-state tracking. - NEVER use deep node hierarchies for character parts; strictly keep skeletons shallow to reduce transformation overhead.