-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathNetworked Game Logic.txt
69 lines (58 loc) · 2.76 KB
/
Networked Game Logic.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
-Now it takes State #0 and Command #0 to produce State #1 (see CPlayer::PhysicsTickTEST).
Newest Changes [Jan 15, 2009]
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
-Naturally, bFirstCommand is phased out as well.
-Also considering phasing out cLastRecvedCommandSequenceNumber. Do it for now. Actually, it might be a good idea to keep it, because otherwise it's hard to figure out if cmd with SN -1 is slighly old, or new but after 3+ sec of lag...
-Phased out cLastAckedCommandSequenceNumber... Rethinking.
-GameSession->GlobalStateSequenceNumberTEST replaces g_cCurrentCommandSequenceNumber.
-Currently it takes State #0 and Command #1 to produce State #1. //TODO: Change to St#0+Cmd#0=St#1. Done.
-CPlayer::oLatestAuthStateTEST is replacing CPlayer::fX,fY,fZ and cLatestAuthStateSequenceNumber
game logic loop
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
-time.++g_cCurrentCommandSequenceNumber (every 50 ms only)
-players.tick[PlayerController] (every 50 ms only): request input
-players.AfterTick[PlayerStateAuther]: process input, convert to auth-seek, locally predicted state, etc.
-players.ProcessUpdate[PlayerStateAuther]: process received auth-update
-players.SendUpdate[PlayerStateAuther] (every 60 ms only): send a complete network update to each of the players
New Network Variables
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
global/GameSession (remote auth/client side):
-g_cCurrentCommandSequenceNumber
-g_dNextTickTime
ServerConnection (remote auth/client side):
-cLastUpdateSequenceNumber
CPlayer (remote auth/client side):
-Player.AuthState(Latest).cSequenceNumber
-NetworkStateAuther.cLastAckedCommandSequenceNumber
-NetworkStateAuther.cCurrentCommandSeriesNumber
--------------------------------------
global/GameSession (local auth/server side):
-g_cCurrentCommandSequenceNumber
-g_dNextTickTime
ClientConnection (local auth/server side):
-cCurrentUpdateSequenceNumber
CPlayer (local auth/server side):
-Player.AuthState(Latest).cSequenceNumber == Player.Command(Latest).cSequenceNumber
-NetworkController.cLastRecvedCommandSequenceNumber
-NetworkController.bFirstCommand
-NetworkController.cCurrentCommandSeriesNumber
Old Network Variables - TODO: Separate them between Connection-, Player- and other-related, group them
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
global (remote auth/client side):
-g_cCurrentCommandSequenceNumber
-g_dNextTickTime
-cLastUpdateSequenceNumber
CPlayer (remote auth/client side):
-cLastAckedCommandSequenceNumber
-cCurrentCommandSeriesNumber
--------------------------------------
global (local auth/server side):
-g_cCurrentCommandSequenceNumber
-g_dNextTickTime
ClientConnection (local auth/server side):
-cLastCommandSequenceNumber
-cCurrentCommandSeriesNumber
-cCurrentUpdateSequenceNumber
-bFirstCommand
LocalAuthPlayer (local auth/server side):
-cLatestAuthStateSequenceNumber