50 lines
2.1 KiB
Markdown
50 lines
2.1 KiB
Markdown
# CLAUDE.md
|
||
|
||
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||
|
||
## Project Overview
|
||
|
||
This is a Phaser 3 HTML5 top-down space shooter game (Asteroids-inspired). The project is currently in the early implementation phase — `Software.md` is the authoritative game design specification.
|
||
|
||
## Local Development
|
||
|
||
Start the development server (serves files at `http://localhost:8000`):
|
||
|
||
```bash
|
||
./start_web.sh
|
||
# or equivalently:
|
||
python3 -m http.server 8000
|
||
```
|
||
|
||
There is no build step, bundler, or package manager. Open `index.html` directly in the browser via the HTTP server.
|
||
|
||
## Technical Constraints
|
||
|
||
- **Framework:** Phaser 3 (loaded via CDN or local file)
|
||
- **Language:** JavaScript ES6 modules using native `import`/`export`
|
||
- **No bundler** (no Webpack, Vite, Rollup, etc.) — modules must be referenced directly and served over HTTP (not `file://`)
|
||
- **Resolution:** 1600×900
|
||
- **Graphics:** Vector/placeholder graphics first; sprite replacement comes later
|
||
|
||
## Game Design Summary (from Software.md)
|
||
|
||
**Levels:** A level ends when all asteroids and alien ships are destroyed. Player always respawns at screen center on new level.
|
||
|
||
**Asteroids:**
|
||
- Spawn at level start, rotate slowly in a random direction/speed
|
||
- Large → 1–3 mid or small fragments on destruction
|
||
- Mid → 2 small fragments on destruction
|
||
- Small → fully destroyed
|
||
|
||
**Alien Ships:** Periodically attack, move toward the player, fire occasionally. Destroyed by a single player shot.
|
||
|
||
**Controls:**
|
||
- Ship rotates to follow the mouse cursor at a fixed rate (360° turn = 2 seconds)
|
||
- Left mouse button = thrust/accelerator
|
||
- `a` key or `space` = fire weapon
|
||
- Zero-gravity physics: ship accelerates over ~2 seconds to full speed, decelerates gradually when thrust stops
|
||
|
||
## Architecture Guidelines
|
||
|
||
Organize game entities as separate ES6 modules (e.g., `Player.js`, `Asteroid.js`, `AlienShip.js`, `Bullet.js`, `GameScene.js`). Each module exports its class; scenes import and instantiate them. Avoid circular dependencies — prefer a single scene that owns all game objects.
|