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
Gregor Richards
4e905bf524
Refactoring: netplay_sync.c
...
Renamed netplay_net.c to netplay_sync.c, as all that remains in that
file is synchronization-related functions.
2016-12-18 19:28:43 -05:00
Gregor Richards
257c5d3188
Refactoring netplay_init.c/netplay_net.c
...
Split the remainder of netplay.c into netplay_init.c and netplay_net.c
(which will soon be netplay_sync.c)
2016-12-18 19:28:43 -05:00
Gregor Richards
7e2465ef1f
Refactoring: Moving I/O functionality into netplay_io.c
2016-12-18 19:28:43 -05:00
Gregor Richards
8c59c7dd77
Starting to refactor: Separating frontend stuff into netplay_frontend.c
2016-12-18 19:28:43 -05:00
Gregor Richards
ab989d7f41
More careful disconnection.
2016-12-18 19:28:43 -05:00
Gregor Richards
c8bba9a981
Simplistic builtin randomizer.
2016-12-18 19:28:43 -05:00
Gregor Richards
28e331b5fd
Remove some magic numbers
2016-12-18 19:28:43 -05:00
Gregor Richards
6e6f2bfdbe
Use a proper password hash across the line.
2016-12-18 19:28:42 -05:00
Gregor Richards
763a657f82
Terrible first cut at password (sent in plain text D-8)
2016-12-18 19:28:42 -05:00
Gregor Richards
5a0328dc09
Transfer pad configuration over netplay.
2016-12-18 19:28:42 -05:00
Gregor Richards
888e45c88b
Updates to allow the server to toggle game/watch
2016-12-18 19:28:42 -05:00
Gregor Richards
3631ff74ff
Very, very partial support for the server spectating
2016-12-18 19:28:42 -05:00
Gregor Richards
3d7f1f6575
Updating Netplay README to be more true
2016-12-18 19:28:42 -05:00
Gregor Richards
f6f9905ae3
Made remote pausing connection-specific
2016-12-18 19:28:42 -05:00
Gregor Richards
6556af1100
force_send_savestate is global again
...
We cannot send a savestate to only one player, as sending a savestate is
a synchronization event invalidating all prior input.
2016-12-18 19:28:42 -05:00
Gregor Richards
3d34c0222f
Added simple (cheesy) announcements on join/leave
2016-12-18 19:28:42 -05:00
Gregor Richards
727743aa7b
Fixing a couple FIXMEs/TODOs
2016-12-18 19:28:42 -05:00
Gregor Richards
2130fd81a5
Fixed simulation for >2 players
2016-12-18 19:28:42 -05:00
Gregor Richards
262d77546b
Adding game/watch key
...
Adding a key to toggle between playing and spectating. This key takes
the place of the previous flip key, although player flipping does
continue to work (and must be rebound if you still want it)
2016-12-18 19:28:42 -05:00
Gregor Richards
90c15fc7a6
Still need to flush input data.
2016-12-18 19:28:42 -05:00
Gregor Richards
e7ce01ad3b
More renaming
...
Now that remote_input_state isn't always remote, it should just be
called real_input_state (and is).
2016-12-18 19:28:42 -05:00
Gregor Richards
f6630ad85a
More fixups for >2 player mode. Mostly was just sending packets that
...
shouldn't have been sent.
2016-12-18 19:28:42 -05:00
Gregor Richards
479955a085
More 3-player support. The initial connection is wonky with
...
delay_frames>0
2016-12-18 19:28:42 -05:00
Gregor Richards
d373684bd5
Off-by-one
2016-12-18 19:28:42 -05:00
Gregor Richards
b51cf8be2b
Real, actual (almost) >2-player support.
2016-12-18 19:28:42 -05:00
Gregor Richards
2cc8c5c467
Removing silly foo_ names used to help migration.
2016-12-18 19:28:42 -05:00
Gregor Richards
53c46530aa
Very first tidbits of true multiplayer support (minus actual multiple
...
players so far)
2016-12-18 19:28:42 -05:00
Gregor Richards
b5cd187077
Since there's now only one mode, removing netplay_callbacks entirely.
2016-12-18 19:28:42 -05:00
Gregor Richards
9b2270f5d4
Say goodbye to spectator mode (for now)
2016-12-18 19:28:42 -05:00
Gregor Richards
4768970d52
Moving force_send_savestate from netplay to connection.
2016-12-18 19:28:42 -05:00