跨服思路


月底到了,总结下


跨服思路


gameserver在Announcement : Thread
update 里面检测 是否 gameserver centerserver 连接上了
5线程 每线程 5 地图
centervice centerserver连接上 一个conn
centerserver定时匹配,匹配好后,找validConn作为战场服


validConn 不仅标记战场服是哪个 还有是哪个线程哪个地图 m_connsMap[port][ip]
一个游戏服20个可用冰火地图 只有在一个里面的玩家 才是一个战场
这个就是battleIndex的作用了
每个与centerserver相连的游戏服 在centerserver中注册的的dungeonNum 就是20,说明有20个副本可以容纳


不同服。每个服20个副本。
每个服有最大的结束时间 最大结束时间最小的那个服
里面的最小的时间的地图


总之 选负载最小的游戏服来承担战场服



也就是说 找一个游戏服,实现 这组人的战场。
这组人 team的conn 就是这个 被选择 gameserver
给每个成员 发送战场服务器信息(dbip dbport gateport等),也就是 某个连上centerserver的游戏服


每个队员所在进程收到teaminfo -> pCrossInfo
crossInfo,user的conn,user的cid,sid, 以及 队伍的信息


发送消息给helpserver进程,helpserver 里面的transfer保存database自己游戏的数据库的 -h -u -p -P
gameserver-helpserver 一一对应 一个gameserver对应一个helpserver


因此拷贝数据 就是指 把这个user的数据通过 helper的transfer 从数据库全部拿出来,传给user的teamInfo里面的数据库
也就是战场数据库 也就是 centerserver选中的某一个游戏服的数据库 sid变换处理 10000+sid



helpserver给战场服执行mysql操作完成后 通知gameserver数据传送完成
gamesrever通知客户端跳转,发送战场服的gateserver的ip port
客户端收到跳转到跨服的消息,根据得到的新的gateserver ip port 重新登录,这个ip port也就是centerserver选中的战场服务器
也就是某一个连接centerserver 的游戏服 作为战场服

登录的时候,战场服 实际就是一个游戏服,收到请求,从数据库取数据,得到这个玩家应该在某副本,然后就放进去,

这样不同服的玩家就实现了跨服打架

你可能感兴趣的:(记录)