|
1 | | -# 🌇 Stroll — A Peaceful City Walk |
| 1 | +# Stroll |
2 | 2 |
|
3 | | -A calm, relaxing 3D browser walk through a procedurally generated city at golden hour. Built with **Three.js** and vanilla ES modules. |
| 3 | +A browser-based evening walk through a procedural city. Three.js, Web Audio, no framework. |
4 | 4 |
|
5 | | -**Docs:** [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) · [`docs/PROJECT_PLAN.md`](docs/PROJECT_PLAN.md) · [`docs/FEATURES.md`](docs/FEATURES.md) |
| 5 | +**Documentation:** [Architecture](docs/ARCHITECTURE.md) · [Plan](docs/PROJECT_PLAN.md) · [Features](docs/FEATURES.md) |
6 | 6 |
|
7 | | - |
8 | | - |
9 | | - |
10 | | -## Quick start |
11 | | - |
12 | | -**No install** — open `index.html` in a modern browser (Chrome, Firefox, Edge). |
13 | | - |
14 | | -**With tooling:** |
| 7 | +## Run locally |
15 | 8 |
|
16 | 9 | ```bash |
| 10 | +# Static (no build) |
| 11 | +open index.html |
| 12 | + |
| 13 | +# Dev server |
17 | 14 | npm install |
18 | | -npm run dev # http://localhost:5173 |
19 | | -npm run build # output in dist/ |
20 | | -npm test # Playwright smoke tests |
| 15 | +npm run dev |
| 16 | + |
| 17 | +# Production build + tests |
| 18 | +npm run build |
| 19 | +npm test |
21 | 20 | ``` |
22 | 21 |
|
23 | | -Enable sound with **M** for the full ambient + lofi experience. |
| 22 | +Enable audio with **M** after the page loads (browser autoplay policy). |
24 | 23 |
|
25 | 24 | ## Controls |
26 | 25 |
|
27 | | -| Key | Action | |
28 | | -|-----|--------| |
29 | | -| W A S D | Walk | |
30 | | -| Mouse | Look | |
31 | | -| Right click | Interact with flowers | |
| 26 | +| Input | Action | |
| 27 | +|-------|--------| |
| 28 | +| WASD | Move | |
| 29 | +| Mouse | Look (pointer lock) | |
| 30 | +| RMB | Interact with flowers | |
32 | 31 | | P | Photo mode | |
33 | | -| N | Meditation | |
34 | | -| B | Ambient mood | |
| 32 | +| N | Rest / breathing | |
| 33 | +| B | Cycle ambience | |
35 | 34 | | J | Journal | |
36 | | -| R | Weather | |
37 | | -| G | Treasure hunt / breathing game | |
| 35 | +| R | Rain toggle | |
| 36 | +| G | Activity (treasure or breathing) | |
38 | 37 | | Esc | Pause | |
39 | 38 |
|
40 | | -Combat is **off by default**. Set `FEATURE_WEAPON = true` in `js/config.js` to enable shooting (left click). |
| 39 | +Combat is disabled by default. Set `FEATURE_WEAPON = true` in `js/config.js` to enable. |
41 | 40 |
|
42 | | -## Highlights |
| 41 | +## Stack |
43 | 42 |
|
44 | | -- Procedural city, day/night cycle, NPCs, traffic, companion dog, wildlife |
45 | | -- Collectibles + enhanced pickups (gems, artifacts, notes) |
46 | | -- Achievements, waypoints, discovery journal |
47 | | -- Photo mode, meditation, dynamic rain |
48 | | -- Quality presets (auto low on mobile) |
49 | | -- Accessible pause/journal focus traps and reduced-motion support |
| 43 | +- Three.js r160 (ES modules) |
| 44 | +- Optional Vite build for deployment |
| 45 | +- Playwright smoke tests in CI |
50 | 46 |
|
51 | 47 | ## Deploy |
52 | 48 |
|
53 | | -GitHub Pages (project site): push to `main` — workflow builds with `BASE_PATH=/Stroll/` and deploys `dist/`. |
54 | | - |
55 | | -Live: [neutral-Stage/Stroll](https://github.com/neutral-Stage/Stroll) (enable Pages → GitHub Actions in repo settings). |
56 | | - |
57 | | -## Project structure |
58 | | - |
59 | | -``` |
60 | | -├── index.html |
61 | | -├── css/ Design tokens + HUD + overlays |
62 | | -├── js/ |
63 | | -│ ├── main.js Entry |
64 | | -│ ├── game-loop.js Frame updates |
65 | | -│ ├── config.js Tunables & feature flags |
66 | | -│ └── … City, audio, collectibles, HUD, etc. |
67 | | -├── tests/ Playwright |
68 | | -└── docs/ Architecture & plan |
69 | | -``` |
| 49 | +GitHub Pages workflow publishes `dist/` at `/Stroll/` when `main` is pushed. Enable **Pages → GitHub Actions** in repository settings. |
70 | 50 |
|
71 | 51 | ## License |
72 | 52 |
|
73 | | -MIT — use and modify freely. |
74 | | - |
75 | | ---- |
76 | | - |
77 | | -*There's nowhere to be. Just stroll.* 🌅 |
| 53 | +MIT |
0 commit comments