/* 所有网络消息 ////////////////////////////////////////////// C\S结构消息 ////////////////////////////////////////////// HostGame // 作为Host建房间 { HostGame // 0 gameSettings // 单局配置 } JoinGame // 某个玩家加入游戏 { JoinGame // 1 gameId // 如果加入失败,gameId存失败原因 clientId } StartGame // host玩家开始游戏 { StartGame // 2 gameId } RemoveGame // 玩家退出游戏 { gameId } RemovePlayer // 如果在连接过程中出现错误(DisconnectReasons),移除某个玩家 { RemovePlayer // 4 gameId clientId reason // DisconnectReasons } JoinedGame // 加入游戏, S2C,在InnerNetServer,用来分发局内玩家数据,是JoinGame的ACK { JointedGame // 7 gameId clientId hostId clientCount playerIdList // playerId,分配给每个玩家的clientId } EndGame // 本局结束 { EndGame // 8 gameId endReason // 游戏结束原因 showAd // 是否显示广告 } GetGameList // 游戏房间数据 { GetGameList // 9 includePrivate // 是否包含私密房 gameSearchOptions // 搜索条件 } AlterGame // 切换房间的public和private (只有主机可以) { AlterGame // 10 1 // 未知 gameId isPublic } KickPlayer_C2S // 踢玩家 { KickPlayer // 11 gameId clientId ban // 是否ban掉这个ip } KickPlayer_S2C // 发给被踢玩家的消息 { KickPlayer // 11 gameId clientId ban } WaitForHost // 等待主机玩家进一步操作(比如开始游戏) { gameID clientId } Redirect // 游戏服务器推给所有玩家,切换连接的服务器IP和端口 { Redirect // 13 address port } ////////////////////////////////////////////// 高频率的同步消息 ////////////////////////////////////////////// // 对应 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 } */