Dino Land

No-build browser game using plain HTML/CSS/JS/PHP.

Run locally

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 background music when turned ON.
  • Turning music OFF performs a short fade to mute.

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.
Description
No description provided
Readme 217 KiB
Languages
JavaScript 85.9%
Hack 5.5%
CSS 4.3%
PHP 4.3%