日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

游戏开发中的数据表示

發(fā)布時間:2023/12/18 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 游戏开发中的数据表示 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

聲明:本文內(nèi)容源自騰訊游戲?qū)W院程序公開課_服務(wù)端

一、數(shù)據(jù)表示的基礎(chǔ)

什么是數(shù)據(jù)表示?

數(shù)據(jù)是信息的載體。

數(shù)據(jù)表示是一組操作,可以描述、顯示、操作信息。

?

數(shù)據(jù)表示的要素

IDL - 接口描述語言

  • IDL是用來描述軟件組件接口的一種計算機語言。IDL通過一種中立的方式來描述接口,使得在不同平臺上運行的對象和用不同語言編寫的程序可以相互通信交流;

Data - Operation - 數(shù)據(jù)操作支持

  • serialize(序列化)
  • deserialize(反序列化)
  • visualize(可視化)
  • transform(轉(zhuǎn)化)
  • compression(壓縮):數(shù)據(jù)運行時。

?

Version Control - 版本控制支持

  • 數(shù)據(jù)可以有不同版本,且版本間可按照一定規(guī)則兼容

?

業(yè)界現(xiàn)狀

  • Google Proto Buffer (Protobuf)
  • Apache Thrift Binary Protocol
  • Tencent Data Representation (TDR)

?

Protobuf In Action

Protobuf具體的使用

通過IDL語言去定義一個.PROTO文件,然后PROTOBUF會對各個平臺提供PROTO C這么一個編譯器,然后PROTO C編譯器我們可以指定我要生成對應(yīng)的C#的DR的表示還是對應(yīng)的C++的DR表示。

一個學(xué)習(xí)的機會:編譯一個自己熟悉的語言,比如用PROTOBUF編一個點.c和.cpp文件出來,它里面怎么操作數(shù)據(jù)的,怎么壓縮數(shù)據(jù)的,整個步驟都是可以看到的。

?

二、數(shù)據(jù)表示在游戲開發(fā)中的應(yīng)用

游戲開發(fā) - 協(xié)議(以天刀為例)

  • 交互內(nèi)容復(fù)雜:多重嵌套結(jié)構(gòu)體/二進制數(shù)據(jù)。
  • 協(xié)議數(shù)量巨大:4000+條協(xié)議定義;13000+結(jié)構(gòu)體定義。
  • 變更頻繁
  • 網(wǎng)絡(luò)流量巨大

?

游戲開發(fā) - 協(xié)議管理

?

游戲開發(fā) - 異構(gòu)系統(tǒng)協(xié)議交互

多類型終端協(xié)議交互

  • server:Linux / x86 / C++
  • client:PC / iPhone / Android;C++ / C# / lua

?

游戲開發(fā) - 協(xié)議版本兼容

?

游戲開發(fā) - 協(xié)議流量優(yōu)化

流量優(yōu)化:通過DR提供的數(shù)據(jù)壓縮功能進行流量優(yōu)化。

?

游戲開發(fā) - 數(shù)據(jù)存儲的特點

  • 數(shù)據(jù)結(jié)構(gòu)復(fù)雜:每個玩家的存儲涉及到成千上萬個字段;
  • 數(shù)據(jù)結(jié)構(gòu)不穩(wěn)定:每次版本更新有可能會新增字段或擴大原有字段;
  • update > read > insert > delete。

?

游戲開發(fā) - 數(shù)據(jù)存儲設(shè)計

Key - Value數(shù)據(jù)存儲模型

  • Key - 角色ID
  • Value - 二進制角色數(shù)據(jù)
  • MySQL Blob

使用DR管理Blob數(shù)據(jù)

  • 數(shù)據(jù)序列化/反序列化
  • 數(shù)據(jù)兼容
  • 數(shù)據(jù)壓縮

我們存盤的時候就是把玩家的數(shù)據(jù)先serialize成我們的DR描述的中間格式,然后存到DB里面,DB里面再讀取出來然后再恢復(fù)成我們的runtime格式

?

三、感受

剛開始概念會介紹的比較多,可能講概念大家比較難以理解,但是做一個東西還是首先要明白基礎(chǔ)概念的定義,后面在基礎(chǔ)概念的定義上進行展開

?

轉(zhuǎn)載于:https://www.cnblogs.com/OctoptusLian/p/9429351.html

總結(jié)

以上是生活随笔為你收集整理的游戏开发中的数据表示的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。