Commit Graph

35305 Commits

Author SHA1 Message Date
twinaphex f74b7d5f05 Get rid of some implicit memsets for state tracker 2016-12-19 14:29:27 -05:00
twinaphex 16b26139ff Get rid of some implicit memsets 2016-12-19 14:29:27 -05:00
twinaphex d2b3762db8 (input_config.c) Get rid of implicit memset 2016-12-19 14:29:27 -05:00
twinaphex 8caa21ef98 (menu_display_gl.c) Get rid of implicit memset 2016-12-19 14:29:27 -05:00
twinaphex b536f3f5f7 Get rid of implicit memsets 2016-12-19 14:29:27 -05:00
twinaphex d99fac1d88 Get rid of some implicit memsets 2016-12-19 14:29:27 -05:00
twinaphex 8250e3d521 Get rid of some implicit memsets 2016-12-19 14:29:27 -05:00
Alcaro 19afa89c7f Shut up false positive warning 2016-12-19 14:29:27 -05:00
Brad Parker 7aac7f986a add option to show battery level next to the datetime in the menu 2016-12-19 14:28:21 -05:00
Twinaphex 032d29efa4 Merge pull request #4274 from GregorR/netplay-nouveau-nouveau
>2-player Netplay
2016-12-19 16:28:37 +01:00
Twinaphex 8b62a4029e Merge pull request #4275 from Themaister/master
Fix unmute after starting muted.
2016-12-19 16:28:22 +01:00
Hans-Kristian Arntzen d661620962 Fix unmute after starting muted.
audio_driver_start() would for some reason fail if audio driver was
already started. The fix is to mute the audio driver on init. Makes
kinda sense anyways.
2016-12-19 14:40:28 +01:00
twinaphex 4c9f2e41ff Get rid of some implicit memsets 2016-12-19 14:04:37 +01:00
Gregor Richards 11a3063fc6 Forgot the other half of that last bugfix 2016-12-18 20:08:21 -05:00
Gregor Richards 8f8e6dfc5f Unset the netplay callbacks when we deinit netplay
This is a bugfix to master that hadn't migrated to my branch.
2016-12-18 19:54:01 -05:00
Gregor Richards dcd4b3046b Making negative check_frames be "check only" mode 2016-12-18 19:28:44 -05:00
Gregor Richards 677ffa9ebd Support different forms of compression from different clients. 2016-12-18 19:28:44 -05:00
Gregor Richards 84c33634a6 Communicate paused-ness during initial connection SYNC. 2016-12-18 19:28:44 -05:00
Gregor Richards 60b81e3a51 Nominal support for server sending blank INFO 2016-12-18 19:28:44 -05:00
Gregor Richards e79f30604f Better stall timing
We now stall not until we've reached parity (which makes no sense since
we expect latency), but only until we're not likely to stall again.
2016-12-18 19:28:44 -05:00
Gregor Richards 8195a5bcee Try to catch up if we're falling behind our peer, not anyone
In the previous catch-up system, we would only try to catch up if we
were falling behind the farthest-behind peer. However, as they would
also only try to catch up to us, everyone basically agreed to the
worst-case latency. It makes more sense to try to be in parity with your
direct peer than with indirect connections.
2016-12-18 19:28:44 -05:00
Gregor Richards b535412914 Adding nick-changing
This is just to disambiguate multiple connections with the same nick
(usually Anonymous), which will now become e.g. Anonymous (2).
2016-12-18 19:28:44 -05:00
Gregor Richards 43fdccd89c Making some messages grammatically similar to others 2016-12-18 19:28:44 -05:00
Gregor Richards abce07db17 Correcting stateless mode in menu. 2016-12-18 19:28:44 -05:00
Gregor Richards 7c2f12fbd9 Removign some leftover debug code 2016-12-18 19:28:44 -05:00
Gregor Richards 04266cf4f7 Run synchronization even when stalled
Previously, we could be stalled by one player but still reading data
from another, which would wedge the client because we would never act
upon the newly-read data. Now we act upon data even if we're stalled.
Fixes bugs in initial connection with high latency.
2016-12-18 19:28:44 -05:00
Gregor Richards d6d96704fd Don't panic about delta frames not being ready if we're not even fully
connected yet.
2016-12-18 19:28:43 -05:00
Gregor Richards 8b21014d07 Improvements to handshake protocol
Making the netplay handshake protocol send the core and content as an
explicit command, so that the other side can (notionally) choose to load
it. That isn't implemented, of course.
2016-12-18 19:28:43 -05:00
Gregor Richards 1fa60b396f Improvements to the communication of netplay pausing. 2016-12-18 19:28:43 -05:00
Gregor Richards db2c8de44c Slightly changing how catch-up works to avoid spamming the console 2016-12-18 19:28:43 -05:00
Gregor Richards 1141825605 Documenting (somewhat) the new sync system. 2016-12-18 19:28:43 -05:00
Gregor Richards a20e79bbb5 Server needs double the buffer frames since two connected clients could
be ahead and behind by the max frames
2016-12-18 19:28:43 -05:00
Gregor Richards f7f6590156 Goodbye delay_frames! stateless_mode is the new delay_frames=0 2016-12-18 19:28:43 -05:00
Gregor Richards 45d732a014 New sync system
The idea:
   * Use a fixed number of delay_frames (eventually to be fixed at 120,
     currently still uses the config variable, 0 will still be an option)
   * Determine how long it takes to simulate a frame.
   * Stall only if resimulating the intervening frames would be
     sufficiently annoying (currently fixed at three frames worth of
     time)

