Go游戏服务器开发的一些思考(三十六):无缝世界场景构建与同步(三)
2018-03-09 18:57
776 查看
本文内容思想来源于2位同事的研究。
主要关于实体的创建、主从的确定、主从切换。
需要知道的是,这个实体是Master(废话)
如果实体Master实例,在Cell边界与主从切换线内移动,是不需要做主从切换的。
如果实体Master实例,越过主从切换线,则做主从切换。
详细,下面接着分析。
上图为A实体从 Cell1 到 Cell0,并完成主从切换的过程。(注意,这里有一条主从切换线。)
正常的思路是,A1 -> A2, 在2个Cell的分界线上,就可以完成主从切换。
但是这样有个问题,A1->A2后,又A2->A1,如果有实体在2个Cell的分界线上来回跑。
则,会持续发生主从切换,造成系统错误。
因此,把主从切换线,从Cell边界线上往后移动。
如图中的主从切换线的位置。
主从切换线 后移后,那么 A2->A3,在越过 主从切换线时 做了主从切换。Cell3上的A实体实例变成Master。
A3->A2移动时,A实体Master实例完全在Cell3上。因此不会在发生主从切换。
以上
因此A B C 在Cell1 Cell2 Cell3 上,如果能战斗,那么它们的计算过程,最多是在3个Cell进程内处理的。
都以Master实体实例计算为主。
主要关于实体的创建、主从的确定、主从切换。
实体第一个实例创建
这本身没有多少可讲的需要知道的是,这个实体是Master(废话)
实体主从切换原则
如果实体Master实例,完全在Cell管辖区域(绿色部分区域),是不需要做主从切换的。如果实体Master实例,在Cell边界与主从切换线内移动,是不需要做主从切换的。
如果实体Master实例,越过主从切换线,则做主从切换。
详细,下面接着分析。
实体主从切换
上图为A实体从 Cell1 到 Cell0,并完成主从切换的过程。(注意,这里有一条主从切换线。)
正常的思路是,A1 -> A2, 在2个Cell的分界线上,就可以完成主从切换。
但是这样有个问题,A1->A2后,又A2->A1,如果有实体在2个Cell的分界线上来回跑。
则,会持续发生主从切换,造成系统错误。
因此,把主从切换线,从Cell边界线上往后移动。
如图中的主从切换线的位置。
主从切换线 后移后,那么 A2->A3,在越过 主从切换线时 做了主从切换。Cell3上的A实体实例变成Master。
A3->A2移动时,A实体Master实例完全在Cell3上。因此不会在发生主从切换。
以上
消息同步
所有实体消息处理,都必须有Master实体实例处理,再同步给Slave实体实例。因此A B C 在Cell1 Cell2 Cell3 上,如果能战斗,那么它们的计算过程,最多是在3个Cell进程内处理的。
都以Master实体实例计算为主。
相关文章推荐
- Go游戏服务器开发的一些思考(三十五):无缝世界场景构建与同步(二)
- Go游戏服务器开发的一些思考(三十七):无缝世界场景构建与同步(四)
- Go游戏服务器开发的一些思考(三十四):无缝世界场景构建与同步(一)
- Go游戏服务器开发的一些思考(三十二):关于无缝世界的一些思考
- Go游戏服务器开发的一些思考(十一):IO游戏同步
- Go游戏服务器开发的一些思考(十四):IO游戏同步(二)
- Go游戏服务器开发的一些思考(十七):IO游戏同步(三)
- Go游戏服务器开发的一些思考(十六):IO游戏服务器架构
- Go游戏服务器开发的一些思考(七):Redis
- Go游戏服务器开发的一些思考(二十四):命令行库封装技巧
- Go游戏服务器开发的一些思考(九):Docker桥接网络及固定IP (二)
- Go游戏服务器开发的一些思考(十八):Docker内网环境搭建(备忘)
- Go游戏服务器开发的一些思考(九):Docker桥接网络及固定IP (二)
- Go游戏服务器开发的一些思考(三十九):go reflect的正确使用方法
- Go游戏服务器开发的一些思考(二十八):登录流程(一)
- Go游戏服务器开发的一些思考(六):Docker Swarm Mode
- Go游戏服务器开发的一些思考(八):Docker桥接网络及固定IP
- Go游戏服务器开发的一些思考(二十五):Redis的Docker Swarm部署
- Go游戏服务器开发的一些思考(二十一):Go语言的两处脑残设定
- Go游戏服务器开发的一些思考(一):语言层面