mirror of
https://github.com/Earth-Genesis-Games/Ajedrez_Purgatorio.git
synced 2026-09-11 09:47:35 +00:00
- Install CCGS agent/skill/hook framework (.claude/, docs templates, GitHub issue/PR templates) - Configure CLAUDE.md and technical-preferences.md for Unity 6000.3.3f1 (C#, URP, collider-based mouse picking) - Point engine reference import at docs/engine-reference/unity/ and remove unused Godot/Unreal reference docs - Add Version Awareness section to unity-specialist agent - Set production/review-mode.txt to lean - Add design/gdd/combat-mode.md: reverse-documented GDD for the vs-AI Combat mode, confirming it as the foundation for the guion.md narrative campaign (separate from Classic mode) - Add docs/architecture/ADR-0001: documents the existing board-state/singleton/per-mode architecture and the decision to keep Classic and Combat modes permanently separate - Add docs/architecture/control-manifest.md: programmer rules sheet sourced from ADR-0001 and Unity 6 engine reference docs - Continue in-progress Mono/Classic and Mono/Combat refactor (ScoreManager, scene/prefab updates) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1.3 KiB
1.3 KiB
paths
| paths | |
|---|---|
|
Engine Code Rules
- ZERO allocations in hot paths (update loops, rendering, physics) — pre-allocate, pool, reuse
- All engine APIs must be thread-safe OR explicitly documented as single-thread-only
- Profile before AND after every optimization — document the measured numbers
- Engine code must NEVER depend on gameplay code (strict dependency direction: engine <- gameplay)
- Every public API must have usage examples in its doc comment
- Changes to public interfaces require a deprecation period and migration guide
- Use RAII / deterministic cleanup for all resources
- All engine systems must support graceful degradation
- Before writing engine API code, consult
docs/engine-reference/for the current engine version and verify APIs against the reference docs
Examples
Correct (zero-alloc hot path):
# Pre-allocated array reused each frame
var _nearby_cache: Array[Node3D] = []
func _physics_process(delta: float) -> void:
_nearby_cache.clear() # Reuse, don't reallocate
_spatial_grid.query_radius(position, radius, _nearby_cache)
Incorrect (allocating in hot path):
func _physics_process(delta: float) -> void:
var nearby: Array[Node3D] = [] # VIOLATION: allocates every frame
nearby = get_tree().get_nodes_in_group("enemies") # VIOLATION: tree query every frame