Run and skate timed laps at Isovalen #67
Labels
No labels
animation
audio
blocked
bug report
controversial
documentation
easy
feature request
hard
medium
multiplayer
physics
ui
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
elsie/liuverse#67
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Isovalen is a mapped 400 m oval:
Next to it is
Friidrottsarenan(leisure=stadium,sport=multi). Therelation's outer way is untagged and its inner way is the only
leisure=trackthe area filter sees, so today the oval is dropped as a relation and the infield
reads as one
AREA_PITCHdecal.Proposal: a timed lap on the oval.
#32, which already wants surfaces and markings per sport.
the personal best. Crossing the line in the right direction stops the lap.
treats vehicles and day/night as server-authoritative, and a lap is the same
kind of shared score. It does not need anti-cheat — players are
client-authoritative by design — it needs a place to put the number.
piste:type=ice_skate. When #47/#48 say it is coldenough, the surface becomes ice and the movement becomes skating: less
friction, longer glide, a different feel on the same geometry.
This is a small, complete game on a real piece of campus, and it gives running —
currently only a way to get somewhere — a reason to be good at something.
Related
The track geometry and lane markings belong in #32; do that. The timer is fine as a client-side personal best. The server leaderboard is where I'd push back: the project deliberately makes players client-authoritative and says cheating is out of scope for co-op, so a shared lap board with no validation is just a list of numbers anyone can write. Either make the server validate from poses (a much bigger change) or keep it local. The ice-skating variant is #48/#66 scope, not this issue.
Ice is where a physics engine is cheapest, because ice is a friction
coefficient and nothing else.
"the surface becomes ice and the movement becomes skating: less friction,
longer glide, a different feel on the same geometry" is a per-surface
material. The oval is
leisure=track surface=tartan, and the winter wantspiste:type=ice_skateon the same relation, so one piece of geometry hastwo materials and skating is the icy one. The bake buckets the oval as a
pitch area today rather than reading
surface=, so the exact material is thepitches work's job; the collision layer can carry the coarse bucket first and
the exact tag once it exists.
The point of doing it as a material rather than as a movement mode is that
the same coefficient then applies to everything else on the ice. With
#112's thrown body and #111's vehicles, a skate that glides on ice and a
boule that stops dead on gravel are the same mechanism with two numbers
rather than two code paths. A player who switches from the oval to the road
mid-lap feels the difference, which is the point.
The lap itself needs nothing from physics: a line, a crossing and a timer.
Related: #110 the physics engine, #111 the vehicles, #112 the thrown bodies.
The oval is an ice surface now. The lap is not.
The Isovalen bakes as its own area kind,
AREA_TRACK, with the pale ice albedo and a hole for the infield, andis_trackalso matchespiste:type=ice_skateandsurface=tartan|cinder. Sleds are spawned on it and the ice is a surface class of its own (see #66), so the oval is a place you can do something on rather than a ring on a map.What is missing is the lap itself: no start and finish line, no crossing test, no timer, no personal best, no lanes. The earlier note still stands on the leaderboard: the project keeps players client-authoritative and says cheating is out of scope, so a shared board with no validation is a list of numbers anyone can write. Keep the lap local unless the server validates it from poses.