【Unity3D】本地数据加密_1

来源:互联网 发布:ubuntu麒麟 下载 编辑:程序博客网 时间:2024/06/05 04:44

游戏的本地数据是相当重要的,像职业表,装备表等等,这些数据就是整个游戏的骨骼,没有它的支撑,即使游戏创意新颖,画面华丽那也不过是一摊肥肉而已。

而用于存放这些数据的方式也相当繁杂,有人用XML,有人用Json,有人用SQLite也有人直接用记事本或者CSV之类的纯文本。

虽然不能说上述的几种形式有什么不好,但是从安全和性能的角度来将,这几种方式也不算合理。

Json的序列化和反序列化的效率都是比较低的,SQLite更是用到sql语句进行查询这个效率就更低了,XML相对与这几者来说算是比较中庸,而CSV和纯文本,不推荐使用,因为这会使游戏数据变的相当难以管理,甚至随着字段的增多数据的对应关系都难以分清。

而假如游戏是一个经典RPG的话,那剧情文本将非常庞大,此时用JSON或者SQLite,就显得格格不入,也许玩家会认为你是在与他作对。

我们知道,游戏本地数据是在游戏开始之前就全部读入内存以备不时之需。这种数据一般也不会很多,一个商城表或者技能表能达到几百条就很大了,装备道具也许会比较多,但也是视游戏规模和丰富程度决定,因此我们应尽量把此类数据加密并压缩到最小。

举例子说,一个商城表有20条数据,5个字段分别是ID,名字,图标,价格,和描述,如下图

直接保存为Excel占用空间32K,保存为CSV则占用空间5K。Excel在非Windows平台无法读取,CSV还是比较合适的,但是它却无法保证数据的安全性和易维护性。

数据的加密压缩方式有很多,接下来就介绍笔者所使用的一种方式,当然技术能力有限,只能做到简单的加密。

而对于读取数据,为了弥补解密和解压缩的消耗,读取应该采用流读取的方式,以二进制流来读取数据,性能就非常高了。

先简单介绍到这,下一篇将阐述加密和流读取的过程和原理。

这里是GQY,一个游戏爱好者,我们下篇见。


0 0