当前位置:首页 > 科技 > 正文

游戏开发中的数据表示

大纲

目标

数据表示基础

巴别塔代表了交流的隔阂, 其实计算机世界中也存在这样一座巴别塔。因为计算机经过多年发展,无论从软硬件还是各个角度来说,都非常复杂。

比如说有非常多的编程语言, 典型如编译式的C、C++、,解释器形式的如、PHP、Ruby,字节编码的如Java这种跑在虚拟机上的。 编程语言无论是从编码结构还是对数据的描述都是不一样的。比如使用去操作一个二进制数据这就非常困难,因为它根本就不是为这个设计的。另外使用C去操作一个字符串也会很危险。编程语言之间要进行数据交换,其实也是很痛苦的,他们之间是存在这么一个隔阂的。

除了编程语言之外,还有很多不同的硬件。最直接的不同是字节顺序,它肯定是不一样的,有大端有小端。同样一个字节,在Intel的机器上是这么表示,到Arm上又是那么表示的。当彼此直接交换数据的时候也会出现问题。

还有更头疼的编码,例如在web中对编码的设置。这个其实也是计算机里面一个通信的隔阂所在。另外,还有很多复杂的数据类型,同样的一个数据,在内存中可能是一种结构,当需要持久化保存到硬盘上的时候,它又是另外一种结构。这两种结构都是无法直接读的。需要读取的时候,又需要 一种可视化的结构来输出。这就是所谓的“计算机世界中的巴别塔”。

计算机世界的巴别塔

例如:一台Intel CPU的机器上使用C++开发的程序,需要发给跑在Sparc上使用Java编写的程序。直接一个二进制的结构体打包,将一个hello字符串丢过去。对方肯定是不行的,会存在各种各样的问题。

image.png

如何才能更加边界有效地在异构系统间进行通信呢?引入DR工具!

All in can be by level of . -- David

我们所有的计算机问题,其实都是可以通过加一层中间层来解决的。DR工具简单来说也就是加一个中间层来解决两端之间的通信问题。

DR是异构系统间通信的桥梁

什么是数据表示呢?

数据表示英文为Data 简称DR,在了解DR之前,首先思考下什么是数据?

Data are the facts or from which is .

简单来说,数据就是信息的载体。

数据是信息的载体

forms for same for

例如:看视频直播时简单回复的666,它其实是一种信息,但它会有很多种表示方式。

同样的信息可以有不同的数据形态来做表示,由此可以引出数据表示的含义。数据表示其实是一组操作,可以描述、显示以及对信息的操作 。的就是这样一种工具,首先需要描述这个信息,描述玩了之后才可以使用pb对信息进行显示和操作。

DR is a group of that can 、 and on 。

数据表示的要素

业界现状(开源)

业界现状

例如:使用定义的

in

CS是上行包,SC是下行包的结构。

自定义结构的通信语言(IDL):

# login.proto
message MXPKG_HEADER_SC
{
  required int32 msg_id = 1;
  required int32 timestamp = 2;
  required fixed64 actor_id = 3;
}
message MXPKG_SC
{
  required MXPKG_HREADER_SC header = 1;
  required bytes body = 2;
}
message MXPKG_HREADER_CS
{
  optional int32 len  = 1;
  required int32 msg_id = 2;
  optional int32 bus_id = 3;
  optional int32 timestamp = 4;
  optional fixed64 actor_id = 5;
}
# 定义上行包的结构 
message MXPKG_CS
{
  required MXPKG_HREADER_CS header = 1;
  required bytes body = 2;
}

数据表示在游戏开发中的应用

, and

协议有哪些,游戏协议有何特点呢?

游戏开发中的协议

游戏协议具有非常明显的特点,以天刀为例:

天涯明月刀

游戏开发中协议的管理

如何管理复杂的协议内容,一般通过IDL来描述协议,并使用CS贡献IDL源文件。

协议的管理

游戏开发中异构系统协议交互

针对多类型终端协议的交互,在是一般采用Linux/x86/C++,在上采用PC//设备采用C++/C#/Lua。

游戏开发中版本协议兼容

快速迭代下的版本兼容,通过DR提供的版本控制来进行协议兼容。以为例,经常会使用和选项。

协议的版本兼容1

协议的版本兼容2

游戏开发中协议流量优化

流量优化主要通过DR提供的数据压缩功能进行流量优化

流量优化

除了协议,游戏开发过程中,还有哪里会用到DR呢?

游戏开发中数据存储的特点

传统的范式设计

以上可以说是运维和开发人员的噩梦

游戏开发中数据存储设计

数据存储设计

有话要说...

取消
扫码支持 支付码