Hallowmere
A dark fantasy action RPG built with Three.js. Travel between two villages, speak to four characters, fight randomized wilderness packs, collect and equip loot, silence the Bellkeeper in Hallowmere, then explore three harder regions connected by hidden underground passages.
Captured from the running game in Ashwick Village.
## Run
Coding tasks use isolated worktrees and merge completed, validated changes into local `main`. See [the worktree workflow](docs/worktrees.md) for setup, development ports, and conflict recovery.
Requires Node.js 22 or newer. Run `npm ci` once to install the multiplayer server dependency. The pinned Three.js 0.180.0 runtime is included locally.
```sh
npm run dev
```
Open **http://127.0.0.1:5182**, or the printed Network URL to play from another device on the same network. In a task worktree, `npm run dev` uses that worktree's reserved port instead of 5182. The frontend is in `dist/`. Gameplay requires the shared WebSocket backend, included in the development server; a static host must point to a deployed backend. A WebGL2-capable browser is required. Sound begins after the first interaction.
The dev server restarts when its code or imported gameplay modules change. A restart creates a new vigil, and open game tabs reconnect automatically. `npm start` runs the production server without watching files.
If the game stays on the connection screen with a WebSocket error, check **http://localhost:5182/health**. It should return JSON with `ok: true` and `version: 3`. A 404 means an older or static-only server is still using port 5182: stop that process and restart with `npm run dev`. Reloading the browser alone cannot update a running server.
## GitHub Pages
The [Pages workflow](.github/workflows/pages.yml) tests and validates the game on pull requests and pushes to `main`. Pushes to `main` also deploy the checked-in `dist/` directory when a multiplayer backend is configured. You can redeploy from **Actions → Deploy game to GitHub Pages → Run workflow** on `main`.
For the first deployment, select **GitHub Actions** under **Settings → Pages → Build and deployment → Source**, then push `main`. The game will be available at **https://miguelsolorio.github.io/hallowmere/** after the deployment succeeds. Under **Settings → Secrets and variables → Actions → Variables**, set `MULTIPLAYER_SERVER_URL` to the deployed backend’s `wss://