鲸鱼资源站
登录 注册
本站原创 2026-10-29 09:00

存档里没有画面:读档为什么能一瞬间回到那句话

存档只有几十 KB,因为它存的是一组坐标,不是一屏画面。读档是把背景、立绘、音乐重新摆一遍——这解释了很多事:读档时那半拍空白、补丁之后老存档为什么坏、快进为什么能停在下一个选项。

按下存档键,文件可能只有几十 KB,比一张立绘还小。

因为存档里没有画面。

它存的是一组坐标:现在在哪个脚本文件、第几行,所有 flag 和变量的值,当前场景,当前 BGM。读档的时候,引擎拿着这组坐标回到那句话前面,再把背景、立绘、音乐重新摆一遍——你看到的那一屏,是重新演出来的,不是从文件里读出来的图像。

这解释了几件平时觉得理所当然的事。

读档的一瞬间,画面常常会「先空一下」再满。立绘先出来,BGM 晚半拍,或者有个短暂的黑屏。因为引擎正按顺序重放:先加载背景,再摆人,再起音乐。做得细的引擎会把 BGM 的播放位置一起存下来,读档后接着放;做得糙的,读一次重放一次,同一首曲子的开头你能听一百遍。

也解释了快进键为什么能停在「下一个选项」。它不是在快进一段视频,是在循环执行「下一句台词」这个动作,直到脚本碰到一个等待玩家选择的地方。所以中途要是有一个必须点一下才继续的演出,快进就卡在那儿,得你手动越过去。

存法其实分两派。

一派存的是「位置加变量」,上面说的就是这种。脚本是剧本,存档是书签,读档是照着剧本从书签那页重新演。多数日式 ADV 引擎走这条路:存档小、读档快,代价是坐标绑在脚本上——官方改一行剧本,后面的行号全平移,旧存档就指到别的地方去了,轻则场景错乱,重则直接读不出来。更新补丁之后老存档坏掉,多半是这么来的。

另一派存的是「整个运行时」。Ren'Py 这类引擎会把当时的对象图序列化下来,变量、类实例、执行到哪条语句,一锅端。好处是稳,坏处是存档和代码绑得更死:游戏里某个类改了名、挪了位置,旧存档里的对象就找不回自己的类,读档当场报错。所以它得自带一套兼容层,把老名字映射到新名字上。玩家看不见那层东西,但它一直在。

还有一件事容易误会:存档点不是一个时间点,是一个状态。

游戏只在你「等待输入」的时候才让你存——那句话已经打完,光标在闪,等你按。所以你在打字机效果播到一半时存,存下来的往往是这句话的开头,读回去得再看一遍。不是它不想让你精确到字,是「半句话」这个状态在脚本里根本不存在,脚本的最小单位就是一句。

至于已读记录、CG 图鉴、结局表,一般也不放在存档里,那是另一份跟着玩家走的全局数据。存档记「我在哪」,那份记「我知道什么」。删掉某个存档,图鉴还在,就是这个道理。

所以别把存档当成录像。它是一张写着「回到这儿,然后这样摆」的纸条。游戏能读档,靠的不是记住画面,是记得怎么把画面重新做出来。

本文由本站整理撰写。

评论

登录后评论会自动署名。

评论发布后需要站长审核,通过才会显示。