首页 - 神途资讯 > 游戏服务端开源引擎GoWorld教程——(9)源码解析之dispatcher

游戏服务端开源引擎GoWorld教程——(9)源码解析之dispatcher

发布于:2024-03-12 作者:admin 阅读:62

是的中心部件,它连接着所有gate和game,负责分布式系统的控制和消息的传达。

系列文章

罗培羽:游戏服务端开源引擎教程—— (1)安装和运行

罗培羽:游戏服务端开源引擎教程——(2)Unity示例双端联调

罗培羽:游戏服务端开源引擎教程——(3)手把手写一个聊天室

罗培羽:游戏服务端开源引擎教程——(4)制作多频道聊天室

罗培羽:游戏服务端开源引擎教程——(5)登录注册和存储

罗培羽:游戏服务端开源引擎教程——(6)移动同步和AOI

罗培羽:游戏服务端开源引擎教程——(7)源码解析之启动流程和热更新

罗培羽:游戏服务端开源引擎教程——(8)源码解析之gate

罗培羽:游戏服务端开源引擎教程——(9)源码解析之

罗培羽:游戏服务端开源引擎教程——(10)源码解析之

连接情况

也是分布式结构,可以开启多个。每个的职能相同,仅仅为分解压力,开启监听,game和gate都连接上它。

记录了哪些信息

分发器的任务是消息分发,它需要知道每个连接体的信息。对于每个连接进来的game,会保存如下的结构,主要记录game的id等。

对于每个连接进来的gate,会保存y的结构,记录。

还必须包含实体在哪个game的信息,假如通过rpc去调用其他game的实体,就必须要知道实体所在的位置。所以对游戏服中的,要保存的信息封装在如下的,记录了它所在游戏服的Id。

所以每个至少要保存所有的game、所有的gate和一些的信息,并且以id为索引,能够很快查找到各个在哪个game。

创建实体的过程

以下解析创建实体的过程。由自定义代码在game中创建实体,例如调用e让在指定的game创建指定类型的实体。e会发送信息给某一个,会根据的id做哈希选择一个去发送。

当收到消息后,会选择要转发的game,如果参数是0,它就随机选取一个game,否则转发给参数指定的game。

在game收到消息后,它最终会调用中创建实体的方法,代码如下。它会根据要创建的类型反射创建,然后将它放到中。最后再通知说有被成功创建。

当收到后,做些后处理即可完成实体的创建。

整个过程如下。

推荐些资料

笔者所著《网络游戏实战(第2版)》是一本专门介绍如何开发多人网络游戏的实战书籍,手把手教你搭建网络框架,制作大型项目。

「同步」也是网络游戏开发的核心课题。玩家的位置和旋转需要同步给其他玩家,然而网络条件差,会不同步和卡顿。笔者主讲的live《网络游戏同步算法》揭示做好同步的方法,欢迎收听。

二维码

扫一扫关注我们

版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,请告知我们,本站将立刻删除涉嫌侵权内容。

相关文章