KBEngine官方论坛

 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 配置 开服
查看: 526|回复: 9

protobuf类似功能支持

[复制链接]

58

主题

215

帖子

803

积分

高级会员

Rank: 4

积分
803
发表于 2018-12-22 14:32:40 | 显示全部楼层 |阅读模式
目前的网络传输协议算是把基于协议号的通讯方式优化的很好了

但如果能支持类似protobuf的基于类做自动差异和压缩功能的话,能减少用户手动去写和维护的成本,对有些状态同步类游戏也是节约不少成本

这也算是标准化需求了,我觉得kbengine可以考虑支持下:)
回复

使用道具 举报

5

主题

5245

帖子

214748万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2147483647

引擎扛把子

发表于 2018-12-24 15:16:38 | 显示全部楼层
你说的手动写是指写什么?
QQ:3603661
3603661@qq.com
回复

使用道具 举报

58

主题

215

帖子

803

积分

高级会员

Rank: 4

积分
803
 楼主| 发表于 2018-12-24 16:11:50 | 显示全部楼层
柯标 发表于 2018-12-24 15:16
你说的手动写是指写什么?

如果用户用状态同步,就需要维护一个状态类,然后通过状态比较来同步差异化数据到客户端,这一块逻辑用pb是自动支持的,包括最小差异和压缩,如果用消息的话,就要手动比较不同状态的差异值,然后打包,标记,序列化等
回复

使用道具 举报

5

主题

5245

帖子

214748万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2147483647

引擎扛把子

发表于 2018-12-24 16:52:07 | 显示全部楼层
这个以后考虑吧。
当前你可以把状态拆开, 没改变的状态不会同步
QQ:3603661
3603661@qq.com
回复

使用道具 举报

58

主题

215

帖子

803

积分

高级会员

Rank: 4

积分
803
 楼主| 发表于 2018-12-24 17:30:09 | 显示全部楼层
柯标 发表于 2018-12-24 16:52
这个以后考虑吧。
当前你可以把状态拆开, 没改变的状态不会同步

嗯,期待kbengine越来越完善,行业里如果有一套高可用的开源服务端引擎,会让这个行业的门槛大大降低,让开发者把更多的精力放在逻辑设计上
回复

使用道具 举报

31

主题

80

帖子

263

积分

中级会员

Rank: 3Rank: 3

积分
263
发表于 2019-5-23 14:53:44 | 显示全部楼层
本帖最后由 sekkit 于 2019-5-23 14:56 编辑

实现一个python层的数据模型,你就可以自己实现diff和compress了。
就是在cbe的自定义数据类型实现里面,做这个事情。
如果是性能敏感型游戏,可以考虑用cython写,同样的实现可提高20%性能,但是可能带来C层内存泄露问题...且不可热更新好像。。
回复

使用道具 举报

58

主题

215

帖子

803

积分

高级会员

Rank: 4

积分
803
 楼主| 发表于 2019-5-23 15:35:37 | 显示全部楼层
sekkit 发表于 2019-5-23 14:53
实现一个python层的数据模型,你就可以自己实现diff和compress了。
就是在cbe的自定义数据类型实现里面,做 ...

能具体点吗?没太理解
回复

使用道具 举报

31

主题

80

帖子

263

积分

中级会员

Rank: 3Rank: 3

积分
263
发表于 2019-5-23 15:40:35 | 显示全部楼层
CC2012520 发表于 2019-5-23 15:35
能具体点吗?没太理解

class Data:
     def pack(incremented=True):
          return 序列化数据(diff或者全量)
     def unpack(serialized_data):
          还原,或者增量更新数据

引擎的def xml什么的自定义数据类型,在上面实现就好了。
回复

使用道具 举报

58

主题

215

帖子

803

积分

高级会员

Rank: 4

积分
803
 楼主| 发表于 2019-5-23 17:48:20 | 显示全部楼层
sekkit 发表于 2019-5-23 15:40
class Data:
     def pack(incremented=True):
          return 序列化数据(diff或者全量)

这没意义啊,比如读一段字节流进来,哪几个字节对应哪个字段呢,字符串怎么定义,数组和json格式怎么解析等等,这些全都需要定义啊
回复

使用道具 举报

31

主题

80

帖子

263

积分

中级会员

Rank: 3Rank: 3

积分
263
发表于 2019-5-23 22:01:52 | 显示全部楼层
本帖最后由 sekkit 于 2019-5-24 02:10 编辑
CC2012520 发表于 2019-5-23 17:48
这没意义啊,比如读一段字节流进来,哪几个字节对应哪个字段呢,字符串怎么定义,数组和json格式怎么解析 ...

了解一下django的ORM
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|KBEngine Forum

GMT+8, 2019-6-25 11:40 , Processed in 0.032585 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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