Fix: players fall through the floor in multiplayer
checkpoint / checkpoint (push) Failing after 1m34s
checkpoint / checkpoint (push) Failing after 1m34s
scenes/server_player.tscn was a bare CharacterBody3D with NO CollisionShape3D, so on the server move_and_slide() never hit the ground and is_on_floor() was always false -> the server player fell forever, and the client (which snaps to the server's authoritative position past a drift threshold) fell with it. Give the server player the same CapsuleShape3D (r=0.35, h=1.6) as the client. The 2-player test now also asserts the server keeps the player on the ground (on_floor / min_y), which is how this slipped through -- the tests only checked "position changes" and "sees the other player". Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015jtxAiu5dAW4WxCNdGkrkJ
This commit is contained in:
@@ -37,7 +37,9 @@ echo "server: $(grep -c 'joined' /tmp/mp2p_server.log) joins seen"
|
||||
echo "A: ${A_LINE:-<none>}"
|
||||
echo "B: ${B_LINE:-<none>}"
|
||||
|
||||
if echo "$A_LINE" | grep -q 'moved=true' && echo "$A_LINE" | grep -qE 'remotes=[1-9]'; then
|
||||
if echo "$A_LINE" | grep -q 'moved=true' \
|
||||
&& echo "$A_LINE" | grep -qE 'remotes=[1-9]' \
|
||||
&& echo "$A_LINE" | grep -q 'on_floor=true'; then
|
||||
echo "=== SMOKE RESULT: PASS ==="
|
||||
exit 0
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user