A tower-climbing ARPG built with React Three Fiber, Drei, and Rapier.
- 3 Classes - Warrior, Archer, Mage with unique skills
- Click-to-move controls with auto-attack toggle
- Procedural dungeons - Tower floors with rooms, corridors, and monsters
- Leveling system - XP from kills, attribute points on level up
- Skill system - Unlock skills at levels 2, 4, 6
- Dynamic combat - 180° targeting cone, auto-attack toggle
- Floating damage numbers - Visual combat feedback
- Persistence - Characters saved to localStorage
- Multiplayer - Up to 5 players via WebRTC
npm install
npm run dev- CONTROLS.md - Player controls reference
- GAME-DESIGN.md - Game systems and balance
- ARCHITECTURE.md - Technical architecture
- Create a character (Warrior, Archer, or Mage)
- Click monsters to attack, or press '1' to toggle auto-attack
- Kill monsters to gain XP and level up
- Press 'C' to allocate attribute points
- After 5 kills, click the tower entrance to enter the dungeon
- Fight through procedurally generated floors
- Use the exit portal to return to town
Multiplayer requires the signaling server. See signaling/README.md for setup.
# .env.local
VITE_SIGNALING_URL=ws://your-vps:8080/ws| Command | Description |
|---|---|
npm run dev |
Start dev server |
npm run build |
Build for production |
npm run lint |
Run oxlint |
npm run lint:fix |
Run oxlint with auto-fix |
npm run fmt |
Format with oxfmt |
npm run fmt:check |
Check formatting |
npm run typecheck |
Run TypeScript check |
- 3D: React Three Fiber + Drei
- Physics: Rapier
- State: Zustand
- Build: Vite
- Lint/Format: Oxlint + Oxfmt