项目随笔

Flash之后的浏览器益智游戏:加载、记录与离线的区别

了解PuzzleVault如何加载游戏、播放声音、保存本地记录和缓存文件,通过具体场景区分离线打开游戏与恢复游戏进度。

在浏览器里开始一个益智游戏很简单:选择游戏,走一步,就能看到结果。但其中包含多个独立过程:加载文件、运行规则、绘制棋盘、播放声音,以及保存支持的记录。分清各自作用,遇到没声音、找不到分数,或准备断网游玩时,就更容易知道该检查什么。

Flash之后,运行方式有什么变化?

Adobe于2020年12月31日结束Flash Player支持,并从2021年1月12日起阻止Flash内容运行。日期可见Adobe的停止支持说明。目前PuzzleVault使用HTML、CSS、JavaScript和Canvas,而非Flash插件。打开兼容的游戏页面,不需要创建PuzzleVault账户或安装独立游戏应用。

这说明的是游戏如何提供,并不承诺特定帧率,也不表示所有浏览器表现完全一致。例如MergeChain在绘制棋盘的同时,还要更新滚动球与碰撞。逐步推理数字的画面有不同工作量。与其默认所有网页游戏速度一样,不如在自己实际使用的设备上观察响应。

画面准备好,不等于声音也已准备好

PuzzleVault通过代码生成短音效。公共输入处理会在第一次指针操作时初始化音频,声音按钮则保存开关偏好。如果棋盘显示正常而最开始没有声音,可以先做一次普通游戏操作,再检查游戏声音按钮和设备音量。单纯安静并不能证明棋盘加载失败。

操作没有反应时,先确认你正在操作的是棋盘还是周围网页。MergeChain的方向键瞄准需要棋盘获得焦点。浏览器返回按钮和游戏重新开始按钮也不是同一种操作。在不熟悉的设备上,先练习一次控制方式,再开始计时挑战或冲击记录更合适。

游戏文件、已存记录与当前棋盘是三回事

浏览器本地存储可以跨会话保留数据,隐私浏览中的处理方式则不同。可参考MDN的localStorage说明。PuzzleVault用它保存支持的统计、最高分、设置与进度记录。当前实现不会把这些记录上传到可同步不同设备的账户。

容易混淆的三种情况
看到的现象保存的内容单凭它不能证明
断网时游戏能打开之前缓存的页面和文件未访问的新页面也能打开
最高分重新显示当前浏览器的本地记录另一部手机也有同样记录
游戏棋盘正在显示当前页面的活动游戏状态关闭后所有未完成游戏都能恢复

设想一个说明用场景:你在笔记本上完成一局,之后用手机打开相同网址。两台设备能显示同一个游戏,但手机统计可能是独立的新记录。这不是笔记本得分被删除的证据。反过来,清除网站数据后,游戏即使还能从缓存打开,也不代表以前的记录仍在。比较记录前,先确认使用的是同一浏览器配置文件和同一网站地址。

离线游玩取决于所需文件是否可用

服务工作线程可以处理请求并使用缓存资源。概念可见MDN的Service Worker API说明。PuzzleVault的工作线程会尝试缓存核心游戏页面、脚本、样式和语言文件。打开页面时先尝试网络,失败再取缓存;游戏脚本与样式则先找缓存。

这不保证短暂在线访问一次后,每个页面都能永久离线打开。安装过程必须完成,所需文件必须已保存,而且仍然存在。只有最高分记录,不能重建没有可用缓存的页面。如果准备在旅途中使用,先联网完全加载目标游戏,再短暂断网并重新打开同一游戏。请用练习局检查,以免打断重视的进行中挑战。

更新提示出现时,留意刷新时机

有新工作线程可用时,PuzzleVault可能显示刷新提示。刷新会重新加载页面;如果正在进行计时挑战并想保留本次尝试,最好先完成这一局。内容更新与个人分数属于不同数据。刷新通知或新的视觉样式,都不代表已实现设备间记录同步。

分清当前操作、记录存放位置,以及需要的页面能否实际打开,就更容易顺畅使用浏览器游戏。第一次可先打开没有时间限制的逻辑题,确认操作后再追求记录。 试试 NumVault