blob: 5976a0e59e59989014f0b7128da8f6006355a2c6 (
plain)
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
70
71
72
73
74
75
76
|
/*
所有网络消息
////////////////////////////////////////////// 不需要同步的消息 //////////////////////////////////////////////
EndGame // 本局结束
{
}
////////////////////////////////////////////// 高频率的同步消息 //////////////////////////////////////////////
// 对应 GameData(5)和GameDataTo(6)
GameData // 所有在游戏内的广播消息的通用结构,可以包含Rpc、SpawnMsg等等
{
flag // GameData 或 GameDataTo
gameId
msgData // 具体的网络消息
}
// SyncNetObject和Rpc有很多,在NetObject中实现
SyncNetObject // 定时同步innnerNetObject的数据
{
DataFlag // 1
netId // 这个innerNetObject的id
data // netObject的序列化数据
}
Rpc // 远程调用(Remote Procedure Call)的通用结构
{
RpcFlag // 2
netId // 调用的网络对象
callId // 函数id
data // 函数参数(可选)
}
SpawnMsg // 生成\创建innerNetObject的消息,包括角色、场景中的物件比如门等
{
SpawnFlag // 4
spawnId // 父InnerNetObject的SpawnId
clientId // ownerId
SpawnFlag
numOfNetObjs // innerNetObject的个数
lenOfMsg
netId // 这个innerNetObject分配的netId
DataFlag
data // 单个innerNetObject的序列化数据
...
lenOfMsg
netId
DataFlag
data // 单个innerNetObject的序列化数据
...
}
DespawnMsg // 销毁单个netObject
{
DespawnFlag // 5
netId
}
SceneChange // 场景加载完毕的消息,用来同步
{
SceneChangeFlag // 6
clientId
sceneName
}
PlayerReady // 某个玩家已经准备好
{
ReadyFlag // 7
clientId
}
*/
|