avaraline / Avara

Port of the original 1996 game from Ambrosia Software.
MIT License
123 stars 19 forks source link

"Waiting for player..." message #94

Closed assertivist closed 3 years ago

assertivist commented 4 years ago

Marking this a bug because the original had it:

https://github.com/avaraline/Avara/blob/30ded35720213cc2d0712c63e0f15f4ba1e3c4b3/src/game/CPlayerManager.cpp#L496-L512

This is used when a network stall happens. We've discussed other methods of resolving network stalls, like just kicking users out of the game, but i think this is still useful--other solutions will still have a timeout before they apply, specific user types will just have bad connections.

I'm thinking an easy way to do this, rather than a dialog in nanogui or something like that, is just drawing a message on the screen with nanovg, and include a specific key combination (manually checked in the events, right there at that spot, not a mapped key) that will allow users to abort whatever network wait they're experiencing. If implemented here in the same place as the original it should work the same way and allow the other connections to remain active and then start a new game.

For extra sauce points, the thing would be able to indicate in the HUD somehow which players are not sending packets. The game does send a status message to the console, but while the network is blocking that doesn't update so it is only if you wait out the lag do you see the 'problem player'.

tra commented 4 years ago

At the very simplest, we could simply uncomment the break line and have it drop out of the game loop instead of getting stuck in the "waiting" loop that never exits.

assertivist commented 4 years ago

That would be one way to do it, though sometimes it can recover. In situations like we were in with Seven it would probably just kick him every time he tried to play. I dunno if that's ideal but. IDSN+ only