aether-shards/.agent/rules/core/RULE.md

1.3 KiB

description globs
Standards for Three.js integration, VoxelGrid, and the Game Loop. src/core/*.js, src/grid/*.js**

Game Engine Standards

The Game Loop

  • Responsibility: The GameLoop is the "God Object" responsible for tying systems together. It owns the Scene, Renderer, Grid, and Managers.
  • Phases: The loop must respect the current phase: INIT, DEPLOYMENT, COMBAT, RESOLUTION.
  • Input Routing: The loop routes raw inputs from InputManager to the appropriate system (e.g., MovementSystem vs SkillTargeting) based on the current Phase.

Voxel System

  1. Separation of Concerns:
    • VoxelGrid.js: Pure Data. Stores IDs in Uint8Array. Handles physics queries (isSolid). No Three.js dependencies.
    • VoxelManager.js: Rendering. Reads VoxelGrid and updates THREE.InstancedMesh. Handles materials and textures.
  2. Performance:
    • Never create individual THREE.Mesh objects for terrain. Use InstancedMesh.
    • Hide "Air" voxels by scaling them to 0 rather than removing them from the InstanceMatrix (unless refactoring for chunking).
  3. Coordinates:
    • Use {x, y, z} objects for positions.
    • Y is Up.
    • Grid coordinates are integers.

Input

  • Use InputManager for all hardware interaction.
  • Support Mouse, Keyboard, and Gamepad seamlessly.
  • Raycasting should return integer Grid Coordinates.