Monorepo for Aesthetic.Computer aesthetic.computer

oskiewar: the map becomes a skatepark master

Forty by sixteen tiles, 3,600 units — twice as wide again. Left to right it is a run: drop off the left quarterpipe, carry the speed through the halfpipe, out across the flat middle where the bell rings, up the kicker and over the funbox, and finish on the right quarterpipe. Almost none of this is new machinery. `terrainFloorAt` has carried a heightfield since the tower, `terrainTangentAt` differentiates it, and the skate physics have been feeding that slope into `skateVx` the whole time — `player.skateVx += terrainSlope * 1900 * dt` is a line that had done nothing for months because the amplitude was zero. What was missing was a shape worth riding, so the profile is authored now rather than noised: a run of named features, each a real quarter-circle transition, bank, or flat. A transition's run equals its height because a quarter circle's does. The halfpipe is dug IN rather than built up. A pipe raised off the floor is two humps with their ridable faces pointing away from you, and you would have to climb the back of one to use it. Dug in, the same two arcs face each other, the flat bottom is genuinely a floor, and it can be ridden straight through at speed from either end — which is what a halfpipe is from the side anyway. Three physics changes, in order of how much they mattered: - Coasting. The steering servo ran every frame against `input.horizontal * 2700`, which on an idle stick is zero, so a rolling skater was dragged to a standstill at 3.2 a second by the same line that turns them. On a flat cube nobody could tell. Dropped into a three-tile bowl it was the difference between a 1,400-unit drop and a 268-unit one: the servo ate gravity as fast as gravity arrived. - Slope gravity resolved instead of tuned. `terrainTangentAt` returns a tangent, and `clamp(slope, -2.5, 2.5) * 1900` needed that clamp because a tangent runs away to infinity as a transition goes vertical. The horizontal share of gravity is g·sin·cos — g·t/(1+t²) in terms of tan — which peaks at 45°, falls off toward vertical, and cannot exceed half of g. Nothing left to clamp. - Pumping, and leaving the lip. Holding DOWN on a transition pays in speed priced by the slope, which is the only way to gain speed in the bowl without pushing. And a rider carrying real upward speed when the ground stops climbing under them goes into the air, instead of walking over the top of every ramp with the speed quietly deleted. The deck rows are still priced against the 586-unit apex, so the climb keeps its route; the park is simply the more interesting way to travel now. This branch also found the `saberPickups` rollback desync, which went to main on its own because it was never a skatepark bug. Netplay is 18/0 here. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>