安卓rpg游戏存档位置

您所在的位置:网站首页 rpgsave存档修改 安卓rpg游戏存档位置

安卓rpg游戏存档位置

2023-05-30 05:58| 来源: 网络整理| 查看: 265

3ecec4b40cbd2d6cae5845a78e4284a3.png

一般情况下,RPGMaker都是单机游戏,单机游戏必然会涉及到存档,本文我们就来聊一聊RPGMakerMV的存档。

探秘系列的第一篇我们已经介绍,引擎存档位置在save目录下。

其实新建项目时,是不存在save目录的,当进行存档时,才会新建save目录。

不使用插件的情况下,存档位置有20个,如果超过了20就只能覆盖之前的存档。

319f2eb65505d84a18ed3448ec339ba0.png

当我进行首次存档时(选的第一个存档位置),将产生以下文件。

ec3479d6d82850e9b31419224ae4f14c.png

两个rpgsave文件打开后都是“天书”,这不是人能看懂的。想知道这些“天书”藏了什么秘密,我们就一起来探索一下。

首先我们找到存档界面:

rpg_scenes.js中定义了Scene_Save,Scene_Save继承自Scene_File。在Scene_Save部分,我们发现了一个方法onSavefileOk,这个方法应该就是存档的动作。

56986dbc979472c0049ddad1b2d024f5.png

其中核心的部分就4行,DataManager.saveGame(this.savefileId())。savefileId是文件编号,也就是存档界面中文档X里的X。

接着,我们来到rpg_managers.js,找到上述的saveGame方法。

443975163c49461451d07081dcc8f469.png

看到第四行,该方法又调用了本身的saveGameWithoutRescue,那只有接着往下看。

0b7a7cdeef416c6a9a9018ed65a12738.png

看到这里,我们大概看到了一些数据的处理,逐渐的,我们开始了解到“天书”的形成。 第二行,this.makeSaveContents(),字面意思就是形成存储内容,去看看如何形成,包含了哪些东西。

JsonEx.stringify是将对象JSON序列化转换成JSON字符串的方法,那多半makeSaveContents生成的就是一个JSON对象。

0df114d3389cb28685febee4f0bae888.png

果不其然,makeSaveContents返回的就是一个JSON对象,包含了除$gameTemp,$gameMessage,$gameTroop以外的游戏数据。

可能大家还想知道这些游戏数据里面是什么,数据较多,我们就在控制台输出下$gameActors看下,这个对象里是什么。

f53daf153440e581e1ea8f06956340bb.png

$gameActors实际是rpg_object中定义的Game_Actors,而Game_Actors是角色数组的一个包装类,简单的说就是Game_Actors中包含了所有角色的信息。

从$gameActors我们也能看出一些熟悉的信息,如默认角色“霍尔德”,各项状态信息(生命值、魔法值、幸运值等)以及装备信息、技能信息,与角色相关的信息通过该对象都能体现出来。

让我们回到saveGameWithoutRescue方法,既然数据已经形成,接下来就是进行存储了。存储前,还做了数据大小的校验,过大会发出警告。估计是WEB端,存储是放在浏览器localStorage中的,各个浏览器厂商对localStorage的大小都有限制,例如chrome的localStorage最大支持5M,如果超过5M是无法进行存储的(当然方法也有,这里就不展开了)。

接着往下看,StorageManager.save(savefileId, json)进行了数据的存储。

4915ff0066dec107d9524767697afa93.png

saveToLocalFile、saveToWebStorage分别是存储至本地文件系统及存储至浏览器的方法。

这里我们简单看下存储至本地文件系统的过程:

314bab3d5413532c91850a0dddabc642.png

第二行就解释了“天书”的形成原因,LZString是JavaScript的一个库,compressToBase64将字符串压缩并编码,形成了我们看不懂的“天书”。接下来就是创建本地目录,将字符串写入本地文件中。

b1e41e23e882c7e4616f09333ceceef1.png

存储至浏览器的处理过程类似,只是最终将数据放在了localStorage。

以上过程就是RPGMakerMV的存档过程。

单机游戏不可或缺的一部分就是SL大法,今天我们大概分析了下S,下回我们捋一捋L。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3