阿八博客
  • 100000+

    文章

  • 23

    评论

  • 20

    友链

  • 最近新加了很多技术文章,大家多来逛逛吧~~~~
  • 喜欢这个网站的朋友可以加一下QQ群,我们一起交流技术。

网络游戏中玩家数据的处理

欢迎来到阿八个人博客网站。本 阿八个人博客 网站提供最新的站长新闻,各种互联网资讯。 喜欢本站的朋友可以收藏本站,或者加QQ:我们大家一起来交流技术! URL链接:https://www.abboke.com/jsh/2019/0904/110778.html 1190000020275210

背景

网络游戏中最重要的数据莫过于玩家在游戏的过程中产生的数据。

可以简单的分成两类:

存档数据过程记录数据

第一类数据主要是类似角色『基础』信息,背包、技能、任务,以及所有(或者部分)玩家共有的王国、地图、联盟等信息。
第二类主要是类似『日志』信息一样的,比如「某个地方某角色使用了某道具」这样的操作记录。

这篇文章中我们主要讨论第一种数据的处理,关于后一种用作记录和分析的数据,可能会在后面写一个专门的Blog介绍。

存储结构

首先我们需要决定数据的形态,和描述的方法。
这里有一个选择:以『条目格式』为核心,还是以『文档格式』为核心。

『条目格式』的优点:看起来较为平坦,方便实时落地,和各种数据库存储模式搭配方便,外部工具修改方便,便于批量处理。
『文档格式』的有点:通常是树形结构,和大部分脑中的角色模型更加匹配,在内存中处理的时候,通常来说效率更高。

采用不同的数据结构通常会影响到项目使用的技术,甚至直接影响到整体架构和处理模型。如果使用条目,可能就会用memcache/redis存储,使用更多的无状态业务逻辑处理方式。

我们团队习惯的,是以 struct 为核心,配合 bson/protobuf 实现接口和序列化,主要操作都在内存中处理的方式。
使用的时候,内存中的数据结构为 Go 的结构体;落地时使用MongoDB数据库的保存的bson格式的文档(Document);在和移动端交互以及某些内部RPC接口调用的时候,使用protobuf作为传输格式;配置方面,使用etcd同步的csv条目数据。

不论是bsonprotobuf还是 csv 条目数据,都可以使用的是 Go 里面的扩展性极强的 struct tag 来完成自动转换。

相关文章

暂住......别动,不想说点什么吗?
  • 全部评论(0
    还没有评论,快来抢沙发吧!