Gregor Richards
fcd57801bd
When we replay, resimulate input so that it doesn't judder between
...
remote states
2016-09-24 08:12:08 -04:00
Gregor Richards
6472b0ce82
Small checks to avoid needless blocking in delay_frames=0 mode
2016-09-23 23:27:07 -04:00
Gregor Richards
fa5b75b635
Bugfixes in how we reset state on a late Netplay connection
2016-09-23 22:21:53 -04:00
Gregor Richards
236839e22f
Reset netplay stall state upon disconnection
2016-09-23 22:20:47 -04:00
Gregor Richards
ae92cfeac2
More care in check_frames code so we don't check CRCs from a previous
...
connection
2016-09-23 22:18:56 -04:00
Gregor Richards
65e308c92d
Reset player flip state when we lose Netplay connection
...
This fixes a bug whereby reconnections would be out of sync due to the
flip state of the server and client being different. The server now
resets its flip state on disconnect.
2016-09-22 21:56:19 -04:00
Gregor Richards
06550ec289
Check if setting CLOEXEC fails on the Netplay server port.
2016-09-22 21:02:26 -04:00
Gregor Richards
1503b3d42f
Don't serialize frame 0 in netplay, as the core may not yet be ready
2016-09-22 17:36:46 -04:00
Twinaphex
34944cac0f
remove unused variables
2016-09-22 22:01:35 +02:00
Twinaphex
b2240c5783
Merge pull request #3631 from GregorR/netplay-reconnect
...
Support for Netplay reconnection
2016-09-22 14:27:38 +02:00
Gregor Richards
4a83e6dee9
Both sides should send the same header so either can check the other
2016-09-22 07:06:26 -04:00
Gregor Richards
42f8ed4338
Support for Netplay reconnection
...
In net server mode, when the client disconnects, the server now returns
to listening mode, in anticipation of the client reconnecting.
2016-09-21 22:37:43 -04:00
twinaphex
017bf34d71
Prevent null pointer dereference defect
2016-09-22 03:59:02 +02:00
Gregor Richards
4b370cf55e
Re-add TCP_NODELAY in host mode.
2016-09-21 17:31:19 -04:00
Gregor Richards
c2d9e7a538
Support for late connection to Netplay host mode
...
This changes netplay host mode's behavior in net (normal) mode from
immediately blocking to waiting for a connection while allowing the game
to run, like spectator mode.
2016-09-21 17:26:02 -04:00
twinaphex
b548362869
Use encoding_crc32
2016-09-21 12:31:40 +02:00
Gregor Richards
851cd0fe6e
Removing now-unused BSV-related functions from Netplay
2016-09-20 22:32:23 -04:00
twinaphex
d7e9c198e6
Cleanups to netplay
2016-09-17 18:21:29 +02:00
Twinaphex
e21662b3e9
Merge pull request #3607 from GregorR/netplay-savestates
...
Netplay savestate loading frontend changes
2016-09-17 18:15:49 +02:00
Alcaro
ec2fd5ebd7
Fix warning
2016-09-17 17:55:42 +02:00
Gregor Richards
d53373a5cb
Netplay savestate loading frontend changes
...
Support for the frontend to inform Netplay when a savestate has been
loaded, so Netplay can in turn inform the peer.
2016-09-17 11:24:23 -04:00
twinaphex
a55feae619
CXX_BUILD fixes
2016-09-16 13:38:06 +02:00
Gregor Richards
ad336df709
Reimplemented Netplay spectate mode
...
Spectate mode is now far more similar to net (normal) mode, and, more
importantly, it works. In addition, spectate mode will not fast-forward
to catch up with the server if it lags too far behind.
2016-09-15 23:06:32 -04:00
Gregor Richards
4076b14568
Make Netplay flipping deterministic
...
The receiving side of a player-flip request now does a forced rewind to
assure that any already-computed frames are computed with the players on
the right side.
2016-09-15 23:06:32 -04:00
Gregor Richards
827009d2d3
A few corrections/clarifications in the Netplay README
2016-09-15 23:06:32 -04:00
Gregor Richards
2a0202ccf5
Making Netplay check frequency configurable.
2016-09-15 23:06:32 -04:00
Gregor Richards
9a91570db8
Adding new network commands to the Netplay README.
2016-09-15 23:06:32 -04:00
Gregor Richards
7271d1c3fa
Support for frame CRCing
...
Every frame (soon to be configurable), the server does a CRC-32 hash and
sends it to the client. If the client finds that its own hash is
different from the server's, it requests a fresh savestate.
This is a last-ditch effort to sync if all else fails, and it's a
best-effort situation. The size of the buffer should assure that we
always still have the frame around to CRC, but I imagine there are edge
cases where we don't. If you're in an edge case, the CRC is ignored.
2016-09-15 23:06:32 -04:00
Gregor Richards
79eba578ff
Remote state load bugfix: Don't skip an input frame
2016-09-15 23:06:32 -04:00
Gregor Richards
5f90f072ba
Documentation fixup
...
Fixing up some of the function documentation, and documenting the packet
formats.
2016-09-15 23:06:32 -04:00
Gregor Richards
27188e102d
Support for savestate loading over netplay
...
Assuming the core supports saving/loading states, and (crucially)
assuming the states are portable across the architectures on both sides
of the connection, Netplay now supports the transmission of savestates.
Right now the frontend doesn't actually send any such requests, as it's
not clear exactly where the code for that should be.
This works in either direction, although I'll admit I have no idea what
happens if they both load at the same time.
2016-09-15 23:06:32 -04:00
Gregor Richards
4d11b1d674
Don't misinterpret "Netplay isn't loaded" as "must pause" :)
2016-09-15 23:06:32 -04:00
Gregor Richards
c3186c57ab
Don't stall if connection lost with remote paused
2016-09-15 23:06:32 -04:00
Gregor Richards
96186438ec
Remote pausing
...
Support for remote pausing, and with it, support for Netplay pausing the
frontend correctly. With this patch alone this doesn't work, since
there's no clean way for the frontend to tell Netplay that it's paused.
2016-09-15 23:06:32 -04:00
twinaphex
a71cd89379
Cleanup unused variable
2016-09-15 21:26:10 +02:00
Gregor Richards
9bc78d25a0
Minor stylistic fixes for clarity and consistency with the rest of
...
RetroArch.
2016-09-14 10:06:57 -04:00
Gregor Richards
b1a2e096e5
Use consistent quotes in Netplay README.
2016-09-14 10:03:26 -04:00
Gregor Richards
12bf3e4824
Rather than repeating the same sample for every frame while stalled,
...
just pause the sound while stalled. Both options are annoying, but this
option is less annoying.
2016-09-13 21:45:06 -04:00
Gregor Richards
ea0bb6f812
Just in case some systems don't have TCP_NODElAY, put that in an ifdef.
2016-09-13 21:39:10 -04:00
Gregor Richards
d4e074dbed
Moved the advance of self_ptr to the same place as the advance of
...
self_frame_count, which is much clearer.
2016-09-13 21:32:57 -04:00
Gregor Richards
99b5ed92ed
other should always be <= both real AND self. Before this fix, it was
...
possible (albeit unlikely) for the remote to get so far ahead of us that
they actually overwrote our own current data :)
2016-09-13 21:32:57 -04:00
Gregor Richards
1267e5e867
A few clarifications regarding the buffer's have_remote and used_real
...
data. simulation shouldn't touch 'em.
2016-09-13 21:32:57 -04:00
Gregor Richards
a0cfdb8a9c
naks now cause disconnection.
2016-09-13 21:32:57 -04:00
Gregor Richards
b140b16b5d
Removed Netplay positive acknowledgement messages: They didn't document
...
their corresponding sent message, and so couldn't be used for
acknowledgement anyway. Negative acknowledgement is sufficient.
2016-09-13 21:32:57 -04:00
Gregor Richards
6829b80c6b
Reimplemented disconnection based on stalls. If we stall for 10 seconds,
...
disconnect.
2016-09-13 21:32:57 -04:00
Gregor Richards
8aa48cd3f9
Reinstituted "standard" timeout-based disconnection, which only works
...
for stall_frames==0 due to the fixes to not stall the UI.
2016-09-13 21:32:57 -04:00
Gregor Richards
0ccc39769d
Adding my copyright lines to files I've touched.
2016-09-13 21:32:57 -04:00
Gregor Richards
ae8e695644
Fixing indentation to align with the rest of RetroArch.
2016-09-13 21:32:57 -04:00
Gregor Richards
f9f4e15d33
Removing commented-out code (mostly old UDP stuff)
2016-09-13 21:32:57 -04:00
Gregor Richards
c5fe0ec6be
Updating the Netplay README to be true of the current implementation.
2016-09-13 21:32:57 -04:00