1. XenForo 1.5.14 中文版——支持中文搜索!现已发布!查看详情
  2. Xenforo 爱好者讨论群:215909318 XenForo专区

为什么许多游戏在存档时会提示「不要关闭电源」?

本帖由 漂亮的石头2021-07-06 发布。版面名称:知乎日报

  1. 漂亮的石头

    漂亮的石头 版主 管理成员

    注册:
    2012-02-10
    帖子:
    486,020
    赞:
    46
    [​IMG] 皮皮关,划重点:这里是游戏开发小班培训 http://www.levelpp.com 阅读原文

    你猜“不要把灯泡放进口中”这句警告是怎么来的?

    [​IMG]

    OK,说正经的。

    1、减少意外,免责

    玩家所擅长的领域千差万别,不是每一个人都知道“写入磁盘时掉电可能会对数据乃至磁盘本身产生重大危害”——偏偏玩游戏的过程中存档又是一个非常频繁的操作。设备坏了事小,心血没了事大啊。

    [​IMG]
    爽不爽?

    加上提示以后,如果真的因为关机丢失了存档,也可以很大程度上规避责任,避免和玩家扯皮。

    2、丢失存档的技术细节

    其实现代游戏,如果处理方式合适的话,丢失存档的概率可以做到非常低。存档的逻辑可以用伪代码这样表示:

    功能:存档() 步骤 1. 将当前需要保存的数据全部整理出来,转换为一串纯数据 data 步骤 2. 打开存档文件 步骤 3. 写入存档数据 data 步骤 4. 关闭文件

    这一连串功能中,如果执行步骤 4 时关闭电源,大概率会丢失存档。

    步骤 2~3 时关闭电源,有可能丢失存档,概率大小取决于存档大小,以及主机写文件的速度。

    所以如果这块代码写的合适,存档容量不特别大,丢失存档的概率并不高。因关闭电源而丢失存档可以看成是巧合。

    但是,不排除某些游戏这部分代码可能不太讲究,有三种可能:

    1. 某些游戏存档很大,写入时间比较长。
    2. 某些游戏在写新档案之前,为了减少占用先把旧存档删除。我估计比较古老的游戏机会有这个问题。
    3. 把上面的步骤 1 写到了步骤 2、3 之间,无谓增加了写入时间,增大了出错的概率。

    按理来说,现代游戏机的架构与电脑类似,硬盘容量、内存容量是比较宽裕的,丢失存档的问题已经很不明显了。

    最后,还有一个次要原因:存取存档的过程中玩家往往什么事儿也不能做,那就让闲着没事儿的玩家看看这句苦口婆心的忠告呗——就跟现在的游戏往往会在 loading 界面放一些游戏 tip 或剧情背景让玩家不那么无聊一样。

    阅读原文
     
正在加载...