Every session is different. Every decision changes your story.
A never-ending browser RPG with procedurally generated worlds, AI-driven NPCs and quests, dynamic economies, and real-time multiplayer — all playable with zero installation.
| Feature | Status |
|---|---|
| 🗺️ Procedural worlds (seeded noise, biomes, cities, dungeons) | ✅ DONE |
| 🚶 Player movement (WASD + touch joystick) | ✅ DONE |
| ⚔️ Top-down action combat | 🔄 PARTIAL (client simulation, server-authoritative rewards) |
| 🤖 AI-generated quests & NPC dialogue | 🔄 PARTIAL (dormant provider code, template fallback default) |
| 💾 Auto-save (localStorage → server sync) | ✅ DONE |
| 🌦️ Dynamic weather system | ✅ DONE |
| 🎒 Inventory & loot system | ✅ DONE (server-authoritative) |
| 👥 Multiplayer (room codes) & Trading | ✅ DONE (server-authoritative transaction trade completion) |
| 🏙️ Living world (Guilds, Dynamic Economy) | 🔄 PARTIAL (server Guild CRUD done, roster/economy incomplete) |
| 🎭 AI Dungeon Master & Seasonal Events | 🔄 PARTIAL (proximity events + night FX done, memory/Dungeon Master planned) |
| 🌐 Localization & Settings UI | ✅ DONE |
| 🛠️ Creator Tools | 📅 PLANNED |
- Node.js ≥ 18
- npm ≥ 9
git clone https://github.com/amarjaleelbanbhan/Infinty-Realms.git
cd Infinty-Realms
cp .env.example .env
npm install# Run both client + server
npm run dev
# Or individually
npm run dev:client # http://localhost:5173
npm run dev:server # http://localhost:3001Open http://localhost:5173 in your browser. No account needed — a guest session is created automatically.
Infinty-Realms/
├── client/ # React + Vite + Phaser.js (the game)
├── server/ # NestJS + Prisma + SQLite (API + WebSocket)
├── shared/ # TypeScript types shared between client & server
├── ai/ # LLM integration (mock / Ollama / OpenAI)
├── docker/ # Docker Compose for production
├── docs/ # Architecture Decision Records
└── .github/ # CI/CD workflows
| Layer | Technology |
|---|---|
| Game Engine | Phaser.js 3 |
| Frontend | React 18 + TypeScript + Vite |
| Styling | Tailwind CSS v3 |
| State | Zustand |
| Backend | NestJS + TypeScript |
| Database | SQLite (dev) → PostgreSQL (prod) |
| ORM | Prisma |
| Real-time | Socket.IO |
| AI | Mock → Ollama → OpenAI-compatible |
| Hosting | Vercel (client) + Railway (server) |
The game uses a tiered AI system. Set AI_PROVIDER in .env:
| Provider | Setup | Quality |
|---|---|---|
mock |
Zero config | Template-based quests |
ollama |
Install Ollama + ollama pull llama3 |
Good, local, private |
openai |
Set OPENAI_API_KEY |
Best quality |
| Action | Keyboard | Mobile |
|---|---|---|
| Move | WASD / Arrow Keys | Joystick |
| Attack | Space / Left Click | Attack button |
| Interact | E | Interact button |
| Inventory | I | Inventory button |
| Quest Log | Q | Quest button |
| Pause | Escape | Menu button |
Every world is generated from a seed using:
- Simplex noise for terrain heightmap
- Biome assignment based on height + moisture
- Poisson disk sampling for city placement
- Midpoint displacement for river carving
- Cellular automata for dungeon generation
Biomes: Ocean · Beach · Plains · Forest · Desert · Snow · Volcano · Swamp
- Phase 0 — Truth Pass — Full repository audit and correction of false claims ✅ DONE
- Phase 1 — Foundation — Monorepo path fixes, NestJS boot, Jest/Vitest infrastructure, server-authoritative movement/trade/inventory/combat rewards, anti-cheat, real party invites ✅ DONE
- Phase 2 — Core Gameplay — Biome-reactive magic grimoire (DONE), diagonal sliding movement feel (DONE), dodge rolling mechanics (DONE) 🔄 PARTIAL
- Phase 3 — World — Deepening procedural gen, cities/villages, day/night cycle, weather 📅 PLANNED
- Phase 4 — AI — NPC memory, real AI dialogue/quest generator defaults 📅 PLANNED
- Phase 5 — Multiplayer — Guild roster refinement, party sync, chat moderation 📅 PLANNED
- Phase 6 — Living World — NPC schedules, faction relationships, dynamic wars 📅 PLANNED
- Phase 7 — Creator Platform — Modding API, quest/NPC/dungeon editors 📅 PLANNED
- Phase 8 — Infinite Game — Player politics, kingdoms, legendary events 📅 PLANNED
Contributions are welcome! See CONTRIBUTING.md.
- Fork the repo
- Create a feature branch:
git checkout -b feat/amazing-feature - Commit:
git commit -m 'feat: add amazing feature' - Push:
git push origin feat/amazing-feature - Open a Pull Request
MIT © Infinity Realms Contributors
Built with ❤️ — Open Source Forever