benjivers/val Public Public: anyone can read this; the crew can change it.
README: turn the "Shape" section into a list (#37)
Requested-by: benjivers <[email protected]> Co-authored-by: benjivers <[email protected]>
1 file
changed +25
−14
README.md +25 −14
| @@ -182,20 +182,31 @@ says how. | ||
| 182 | 182 | |
| 183 | 183 | ## Shape |
| 184 | 184 | |
| 185 | `src/engine/` the machinery any game on this server stands on — the grid and its collision (`grid.ts`, `glide.ts`), the bot aim model (`aim.ts`) and the served match with its idle gate, per-address seats, positionless spectator view and per-viewer vision filter (`arena.ts`); nothing in it imports the game, and `src/engine/boundary.test.ts` keeps it that way · `static/engine/` the client feel stack and renderer — interpolation, prediction, presence, yaw, steer, raycast, scene, slices, resolution, budget, topdown, gun · `src/map.ts` this map's rows and what its letters mean · `src/weapons.ts` the damage table · | |
| 186 | `src/economy.ts` credits · `src/abilities.ts` the agent kits · | |
| 187 | `src/match.ts` the round loop (`tick(state, dt)` is the whole game and takes | |
| 188 | no clock) · `src/bots.ts` the seats nobody is in · `src/arena.ts` the one | |
| 189 | live match and its sockets · `src/server.ts` the door · `static/` the browser client — | |
| 190 | `val.js` wires the socket, the keys and the HUD, `raycast.js` is the ray | |
| 191 | maths, `scene.js` the first-person view, `slices.js` batches its wall | |
| 192 | columns, `resolution.js` and `budget.js` decide how wide to draw it, | |
| 193 | `presence.js` fades bodies into sight and marks where they left it, | |
| 194 | `topdown.js` the minimap, | |
| 195 | `banner.js` the words on the view when a round turns, | |
| 196 | `gun.js`, `beep.js`, `steer.js`, `roster.js`, `yaw.js`, `interp.js` and `prompt.js` the rest; the server bundles | |
| 197 | them into one content-named file at start-up. The rules are pure functions and the tests play whole matches | |
| 198 | headlessly. | |
| 185 | - `src/engine/` — the machinery any game on this server stands on: the grid and its collision (`grid.ts`, `glide.ts`), the bot aim model (`aim.ts`) and the served match with its idle gate, per-address seats, positionless spectator view and per-viewer vision filter (`arena.ts`). Nothing in it imports the game, and `src/engine/boundary.test.ts` keeps it that way. | |
| 186 | - `static/engine/` — the client feel stack and renderer: interpolation, prediction, presence, yaw, steer, raycast (the ray maths), scene, slices, resolution, budget, topdown, gun. | |
| 187 | - `src/map.ts` — this map's rows and what its letters mean. | |
| 188 | - `src/weapons.ts` — the damage table. | |
| 189 | - `src/economy.ts` — credits. | |
| 190 | - `src/abilities.ts` — the agent kits. | |
| 191 | - `src/state.ts` — the shape of a match, types only. | |
| 192 | - `src/match.ts` — the round loop; `tick(state, dt)` is the whole game and takes no clock. | |
| 193 | - `src/bots.ts` — the seats nobody is in. | |
| 194 | - `src/arena.ts` — the one live match and its sockets, built on `src/engine/arena.ts`. | |
| 195 | - `src/killfeed.ts` — the kill feed, read off the match a tick at a time. | |
| 196 | - `src/db.ts` — finished match results, in SQLite under `FORGE_APP_DATA`. | |
| 197 | - `src/server.ts` — the door. | |
| 198 | - `src/pages/game.ts` — the server-rendered page. | |
| 199 | - `src/tty.ts` — the terminal interface. | |
| 200 | - `src/otel.ts` — tracing, in one file. | |
| 201 | - `static/` — the browser client; the server bundles it into one content-named file at start-up: | |
| 202 | - `val.js` wires the socket, the keys and the HUD. | |
| 203 | - `scene.js` is the first-person view and `topdown.js` the minimap, each this game's layer over the engine's. | |
| 204 | - `banner.js` is the words on the view when a round turns. | |
| 205 | - `watch.js` is the spectator view. | |
| 206 | - `beep.js`, `roster.js` and `prompt.js` are the rest. | |
| 207 | - `static/engine/` holds the rest of the client: `gun.js`, `steer.js`, `yaw.js`, `interp.js` and `predict.js` for the feel, `slices.js` to batch wall columns, `resolution.js` and `budget.js` to decide how wide to draw, `presence.js` to fade bodies into sight and mark where they left it. | |
| 208 | ||
| 209 | The rules are pure functions and the tests play whole matches headlessly. | |
| 199 | 210 | |
| 200 | 211 | ## It only runs while somebody is there |
| 201 | 212 |