替代Protocol buffers 的FlatBuffers:高效利用内存的序列化函数库(Unity中测试)

孙广东   2015.7.4



http://www.open-open.com/lib/view/open1441004786315.html


             虽然FB的反序列化超级快,但是数据大小还是蛮大的(可能的原因是不需要解析,直接访问binary buffer,所以不能对数据进行压缩),带来的传输或存储开销,可能会抵过一部分反序列化的时间。感觉上,FB的使用场景上还是很受限,在移动端可能是一个应用场景。


protocol buffer的作者后来又弄了一个Cap'n Proto   但是好像应用场景没有太火


http://google.github.io/flatbuffers/flatbuffers_support.html


               提供了对  Unity游戏引擎C# 支持!(本身 FlatBuffers 就是 移动平台移动开发 而出的!)


 

关于Unity的示例代码  必须要学习啊!!!!!!


http://exiin.com/blog/flatbuffers-for-unity-sample-code/


            FlatBuffers 是 Google为游戏和移动应用而开发的开源、跨平台的序列化库。支持 C++, Java, C#, Go, Python and JavaScript等语言。中国有5亿智能手机,其中低端设备占多数,在 CPU 和内存都受限的情况下,能否开发出高性能且低内存占用的 Android程序决定了你的应用的用户覆盖率和留存率。


 

Unity使用 FlatBuffers 作为存储格式移动版)


翻译: http://qiita.com/akerusoft/items/8c10f8a40fee722e6d1b

Unity提供了 PlayerPrefs作为本地的数据存储,  但是速度不是很快!


下面就是一个测试使用 FlatBuffers


Unity 5.3.3f1 版本


FlatBuffers  1.3.0版本


运行在 Android /IOS 测试


FlatBuffers序列化保存为二进制。


cocos2dx 游戏数据使用


还应用Facebook上。


FlatBuffers,分为  结构定义 (架构) 和 数据


它要在服务器和客户端可用。


使用 FlatBuffers 的流程


  • 结构定义
  • 自动生成的相应的  语言(java,C# ,java等)文件
  • 序列化/反序列化过程


schema language (aka IDL, Interface DefinitionLanguage)


namespace Data;


file_identifier"MYFI";


unionData
{
    MonsterDataV1
}


tableRoot
{
    data:Data;
}


tableMonsterDataV1
{
    name:string;
    hp:uint;
    hitRate:float;
    speed:uint;
    luck:uint;
}


tableMonsterDataV2
{
    name:string;
    hp:uint;
    hitRate:float;
    speed:uint;
    luck:uint;
    defence:uint;
}


root_typeRoot;


来自 <http://qiita.com/akerusoft/items/8c10f8a40fee722e6d1b>


首先是表table                   MonsterDataV1


假设是在 rpg 游戏中使用的怪物结构


table  字段声明(类型写在 后面)


字段是通过使用 内置类型  进行描述。


除了内置类型,你也可以使用自定义的类型(除了当前table


以下是union的数据。


        这是种枚举类型,主要特征  table表作为字段。


在本例中是定义的字段  只有 MonsterDataV1


union  中的所有字段占用同一个内存存储(同一时间也只有一个字段有效)。


如果你也可以添加 MonsterDataV2 字段,但数据也只有一个存储。(听起来像一个 c 语言中union


基于这种分析。


        "file_identifier"是写在  文件的开头的  文件 ID,您可以使用 4 ASCII 字符 (字节 4-7)。


它是可能要检查服务器发送数据,等等......


升级注意事项


应用程序或游戏,要进行数据升级,当一项新功能被增加应用程序


  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值