A modern web-based reimagining of the classic Lode Runner game with procedural level generation, multiple themes, and shareable seeds.
- Procedural Level Generation - Infinite unique levels generated from shareable seed codes
- 4 Difficulty Levels - Easy, Normal, Hard, and Ninja with scaling complexity
- 5 Visual Themes - Cyber Blue, Matrix, Sunset Chrome, Neon Noir, and Classic C64
- Seed Sharing - Share specific levels with friends via URL or seed code
- Adjustable Speed - 6 speed settings from 0.5x to 2x
- CRT Filter - Optional retro scanline effect
- Procedural Music - Unique chiptune soundtrack generated for each level from the same seed
- Sound Effects - Retro-style audio with separate mute options for SFX and music
- Responsive Controls - Keyboard support with on-screen hints
| Key | Action |
|---|---|
| Arrow Keys | Move |
| Z | Dig Left |
| X | Dig Right |
| +/- | Adjust Speed |
| P | Pause |
| T | Change Theme |
| C | Toggle CRT Effect |
| M | Mute/Unmute All |
| B | Toggle Music |
| R | Restart Level |
| ESC | Return to Menu (double-tap) |
Collect all the gold on each level, then climb to the top to escape. Avoid or trap enemies by digging holes in the brick floor. Enemies caught in holes will be stunned and drop any gold they're carrying.
Visit loderunner2099.exe.xyz to play instantly!
# Clone the repository
git clone https://github.com/jgbrwn/loderunner2099.git
cd loderunner2099
# Install dependencies
npm install
# Start development server
npm run devThen open http://localhost:5173 in your browser.
npm run buildThe built files will be in the dist/ directory.
For production deployment with optimal caching, see DEPLOYMENT.md.
- Game Engine: Phaser 3 - HTML5 game framework
- Language: TypeScript
- Build Tool: Vite - Fast development and optimized builds
- Production Server: Go with optimized caching headers
- Process Manager: systemd (for Linux deployment)
loderunner2099/
├── src/
│ ├── main.ts # Entry point
│ ├── config.ts # Game configuration
│ ├── scenes/
│ │ ├── MenuScene.ts # Main menu
│ │ └── GameScene.ts # Core gameplay
│ ├── entities/
│ │ ├── Player.ts # Player character
│ │ └── Enemy.ts # Enemy AI
│ ├── level/
│ │ ├── LevelGenerator.ts # Procedural generation
│ │ ├── TileMap.ts # Level data structure
│ │ └── SolvabilityChecker.ts # Level validation
│ └── utils/
│ ├── SeededRandom.ts # Deterministic RNG
│ └── SoundManager.ts # Audio handling
├── public/ # Static assets
├── dist/ # Production build output
├── server/ # Go production server (after build)
└── docs/screenshots/ # Documentation images
| Theme | Description |
|---|---|
| Cyber Blue | Default neon cyberpunk aesthetic |
| Matrix | Green-on-black digital rain style |
| Sunset Chrome | Warm orange and purple tones |
| Neon Noir | High contrast black with neon accents |
| Classic C64 | Authentic Commodore 64 color palette |
Ninja difficulty level with increased complexity and enemies
| Difficulty | Complexity | Ladders | Enemies | Gold | Speed | Music |
|---|---|---|---|---|---|---|
| Easy | Low | Many | 1-2 | 5-8 | 0.7x | 100-120 BPM, major/pentatonic |
| Normal | Medium | Moderate | 2-3 | 8-12 | 1.0x | 120-140 BPM, minor/dorian |
| Hard | High | Few | 3-4 | 12-16 | 1.2x | 140-160 BPM, dorian/phrygian |
| Ninja | Maximum | Sparse | 4-5 | 16-20 | 1.4x | 160-180 BPM, phrygian/minor |
Each level has a unique chiptune soundtrack generated procedurally from the same seed as the level itself. This means:
- Deterministic: The same seed always produces the same music
- Unique per level: Each level in a playthrough has different music
- Difficulty-scaled: Harder difficulties have faster, more intense music
- Authentic retro sound: Square wave melody, triangle wave bass
Press B to toggle music on/off (separate from the M mute which silences everything).
Share a specific level by copying the URL with seed and difficulty parameters:
https://loderunner2099.exe.xyz/?seed=CYBER1&diff=normal
Or type a seed code directly in the menu and share it with friends!
This project is licensed under the MIT License - see the LICENSE file for details.
- Original Lode Runner by Douglas E. Smith (1983)
- Inspired by the C64 version and various ports
- Built with Phaser 3
