fishfolk / jumpy

Tactical 2D shooter in fishy pixels style. Made with Rust-lang 🦀 and Bevy 🪶
https://fishfolk.org/games/jumpy/
Other
1.59k stars 116 forks source link

Black screen hanging during transitions between maps #994

Open MaxCWhitehead opened 1 month ago

MaxCWhitehead commented 1 month ago

Description

I've repro'd this 2 or 3 times, sometimes when screen goes black during map transition, it gets stuck for all clients. Not easy to repro when I want it - but also not super rare it seems.

It is black while new ggrs session is synchronizing clients, before first advance of net session runner + map loads. I have seen this occur after both clients ggrs logged that they are synchronized, but something seems to go wrong. I suspect GGRS is still returning NotSynchronized, likely due to a disconnect.

Need to log disconnects by default to help see, but I'm not sure it's quite that simple. I tried interrupting network during map transition, and I saw a warning that socket timed out, but ggrs never actually give a disconnect event after the 2s threshold.

I think action items are:

To Reproduce

Play network games, see if it gets stuck on map transition.

Expected Behavior

No response

Additional Context

No response

Log Messages

No response

MaxCWhitehead commented 1 month ago

It seems likely this is timeout related - I found can reproduce by pausing the game on one client before round transition. Need to make network interrupts recoverable - or keep ggrs session live / let it sync even when game is paused? Maybe in online play should not be able to actually pause game, only open the menu?

MaxCWhitehead commented 4 weeks ago

Disconnects in game should now notify player instead of just hanging. Net debug window (once update bones version) should show synchronization status / if any players are disconnected, so if do end up in a hung state, a screenshot / review of net debug window + logs could still be some useful context. The pause menu causing disconnect is also fixed.

The open question is still why might fail to synchronize / why get a disconnect on map transitions. Next step is probably to get more info next time reproduce, or review the the timeouts in ggrs involved and see if they are reasonable. It seems likely will no longer hang but indicate a disconnect in UI instead, but will see.