docs(multiplayer): consolidate tracking into one document

multiplayer-todo.md and multiplayer-next.md tracked overlapping
information in two places. Fold everything into multiplayer-next.md
(architecture decisions, wire format, task breakdown with checkboxes,
gotchas list, testing notes) and delete multiplayer-todo.md. Section
numbers are unchanged, so existing code comments citing them by
section/task number still resolve; update every such reference to
point at the new filename.
This commit is contained in:
Josh Creek
2026-09-01 12:32:43 +01:00
parent 9dc1cc2d6f
commit 4fb7ddfecf
31 changed files with 1414 additions and 1660 deletions
+1 -1
View File
@@ -97,7 +97,7 @@ func test_snapshot_roundtrip_seven_bodies() -> void:
var packet := NetCodec.pack_snapshot(555, -2, 1234, segment)
assert_eq(packet.size(), NetCodec.SNAPSHOT_CLIENT_HEADER_SIZE + segment.size(), "full packet size")
assert_eq(packet.size(), 169, "matches multiplayer-todo.md §2.4's 169 B payload figure for 7 bodies")
assert_eq(packet.size(), 169, "matches multiplayer-next.md §2.4's 169 B payload figure for 7 bodies")
var decoded := NetCodec.unpack_snapshot(packet)
assert_eq(decoded["last_input_seq"], 555, "last_input_seq")
+1 -1
View File
@@ -8,7 +8,7 @@ extends Node
# get_tree().current_scene, and calling it from a node that ISN'T an
# ancestor-chain match for current_scene (as an earlier draft of this test
# did, by add_child()-ing lobby.tscn under this driver) hung completely
# on disconnect — see multiplayer-todo.md §9 gotcha 27.
# on disconnect — see multiplayer-next.md §9 gotcha 27.
#
# The host role loading lobby.tscn is deliberate, not an oversight: a
# *dedicated* server (server_boot.tscn) never loads it, but a self-hosting
+1 -1
View File
@@ -97,7 +97,7 @@ func _on_player_joined(peer_id: int, player_name: String) -> void:
_finish(true, "host saw player_joined (peer_id=%d, name=%s)" % [peer_id, player_name])
# Adversarial-review regression (multiplayer-todo.md §9): MatchNet.roster
# Adversarial-review regression (multiplayer-next.md §9): MatchNet.roster
# used to have no path that cleared it when a HOST itself called
# NetworkManager.shutdown() — only the client-side disconnect signal did.
# Host -> client joins -> host leaves (shutdown) -> host again used to