查看: 2584|回复: 8

[有事请教] 怎么优化存档的速度

[复制链接]
梦石
0
星屑
665
在线时间
50 小时
注册时间
2018-6-27
回帖
30
发表于 2022-6-16 22:54:10 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
因为我想弄个触发事件自动存档的效果,但每次存档都会有明显的卡顿,很不爽,有没有办法优化存档速度?需不需要用一些数据压缩手段?
梦石
0
星屑
22573
在线时间
2604 小时
注册时间
2015-7-4
回帖
917
发表于 2022-6-16 23:30:46 | 显示全部楼层
存档是计算机在写数据,数据多了自然就感觉卡顿,你要优化的是你的存档大小。
回复

使用道具 举报

梦石
0
星屑
7997
在线时间
1442 小时
注册时间
2018-12-16
回帖
1843
发表于 2022-6-17 00:49:24 | 显示全部楼层
本帖最后由 play337 于 2022-6-17 00:57 编辑

我记得我之前有下载一个优化存盘的插件....
叫.....save.js 甚麽的...
他可以让存盘变很快 而且文件变很小

一开始我用的很开心.... 后来存很多档.... 竟然LOAD不出来了....

后来我多测试几次.... 他会让存盘变的很不稳.... 我就移除了...

01. NAPI_ExcludeSaveData.js
https://napiiey.github.io/plugins/napi_excludesavedata.html
02. LightSaveData.js
https://raw.githubusercontent.co ... er/LightSaveData.js

帮你找出来了....你试试看....

点评

看楼下,说不定对你有用(我就是用第二第三段的function改造一下,然后实效保存$data数据的)  发表于 2022-6-17 05:12
回复

使用道具 举报

梦石
0
星屑
2866
在线时间
446 小时
注册时间
2016-9-26
回帖
1175
发表于 2022-6-17 05:08:36 | 显示全部楼层
本帖最后由 任小雪 于 2022-6-17 05:11 编辑

你若果实力够且不嫌麻烦且不怕存档坏掉(仅考虑一个存档自然要害怕坏掉)的话,其实可以分情景单个情景单独存档部分数据。
(以下,你需要懂点脚本,知道怎么做插件和调用function,不难……但是,如果你用过其他人什么别的插件,我就不知道什么情况了)
以下是rmmv引擎本身的存档读档代码(js文件的原文)

[pre lang="javascript"]
//这段猜测跟存档位置还是存档文件名有关
DataManager.makeSavefileInfo = function() {
    var info = {};
    info.globalId   = this._globalId;
    info.title      = $dataSystem.gameTitle;
    info.characters = $gameParty.charactersForSavefile();
    info.faces      = $gameParty.facesForSavefile();
    info.playtime   = $gameSystem.playtimeText();
    info.timestamp  = Date.now();
    return info;
};
//存档哪些东西
DataManager.makeSaveContents = function() {
    // A save data does not contain $gameTemp, $gameMessage, and $gameTroop.
    var contents = {};
    contents.system       = $gameSystem;
    contents.screen       = $gameScreen;
    contents.timer        = $gameTimer;
    contents.switches     = $gameSwitches;
    contents.variables    = $gameVariables;
    contents.selfSwitches = $gameSelfSwitches;
    contents.actors       = $gameActors;
    contents.party        = $gameParty;
    contents.map          = $gameMap;
    contents.player       = $gamePlayer;
    return contents;
};
//读档哪些东西
DataManager.extractSaveContents = function(contents) {
    $gameSystem        = contents.system;
    $gameScreen        = contents.screen;
    $gameTimer         = contents.timer;
    $gameSwitches      = contents.switches;
    $gameVariables     = contents.variables;
    $gameSelfSwitches  = contents.selfSwitches;
    $gameActors        = contents.actors;
    $gameParty         = contents.party;
    $gameMap           = contents.map;
    $gamePlayer        = contents.player;
};
[/pre]

点评

厉害!  发表于 2022-6-17 13:12
回复 1 0

使用道具 举报

梦石
0
星屑
100
在线时间
1022 小时
注册时间
2021-3-24
回帖
544

MZ评测员

发表于 2022-6-17 11:03:43 | 显示全部楼层
去掉不需要的字段
自己进行存档压缩
全家活光光~
回复

使用道具 举报

梦石
1
星屑
5596
在线时间
456 小时
注册时间
2006-1-31
回帖
1409
发表于 2022-6-17 12:00:54 | 显示全部楼层
劝玩家换一个M2的固态?
回复

使用道具 举报

梦石
0
星屑
14720
在线时间
2175 小时
注册时间
2016-9-20
回帖
777
发表于 2022-6-17 14:19:53 | 显示全部楼层
本帖最后由 ppspssss 于 2022-6-17 14:53 编辑
任小雪 发表于 2022-6-17 05:08
你若果实力够且不嫌麻烦且不怕存档坏掉(仅考虑一个存档自然要害怕坏掉)的话,其实可以分情景单个情景单独 ...


你这么说我想到流式加载 要制作者对游戏存档机制完全熟悉, 根据游戏的实际情况进行制定切多少份 越大则分成越多份, 比如 分成 存档分档A 存档分档B 存档分档C...  存储时, 比如第1秒, 储存存档分档A , 第2秒储存存档分档B , 第3秒储存存档分档C ,   或者 存档分档1 存档分档2 存档分档3..., , 但因存档如此, 所以加载时也是要 分档加载, 存储时要告诉玩家存档中不能关闭电源或关闭游戏,  若储存中途退游戏会造成部分分档没有储存, 就会存档失败
贴子只供参考我贴子内容有很多只是我自己标识的内容代指不是原来意思,偏向发贴当时的想法(后来回看贴发现有很多错误,会造成误导 ),如果想靠谱点应 找相关正确的文章   -- 2025/4/19
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部