49 lines
1.7 KiB
Markdown
49 lines
1.7 KiB
Markdown
# Soulless Necromancer
|
|
|
|
Web multiplayer necromancer game: build a zombie or shadow army, roam a shared map, and delve into click-combat crypts.
|
|
|
|
## Stack
|
|
|
|
- **Client:** React + Vite + TypeScript
|
|
- **Server:** Node.js + Express + Socket.io + TypeScript
|
|
- **Database:** PostgreSQL + Prisma
|
|
|
|
## Prerequisites
|
|
|
|
- Node.js 20+
|
|
- Docker (for PostgreSQL)
|
|
|
|
## Setup
|
|
|
|
```bash
|
|
# From repo root
|
|
npm install
|
|
npm run db:setup # starts Postgres on :5433, pushes schema, seeds items
|
|
npm run dev # API :3001 + Vite :5173
|
|
```
|
|
|
|
Open [http://localhost:5173](http://localhost:5173).
|
|
|
|
Postgres runs on **port 5433** by default (see `server/.env`) to avoid clashing with a local Postgres on 5432.
|
|
|
|
## Play loop
|
|
|
|
1. **Register** with email, password, character name, and specialty (`ZOMBIE` or `SHADOW`).
|
|
2. **World map** — click tiles to move (max 3 Manhattan steps). Other online players appear live.
|
|
3. **Portal** — stand next to the pulsing portal tile and click it to enter your personal dungeon instance.
|
|
4. **Dungeon** — click empty tiles to **move** (Move mode) or switch to **Summon** to place units. Summons walk toward enemies when nothing is in range; combat is automatic in range. Clear the floor for XP, loot, and floor progression.
|
|
5. **Progression** — spend stat points on level-up; equip relics from the Relics panel. Outside dungeons, HP and energy regenerate slowly while you are online on the world map.
|
|
|
|
## Useful scripts
|
|
|
|
| Script | Description |
|
|
|--------|-------------|
|
|
| `npm run db:up` | Start Postgres container |
|
|
| `npm run db:migrate` | Apply Prisma migrations |
|
|
| `npm run db:seed` | Seed item catalogue |
|
|
| `npm run dev` | Run client + server |
|
|
|
|
## Env
|
|
|
|
Server env lives in `server/.env` (see defaults for local Docker Postgres).
|