DinoLand/README.md

65 lines
2.4 KiB
Markdown

# Dino Land
No-build browser game using plain **HTML/CSS/JS/PHP**.
## Run locally
```bash
cd "/Users/lawsonawhittington/.openclaw/workspace/Dino Land"
php -S 0.0.0.0:8000
```
Open on the same machine: http://localhost:8000
LAN test URL (from another device on your network):
1. Find your LAN IP:
`python3 -c "import socket;s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM);s.connect(('8.8.8.8',80));print(s.getsockname()[0]);s.close()"`
2. Open: `http://<YOUR_LAN_IP>:8000` (example: `http://192.168.1.25:8000`)
## Controls
- **Up Arrow**: jump
- **Down Arrow**: duck
- **Left Arrow**: walk backward
- **Right Arrow**: walk forward
## Gameplay Rules
- TRex starts with **5 hearts** (or **10 hearts** in VIP mode).
- Easy and Medium end with a portal that advances to the next difficulty while preserving score.
- Moving forward earns score (**+1 per forward step unit**).
- Water gaps cause instant death if landed in.
- Ant collision costs 1 heart; jumping on ants crushes them.
- Pterodactyls unlock after score > 100 (duck to avoid).
- Meteors unlock after score > 250.
- On death: top-10 leaderboard is shown; top-10 runs can be saved.
## Leaderboard persistence
- Backend endpoint: `api/scores.php`
- Data file: `data/scores.json`
## Audio / music toggle behavior
- Music defaults to **OFF** when no preference exists in localStorage.
- Toggle preference key: `dinoLand.musicEnabled` (`'1'` on, `'0'` off).
- First user click on the music toggle resumes/unlocks Web Audio and starts procedural music when turned ON.
- Music state is context-aware:
- **Title/start screen** uses title music profile.
- **Gameplay** switches profile by biome (Plains, Desert, Jungle, Snow, and Lava mapped to the Volcano profile).
- **Death screen** switches to death music profile.
- **Restart/respawn to start screen** returns to title profile.
- Turning music OFF performs a short fade to mute; turning back ON fades in the current state profile.
## Quick verification checklist
1. Start server and open game.
2. Confirm score increases while moving right.
3. Confirm hearts drop on ant / pterodactyl / meteor collisions.
4. Confirm water causes immediate game over.
5. Confirm leaderboard loads and score save works.
6. With a fresh browser profile, confirm music button starts as `🔇 Music: Off`.
7. Click toggle to ON and confirm audible looping background music starts.
8. Click toggle to OFF and confirm music fades/mutes.
9. Reload page and confirm toggle state persists.