The moves of bringing my implementation closer to the original is working wonders. It’s a little annoying that things don’t work how I expect them but at least they work.
Changex like this:
func _exit_tree():
if multiplayer and multiplayer.multiplayer_peer != null:
if not multiplayer.is_server():
if multiplayer.has_multiplayer_peer():
#multiplayer.multiplayer_peer.close()
#multiplayer.multiplayer_peer = null
# https://www.reddit.com/r/godot/comments/kpnkrp/server_crash_on_client_disconnect_help/
multiplayer.set_multiplayer_peer.call_deferred(null)
await get_tree().create_timer(1).timeout
multiplayer.peer_connected.disconnect(add_player)
multiplayer.peer_disconnected.disconnect(del_player)
get_tree().reload_current_scene()
into this:
func _exit_tree():
if not multiplayer.is_server():
return
multiplayer.peer_connected.disconnect(add_player)
multiplayer.peer_disconnected.disconnect(del_player)
Keep it simple, silly. So it turns out that something in the 2D side was blodcking the view and everything is quite snappy. It’s a good thing that I didn’t delete anything.