Because clients always try to catch up, the actual frame delay works out
automatically to be minimally zero and maximally the latency. If one
client is underpowered but the other is fine, the powerful one will
automatically take up the slack. Seems like the most reasonable system.
2016-12-18 19:28:43 -05:00
Gregor Richards 6890456ac0 Updated error messages and fixed some stall-related disconnected-client
bugs.
2016-12-18 19:28:43 -05:00
Gregor Richards 6658826759 CRC validity checking. Ignore CRCs if they don't work. 2016-12-18 19:28:43 -05:00
Gregor Richards a6cd8c3aa1 Error reporting when a password is refused, plus a bugfix so that
socket_receive_all_nonblocking actually reports disconnects.
2016-12-18 19:28:43 -05:00
Gregor Richards df2600fbf4 Added error reporting when a player is not allowed to play. 2016-12-18 19:28:43 -05:00
Gregor Richards bade067d9a Support for catching up if the netplay peer is ahead of us. 2016-12-18 19:28:43 -05:00
Gregor Richards 4e01481b39 Only allow clients to load state if there's no further synchronization 2016-12-18 19:28:43 -05:00
Gregor Richards 70d04ec6a5 Apparently the frontend gets really pissy if it can't check the flip state 2016-12-18 19:28:43 -05:00
Gregor Richards da7efcb939 Cleaning up netplay headers. 2016-12-18 19:28:43 -05:00
Gregor Richards 9c6ac2b934 Only the server can flip users. 2016-12-18 19:28:43 -05:00
Gregor Richards a2d377f089 Adding spectate password to the menu 2016-12-18 19:28:43 -05:00
Gregor Richards 03415c261d Added netplay spectator password separate from play password 2016-12-18 19:28:43 -05:00
Gregor Richards 694b7a9723 Don't allow more players to join than are actually being polled 2016-12-18 19:28:43 -05:00
Gregor Richards 7ad4e3f115 Per-connection stalling 2016-12-18 19:28:43 -05:00
Gregor Richards 1b22191869 Deduplicating some code. 2016-12-18 19:28:43 -05:00
Gregor Richards 24a39078be Adding netplay password to menu. 2016-12-18 19:28:43 -05:00
Gregor Richards f619789e48 Refactoring: netplay_common.c -> netplay_handshake.c/netplay_delta.c
Refactoring netplay_common into its two actual components, the handshake
and delta-frame related functions.
2016-12-18 19:28:43 -05:00