KBEngine官方论坛

 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 配置 开服
查看: 145|回复: 8

KBE+第三方Room如何实现?

[复制链接]

20

主题

68

帖子

288

积分

中级会员

Rank: 3Rank: 3

积分
288
发表于 2018-12-4 00:10:55 | 显示全部楼层 |阅读模式
KBE 老大,  我们目前遇到几个问题还望您能给提供几个解决思路,
我们想做一个房间类对战游戏 需要KBE做登录,大厅, 以及数据的存储.   接入第三方作为战斗服务器(后台跑一个UE server) 匹配成功后与战斗服保持连接
现在遇到几个问题:
1 我们想指定一个或几个BaseApp 专门用于处理匹配请求 部署在单独的物理机上 防止匹配造成CPU性能瓶颈。  如何在脚本层区分这个BassApp 是我们想指定的匹配服
2 我们想外接战斗服, 可否在interfaceApp 上做异步Socket连接对应在interfaceApp上生成BattleRoom实体(为所有的战斗服统一IP和端口 担心BaseApp是负载均衡的 客户端实体会窜进来) 这个实体的数据由单独的Socket负责写入,  那么BaseApp上的玩家实体能否拿到这个实体?(不知道InterfaceServer 支持吗)
3 战斗服需要中央服务器负责开启和关闭,  同问题1  BaseApp 无法一一指定的话, 无法为不同的物理机增添一个战斗服管理器(负责开启战斗服, 关闭战斗服。 根据当前物理机动态负载均衡). 只能额外写一个战斗服管理器接入interfaceApp了

综上, 希望您能给予一定意见。   我明白KBE更适用于MMO的情况,  但是如果有这种需求该如何解决?
回复

使用道具 举报

5

主题

3591

帖子

214748万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2147483647

引擎扛把子

发表于 2018-12-4 10:49:36 | 显示全部楼层
baseapp上做房间匹配器, 每个虚拟房间记录了自己所开的ue4服务器ip和端口地址以及房间里面应该有的人, 把ip和端口下发给相关客户端, 客户端直接连ue4服务器。
脚本直接用poller.py和外部服务器通讯, 不一定要在interfaces进程上做, baseapp上可以直接开socket服务器。

参考https://bbs.comblockengine.com/f ... 5&highlight=ue4
QQ:3603661
3603661@qq.com
回复

使用道具 举报

20

主题

68

帖子

288

积分

中级会员

Rank: 3Rank: 3

积分
288
 楼主| 发表于 2018-12-4 11:57:29 | 显示全部楼层
看完之后大致思路已经清晰明了, 就是还有一个问题不是很懂。  就是baseapp 具有不可控性   我能否通过加入启动参数来指定这个baseeApp 的标签?
假设我有3台物理机,  1台负责跑所有kbe 开6个bassApp 负责维持用户连接以及处理用户请求   其余两台物理机各跑一个bassApp 用作房间管理器 负责监控CPU 内存情况 动态负载房间 开启关闭 UE4 DS
那么问题来了, 我如何指定我的bassApp ?   我能想到最理想的方法是加入启动参数  脚本层在onBaseAppReady 时读取启动参数 根据自身标签走不同的逻辑   可以这样吗?
回复

使用道具 举报

20

主题

68

帖子

288

积分

中级会员

Rank: 3Rank: 3

积分
288
 楼主| 发表于 2018-12-4 12:42:18 | 显示全部楼层
本帖最后由 zez199369 于 2018-12-4 12:55 编辑

为每台物理机编写不同的配置文件。 通过配置文件管理baseApp 职责?
回复

使用道具 举报

5

主题

3591

帖子

214748万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2147483647

引擎扛把子

发表于 2018-12-4 14:32:42 | 显示全部楼层
这么分似乎并没有什么好处。
如果你一定要分, 你可以读取进程的cid参数, 参考demo的baseapp的kbmain中onBaseAppReady的做法
QQ:3603661
3603661@qq.com
回复

使用道具 举报

14

主题

41

帖子

169

积分

注册会员

Rank: 2

积分
169
发表于 5 天前 | 显示全部楼层
zez199369 发表于 2018-12-4 11:57
看完之后大致思路已经清晰明了, 就是还有一个问题不是很懂。  就是baseapp 具有不可控性   我能否通过加入 ...

兄弟,方案定了吗?能否私聊下,做实时性要求高的游戏,你这个需求基本是标准需求了,KBE做匹配和玩家数据处理,外接一个移植客户端代码的战斗服务器用作战场同步,我目前也需要处理这种逻辑,而且挺想关闭cellapp和cellappmgr这两个进程,逻辑上不需要,总觉得空跑两个进程需要消耗服务器资源有点浪费
回复

使用道具 举报

20

主题

68

帖子

288

积分

中级会员

Rank: 3Rank: 3

积分
288
 楼主| 发表于 5 天前 | 显示全部楼层
CC2012520 发表于 2018-12-14 09:59
兄弟,方案定了吗?能否私聊下,做实时性要求高的游戏,你这个需求基本是标准需求了,KBE做匹配和玩家数 ...

cellapp可以直接在启动脚本里关掉  cellappmgr 必须留着。   核心点在于KBE和我们自己的服务器衔接问题。  而且我们有跨区的需求  baseApp 当战斗服守护进程感觉不现实。  bassApp 不能跨网段  尤其是跨国。   现在初步方案是interface 开启一条socket   每台战斗服物理机自己实现一个战斗服管理器   负责控制开关战斗服, 转发战斗服与中央服务器的请求。  所有的战斗服管理器全部连接KBE   战斗服内网与管理器通信。
回复

使用道具 举报

20

主题

68

帖子

288

积分

中级会员

Rank: 3Rank: 3

积分
288
 楼主| 发表于 5 天前 | 显示全部楼层
CC2012520 发表于 2018-12-14 09:59
兄弟,方案定了吗?能否私聊下,做实时性要求高的游戏,你这个需求基本是标准需求了,KBE做匹配和玩家数 ...

这是我目前摸索的一套方案,   有更好的想法我们可以互相交流。
回复

使用道具 举报

14

主题

41

帖子

169

积分

注册会员

Rank: 2

积分
169
发表于 5 天前 | 显示全部楼层
zez199369 发表于 2018-12-14 10:47
这是我目前摸索的一套方案,   有更好的想法我们可以互相交流。

baseapp不能跨网段?那即使分布式部署岂不是也只能在同一个内网分布式了?
我考虑的是单独设置一台baseapp来专门做匹配服务和结算服务,其他baseapp用于客户端连接,请求匹配的消息都发送到匹配baseapp上。
匹配成功后给战斗服发开房间消息和玩家列表,然后向该房间所有玩家下发战斗服务器ip和端口,玩家与战斗服务器建立连接,战斗结束后战斗服务器给匹配baseapp上传战斗结果,baseapp结算后给玩家所在baseapp同步数据,再通知玩家结算结果
战斗服务器和KBE的连接问题还没想好,不知道用http来做问题大不大,感觉为一个连接开启http服务也挺麻烦
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|KBEngine Forum

GMT+8, 2018-12-19 04:54 , Processed in 0.046440 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表