KBEngine官方论坛

 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 配置 开服
查看: 709|回复: 10

关于Entity的AOI功能的建议

[复制链接]

7

主题

21

帖子

131

积分

注册会员

Rank: 2

积分
131
发表于 2017-10-10 13:45:01 | 显示全部楼层 |阅读模式
现有的AOI在rpg的空间功能上作用很大, 其属性同步很方便. 如果将AOI拓展开, 加上一层基于逻辑范围的"逻辑空间", 根据是否处于该逻辑空间来决定是否可见是否同步属性, 这样就可以把引擎拓展成"适合所有类型游戏"的服务器引擎, 没有实际空间的游戏如棋牌类休闲类的就可以利用属性同步来做更多的事情.*Entity的关于逻辑空间的属性, 决定其处于哪些Entity, 一个Entity可以同时处于多个逻辑空间
*Entity是否同步到其他Entity由该Entity所处于的逻辑空间决定
*可以完全替代空间的AOI: 由计算空间坐标来决定所处的逻辑空间
*所有的业务都能使用属性同步来实现
*可以按照逻辑空间来划分服务器的分布, 服务器之间的同步也是逻辑空间的属性同步

个人拙见, 望指教!
回复

使用道具 举报

30

主题

7138

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
16457
QQ
发表于 2017-10-10 14:11:12 | 显示全部楼层
https://github.com/kbengine/kbengine/issues/129


你的建议挺好,我感觉你思考这个问题的动机在于棋牌类游戏是否需要aoi概念的问题。
其实把aoi概念改完view概念就适合所有游戏了。

棋牌游戏是否需要空间概念其实你参考unity和ue4就可以看出你做任何游戏都需创建所谓的场景,把你需要的内容都放在场景中,哪怕是棋牌游戏的牌,其实空间概念适合所有游戏
热爱游戏、热爱开源!
柯标
3603661@qq.com

柯标
3603661@qq.com
回复

使用道具 举报

7

主题

21

帖子

131

积分

注册会员

Rank: 2

积分
131
 楼主| 发表于 2017-10-10 14:21:35 | 显示全部楼层
kbe 发表于 2017-10-10 14:11
https://github.com/kbengine/kbengine/issues/129

是的, 空间适合很多情况, 但是空间有一个特点: 空间是互斥的, 不能同时处于不同空间点, 不过, 看成在空间上划的不同的圈, 一个点可以同时处于多个圈中, 我想过用控制AOI的范围, 和entity的坐标的方式来实现逻辑空间的效果, 太复杂而且不能覆盖所有情况
回复

使用道具 举报

7

主题

21

帖子

131

积分

注册会员

Rank: 2

积分
131
 楼主| 发表于 2017-10-10 14:37:07 | 显示全部楼层
例子:
有一个游戏世界的总空间, 在这个空间中包含了所有其他空间和所有子空间
玩家可以划分成在线/离线, 玩家登录后, 在线空间从离线空间中得到该玩家对象
玩家要开始游戏, 进入匹配空间, 匹配空间从在线空间得到该玩家对象
匹配成功后进入房间空间, 玩家中途掉线就处于掉线空间, 重新登录还是在房间空间中, 如果是掉线算离开房间的需求, 那么处于掉线空间, 就把玩家中房间空间中剔除
玩家可以收到来自好友空间的聊天消息, 房间聊天空间里的聊天消息, 玩家被禁言就是进入禁言空间, 能发送聊天的条件就是处于该聊天空间并且没有处于禁用空间, 处于该空间的所有玩家将收到消息
回复

使用道具 举报

7

主题

21

帖子

131

积分

注册会员

Rank: 2

积分
131
 楼主| 发表于 2017-10-10 14:41:14 | 显示全部楼层
例子:
房间中的旁观玩家也算一个空间, 将不会收到游戏玩家会收到的操作通知, 而地理空间的同步方式就很难做到这一点
回复

使用道具 举报

7

主题

21

帖子

131

积分

注册会员

Rank: 2

积分
131
 楼主| 发表于 2017-10-10 14:44:33 | 显示全部楼层
如果把entity的属性也看出entity, 那么世界将只由entity和逻辑空间组成, 其他所有规则将逻辑空间的关系组成
回复

使用道具 举报

30

主题

7138

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
16457
QQ
发表于 2017-10-10 17:50:11 | 显示全部楼层
Edward 发表于 2017-10-10 14:37
例子:
有一个游戏世界的总空间, 在这个空间中包含了所有其他空间和所有子空间
玩家可以划分成在线/离线, 玩 ...

这个例子不是很恰当,这样做太复杂。匹配等大厅是实现在baseapp上管理的,不需要创建物理空间管理。
玩家掉线还是断线还是禁言基本都是用状态来标识,棋牌类不涉及空间跳转想真正移除房间可以直接销毁cell部分。
热爱游戏、热爱开源!
柯标
3603661@qq.com

柯标
3603661@qq.com
回复

使用道具 举报

30

主题

7138

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
16457
QQ
发表于 2017-10-10 17:52:43 | 显示全部楼层
Edward 发表于 2017-10-10 14:41
例子:
房间中的旁观玩家也算一个空间, 将不会收到游戏玩家会收到的操作通知, 而地理空间的同步方式就很难做 ...

房间观察挺简单,直接让玩家实体进入某个房间aoi能看到所有实体就可以监听了,客户端禁止操作同时服务器设置状态为观察者,在其他客户端中发现这个状态的人都作为旁观者来表现
热爱游戏、热爱开源!
柯标
3603661@qq.com

柯标
3603661@qq.com
回复

使用道具 举报

30

主题

7138

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
16457
QQ
发表于 2017-10-10 17:54:11 | 显示全部楼层
Edward 发表于 2017-10-10 14:44
如果把entity的属性也看出entity, 那么世界将只由entity和逻辑空间组成, 其他所有规则将逻辑空间的关系组成 ...

那样使用比较复杂,同时没发现太大好处。
热爱游戏、热爱开源!
柯标
3603661@qq.com

柯标
3603661@qq.com
回复

使用道具 举报

30

主题

7138

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
16457
QQ
发表于 2017-10-10 17:56:03 | 显示全部楼层
你可以举例几个真实需求和市面上已经存在的游戏的玩法。
热爱游戏、热爱开源!
柯标
3603661@qq.com

柯标
3603661@qq.com
回复

使用道具 举报

55

主题

236

帖子

994

积分

高级会员

Rank: 4

积分
994
发表于 2017-10-10 20:47:22 | 显示全部楼层
Edward 发表于 2017-10-10 14:37
例子:
有一个游戏世界的总空间, 在这个空间中包含了所有其他空间和所有子空间
玩家可以划分成在线/离线, 玩 ...

挺好的一个设想,你的意思就是将不管逻辑上的业务管理器还是说空间即cell上的物理空间都视作为 空间概念来进行对待,不知道我想的与你是否大概一样,我没细想,我觉得如果按照你的这个概念的话,不太能发挥kbengine的优势,或者说不太符合kbengine框架思想
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|KBEngine Forum

GMT+8, 2018-12-11 16:37 , Processed in 0.034444 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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