diff --git a/README.md b/README.md index 58d0ee9..37e34ba 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,8 @@ Endless driving survival game. - **Phase 8** — recognition: being noticed, being hunted, and getting away. - **Phase 9** — stakes: a crash that costs something, a death that costs something, a chase you can lose, and a town you can navigate. +- **Phase 10** — a world that behaves: traffic with lanes, crews you can read, + walls that are actually there, and money you can spend. ## Running @@ -300,8 +302,13 @@ no way to end. Everything is now anchored to that measured figure, and damage is capped per step — a crash is a pile of contacts across several steps plus whatever the car -scrapes on the way to a standstill, and that sum has no natural bound. A hard -crash costs about 15% of the chassis and 5% of its ceiling. +scrapes on the way to a standstill, and that sum has no natural bound. + +What it costs is deliberately brutal. That reference head-on leaves the chassis +at **23%**, the tyres at 61% and the engine at 75%, ordered by what a collision +actually ruins. One is a disaster you drive home from; two in a row is the end +of the car. An earlier calibration left it at 65% and perfectly driveable, which +made hitting a building at ninety an inconvenience rather than a decision. Baseline wear came down with it. Tyres shed 8e-5 per metre, so twelve clean kilometres took them from new to ruined while a two-kilometre round trip paid @@ -332,6 +339,21 @@ written off the instant you are handed it, and the only way out of the campaign is wiping it. A genuinely miserable car you can still drive is the interesting version of that ending rather than the broken one. +### The five seconds before you wake up + +The run does not end the instant the car does. Control goes, the camera leaves +the bumper and climbs away to sixty metres — turning slowly — until the street, +whatever you hit and whoever is standing around watching are all in frame. The +point of the shot is not the car; by then the car is a fact. It is *where* this +happened, which is the thing you have to drive back out to. + +The world keeps running underneath it, because a death cam over a frozen world +is a screenshot rather than a moment. What stops is the driver: no throttle, no +board, no overhaul, and no quietly finishing the job by virtue of having stopped +moving on top of the target. Anyone shooting stops a quarter of the way in — +the burst that killed you should finish, but standing over a wreck emptying +magazines into it reads as the enemy beating a dead horse. + Nothing about any of it is announced. The front moving against you is something you find out by driving back out there. @@ -362,6 +384,32 @@ Let the road cool and the whole thing is abandoned. **Traffic and people.** Civilian cars route across the network with somewhere to be; people wander on foot near the buildings. Both scatter when shooting starts. +**And they drive like traffic.** Cars hold a line parallel to the centreline, +offset right by a share of the road's own half-width — a track gets a nudge, a +trunk gets a lane — so two meeting head-on are on opposite sides of the road +instead of in the same metre of tarmac. Steering is rate-limited, so a +right-angle junction is a turn rather than one frame of instant pivot. They lift +off for the car in front, and overlapping vehicles are pushed apart, because +following distance does not cover a merge: two cars converging on a junction are +more than ninety degrees apart right up until they both turn onto the same +heading and are already touching. + +Each of those rules is narrower than it first looks, and the narrowness is the +point. Only civilians defer, or a patrol queues politely behind a bus and never +reaches the road it was dispatched to. Only for cars going roughly the same way, +or two meeting on a single track each wait forever for the other. And separation +is same-direction only, since oncoming cars are already a lane apart — which on +a narrow road is less than the separation radius, so pushing them apart undid +the lane discipline that put them there. + +**Armed vehicles carry a visible crew.** A patrol car used to be an empty box +that occasionally emitted tracers. There is now a man standing up out of it, and +his weapon comes up only once they have decided about you: across his lap +otherwise, levelled and tracking when the car is hunting or when something of +the other army is in range. That difference is the point — being recognised was +a meter filling up in the corner of the screen, and it is now something you can +watch happen across a street. + **Your own side is standing in your own streets.** Liberated territory read as empty — no patrols by design, and nobody else either — so the safest part of the map was also the deadest, and coming home felt like arriving nowhere rather than @@ -376,6 +424,13 @@ They are placed by checking who holds the ground they would *stand* on rather than the band the player is in, since near a border those are different answers, and they leave when the line moves over them. +**Your own side has vehicles too.** Convoys route the network like traffic, so +they inherit lane discipline and following distance for nothing, but only +between junctions your side holds: 4 at home, 2 in contested ground, none past +it. Fewer than the men on foot, because a truck is scarcer than a rifle and +because friendly traffic outnumbering the civilian kind would turn every road +into a convoy. They carry the same crew the enemy cars do. + ### The war you are driving through Skirmishes break out between the two armies on contested and occupied ground, @@ -392,6 +447,23 @@ Buildings stop bullets, which is what makes cover worth anything. Hits are route through the same wear model as a crash, so being shot costs you ceiling too — it is permanent in the same way everything else is. +**Nothing shoots or walks through a wall.** Rounds always died against +buildings, but nothing checked before pulling a trigger, so units emptied +magazines into the concrete between them and a target they could not see — what +you saw from the car was tracers coming out of a solid wall. Firing now needs +the same line of sight the round does. Free movement wrote straight into x and z +too, so pedestrians, militia, fighters and fleeing civilians all walked through +buildings; they now take the same detour the hunters do, and spawns retry rather +than dropping somebody inside a wall on the first frame. + +Underneath both was one bug worth recording. The building lookup grid stepped +the world coordinate by the cell size from `x-reach` to `x+reach`, but a +building's reach is about 7 m and a cell is 24 m — so the loop always took +exactly one step, every building registered a single cell, and it silently +vanished from the other three it straddled. Points in those cells read as open +ground for bullets, for line of sight and for people. Six units in ninety were +standing inside buildings; now none are. + **The enemy does not shoot at you by default.** You are an undercover driver, not a target. They open up only past the line *and* on a road they have already checkpointed — that is, a road you personally made notorious. @@ -451,6 +523,9 @@ corner. The panel has `−` / `+` buttons for the car's condition, because "drive a wrecked car for a minute" is something you want to do *while driving* rather than while typing into a console. +The panel also has `−¤` / `+¤`, so the workshop and the board can be exercised +without first driving eight missions to afford looking at them. + The handle also steps the simulation by hand, renders on demand, and writes frames to `shots/` via a dev-only endpoint — which is how this build gets looked at at all when the tab is not compositing. `__dbtl.state` exposes the live sim. @@ -696,12 +771,23 @@ and people you have no reason to interact with, and a war that is obviously not about you. If firefights read as encounters staged for the player, the spacing and spawn rules in `sim/units.ts` are the dial. +**Phase 10:** the world should hold up to being *looked at* rather than only +driven through. Park somewhere busy and watch for a minute: traffic should +queue and pass rather than interpenetrate, crews should be relaxed until they +are not, and nothing should be standing in a wall. If any of that fails it is +visible immediately, which is the point of putting it in the list. + **Phase 9:** three gates, and all of them are about whether anything is at stake. - You slow down for a corner you would previously have taken flat, because the - car is worth protecting. If you still drive like it is a rental, `IMPACT_REFERENCE` - is too forgiving; if a single mistake ends the run, it is too harsh. + car is worth protecting. One serious crash should be a disaster you drive home + from and two should end the car; if that reads as too punishing, the dial is + the coefficients in `applyWear` rather than `IMPACT_REFERENCE`, which is + measured rather than chosen. +- Money accumulates faster than you can spend it on repairs, and the overhaul + becomes the thing you save for. If you never press `C`, `CEILING_PER_FUND` is + too mean; if the ceiling stops mattering, it is too generous. - Being hunted makes you think about *where* rather than only about the throttle. If you still escape by holding `W` on any road at all, raise `HUNT_SPEED`; if the chase is unloseable, the answer is more militia near home