Swing the doors open #115
Labels
No labels
animation
audio
blocked
bug report
controversial
documentation
easy
feature request
hard
medium
multiplayer
physics
ui
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Depends on
#110 Add a physics engine (rapier3d)
elsie/liuverse
Reference
elsie/liuverse#115
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?
Doors are missing from the campus in a way that is easy to miss, because the
bake does draw them: MazeMap's interior walls carry door ribbons, and the
collider deliberately ignores them — ARCHITECTURE.md says interior walls have
"door ribbons never" blocking on their own floors. So a door is drawn on the
wall and there is no opening in it.
The building shell is different: an OSM
entrance=*ordoor=*snapped to abuilding edge becomes a gap in the collision wall, and that gap is the
only door in the campus today. There is no door that opens, no door that
swings, and no way for a player to hold one.
A hinge is a revolute joint with a motor, and a motor is two lines of Rapier:
set_motor_position(axis, target, stiffness, damping)andset_motor_max_force(axis, max_force). The door is then a rigid body with ahandle you can push.
What it buys
Eon a door and it swings. Walk into one and itswings out of the way, if it is a door and not a wall.
multiplayer payoff, and it is the same kind of moment as the bus ride: a
small physical thing that two people share.
that knocks a player over is a physics engine being used for a joke.
Where it fits
The door ribbons are already baked — they are part of the interior wall data —
so this is not a bake change for the geometry. It is a bake change for the
collider, because a door with a gap is a different collider from a wall, and
the collision layer the physics engine needs has to be able to say "this
segment is a door, and the door has a hinge at this end".
The door body is a
SceneSpecobject slot like a vehicle: it moves, and it isnot part of the static campus.
The authority question
A door is shared, so it cannot be client-authoritative: two clients would
each swing their own door and the two would not agree. It is server-authoritative
like the vehicles, which means a door's angle is a number on the wire at 20 Hz.
That is the same shape as
VehiclePose— an id, a position, an angle — so theprotocol already has a precedent for it.
The cost is a busier
SceneSpec: the campus currently has a few hundredmoving objects at most, and every door on campus becomes one.
Related
are punched.
a door is a wall you walk through.