Throw a disc golf disc #11

Closed
opened 2026-10-17 20:40:02 +00:00 by sermuns · 2 comments
Owner

Once the Rydskogens course is baked, the obvious thing is to let you play it.

A disc is a projectile with a lift-and-fade arc, released from a tee, and it
either reaches a basket or does not. There are 18 real holes with names.

Where it fits the existing architecture:

  • Server-authoritative, like scooters and day/night, on the server's 20 Hz
    tick -- this is the one place where cheating would actually matter, because a
    score is a score.
  • Thrown trajectories are ClientMsg appends (per the ClientMsg / ServerMsg
    rule: append, never reorder).
  • A thrown disc is a SceneSpec object slot like a scooter, not baked geometry.
  • Hit detection is pure arithmetic over the tee and the basket, so it belongs in
    liuverse-world with the rest of the engine-free simulation and is testable
    without a GPU.

Par per hole comes from the golf tags on the course relation if that gets baked;
the disc golf hole ways carry names but no par.

Requires #10 first.


Related

  • #10 needs this baked first
  • #28 the sibling server-authoritative mechanic
  • #40 the sibling vehicle
  • #44 the sibling scored throw
  • #34 the other puttable thing on campus
Once the Rydskogens course is baked, the obvious thing is to let you play it. A disc is a projectile with a lift-and-fade arc, released from a tee, and it either reaches a basket or does not. There are 18 real holes with names. Where it fits the existing architecture: - **Server-authoritative**, like scooters and day/night, on the server's 20 Hz tick -- this is the one place where cheating would actually matter, because a score is a score. - Thrown trajectories are `ClientMsg` appends (per the `ClientMsg` / `ServerMsg` rule: append, never reorder). - A thrown disc is a `SceneSpec` object slot like a scooter, not baked geometry. - Hit detection is pure arithmetic over the tee and the basket, so it belongs in `liuverse-world` with the rest of the engine-free simulation and is testable without a GPU. Par per hole comes from the golf tags on the course relation if that gets baked; the disc golf hole ways carry names but no par. Requires #10 first. --- **Related** - #10 needs this baked first - #28 the sibling server-authoritative mechanic - #40 the sibling vehicle - #44 the sibling scored throw - #34 the other puttable thing on campus
sermuns added this to the Play milestone 2026-10-19 22:18:52 +00:00
Author
Owner

A physics engine changes one line of this: the disc stops being arithmetic and
becomes a body.

#112 collects the thrown-body work — a mass, a restitution and a friction,
paired with the material under it. Rydskogen is gravel and forest floor, so
the disc that lands in the trees and the disc that lands on the fairway are
the same throw onto two different friction coefficients.

What does not change is the scoring rule. "Reached the basket" is still a
comparison against the basket's position, and it is still owned by this issue.
What changes is that the disc can now miss for reasons that have nothing
to do with arithmetic: it hits a tree, it lands in the rough and stops short,
and it is thrown too flat to fade up at all. A disc golf hole that you can
throw badly is a hole; a hole that is one arithmetic test is a checkbox.

The wire side matches the other server-authoritative mechanics: the disc is a
body on the server, its state travels in a new ServerMsg variant appended
to the end, and the throw itself is a new ClientMsg variant. The disc
itself is a SceneSpec object slot, not baked geometry, exactly as this
issue already says.

Related: #110 the physics engine, #112 the shared thrown body.

A physics engine changes one line of this: the disc stops being arithmetic and becomes a body. #112 collects the thrown-body work — a mass, a restitution and a friction, paired with the material under it. Rydskogen is gravel and forest floor, so the disc that lands in the trees and the disc that lands on the fairway are the same throw onto two different friction coefficients. What does not change is the scoring rule. "Reached the basket" is still a comparison against the basket's position, and it is still owned by this issue. What changes is that the disc can now *miss* for reasons that have nothing to do with arithmetic: it hits a tree, it lands in the rough and stops short, and it is thrown too flat to fade up at all. A disc golf hole that you can throw badly is a hole; a hole that is one arithmetic test is a checkbox. The wire side matches the other server-authoritative mechanics: the disc is a body on the server, its state travels in a new `ServerMsg` variant appended to the end, and the throw itself is a new `ClientMsg` variant. The disc itself is a `SceneSpec` object slot, not baked geometry, exactly as this issue already says. Related: #110 the physics engine, #112 the shared thrown body.
Author
Owner

Don't really care

Don't really care
Sign in to join this conversation.
No description provided.