设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 3892|回复: 6
打印 上一主题 下一主题

[原创发布] 网页版MV有没有热更新的方法?

[复制链接]

Lv4.逐梦者

梦石
0
星屑
5144
在线时间
604 小时
注册时间
2017-10-21
帖子
348
跳转到指定楼层
1
发表于 2018-4-3 20:37:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
50星屑
本帖最后由 微笑的迪妮莎 于 2018-4-3 20:40 编辑

最近我弄了个网页版的在线MV游戏
http://www.chinamugen.com/fmsj/index.html
有兴趣的朋友们可以看看(第一次加载需要点时间,有了缓存后就不卡了)
然后我跟个朋友@2256538860 一起测试游戏BUG
少图片和js倒是可以通过FTP传输到主机里可热更新,刷新后就解决了
但是遇到事件系统设置方面就无奈了
比如我一开始设定的游戏是队列模式的(有跟屁虫),后来因为事件原因我要把队列模式关了,
但是我吧整个DATA更换了存档里还是运用的队列模式!!!

事件也是一样,更新后,在存档里还是没有更新...
不知道有没有什么办法能做到呢?


还有个问题,
如果上面有问题能解决的话那这个问题也能解决了,
就是我在网页上放的游戏进度是第一章,
那么我做完第二章上传主机覆盖第一章的数据
从而达到热更新的效果(存档续档)

最佳答案

查看完整内容

简单来说就是...在读取存档数据后根据存档数据储存的版本进行数据操作即可 DataManager.extractSaveContents = function(contents) { //游戏系统 = 内容 系统 $gameSystem = contents.system; //游戏画面 = 内容 画面 $gameScreen = contents.screen; //游戏计时 = 内容 计时 $gameTimer = contents.timer; //游戏开关组 = 内容 开关组 $gameSwitches = contents.s ...

Lv3.寻梦者

梦石
0
星屑
1232
在线时间
1017 小时
注册时间
2011-4-30
帖子
1516
2
发表于 2018-4-3 20:37:11 | 只看该作者
本帖最后由 汪汪 于 2018-4-4 21:25 编辑

简单来说就是...在读取存档数据后根据存档数据储存的版本进行数据操作即可


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;
};


大概在这处理下数据就好,
因为是热更新,所以应该是根据网页上的这个脚本为主吧,所以即时更新就好





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;
};


这里是生成数据的地方,你可以把版本数据存在这里
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3399
在线时间
461 小时
注册时间
2013-12-7
帖子
333
3
发表于 2018-4-4 10:59:27 | 只看该作者
游戏里有很多数据(所有$game开头的对象)是存在存档里的,网页版存档依赖于浏览器数据缓存(Storage)。所以要做出你的效果又不开新存档的话需要在读取存档的时候修改游戏存档数据。
比如你说的关闭跟随
  1. $gamePlayer._followers._visible =false
复制代码

然后刷新一下
  1. $gamePlayer.refresh()
复制代码


因为你的游戏打不开,但如果你是用MV原生的继续游戏方法的话可以在Scene_Load.prototype.onLoadSuccess最后加入以上代码进行修改。
回复

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
5144
在线时间
604 小时
注册时间
2017-10-21
帖子
348
4
 楼主| 发表于 2018-4-4 21:16:17 | 只看该作者
ekmomo 发表于 2018-4-4 10:59
游戏里有很多数据(所有$game开头的对象)是存在存档里的,网页版存档依赖于浏览器数据缓存(Storage)。所以要 ...


谢谢大佬
萌新不是很明白
我得琢磨琢磨!
回复

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
21916
在线时间
8561 小时
注册时间
2011-12-31
帖子
3361
5
发表于 2018-4-4 22:16:45 | 只看该作者
SDR有個自動更新插件
http://sumrndm.site/auto-updater/
回复

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
5144
在线时间
604 小时
注册时间
2017-10-21
帖子
348
6
 楼主| 发表于 2018-4-5 10:39:49 | 只看该作者
tseyik 发表于 2018-4-4 22:16
SDR有個自動更新插件
http://sumrndm.site/auto-updater/

嗯~这个我也看过了
好像很复杂的样子
回复

使用道具 举报

头像被屏蔽

Lv2.观梦者 (禁止发言)

梦石
0
星屑
590
在线时间
899 小时
注册时间
2010-11-13
帖子
1023
7
发表于 2020-3-26 16:50:42 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-4-24 21:05

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表