当前位置: 华文问答 > 游戏

XBOX的「快速恢复(Quick Resume)」是怎么实现的?Windows系统PC有可能实现吗?

2023-11-24游戏

PC如果是xbox框架内游戏完全可以实现。如果用过windows hyper-v虚拟机的玩家都知道有个挂起虚拟机的功能,就是把虚拟机内存写入硬盘,然后关闭虚拟机,类似window休眠功能。Xbox出于防破解需要,从one时代开始游戏都运行在专门为图形优化的hyper-v虚拟机中。随着SSD的普及,读写速度已经来到每秒GB的量级,series的SSD可以达到2.4GB/s左右的原始读写速度,这样挂起虚拟机理论上5GB左右的内存只需要2秒即可完全写入SSD,恢复一个游戏速度则更快。

对于series和one游戏,游戏内存最高限制是5GB,但是一般都不会达到最大值,有些休闲游戏或360时代的游戏可能只需要几百MB,所以根据游戏的大小可挂起的游戏数量从3个到12个不等。理论上SSD空间容量够大可以挂起任意多个,但是SSD作为存储空间还要用于安装游戏和其他应用,所以不是无限的。这里以series s系列举例,微软划分出一个17GB的Temp Content分区,主要就是用来存放Quick Resume临时文件和索引。

除了游戏内存最高5GB的限制,还有显存部分。由于是统一内存架构,显存是系统动态分配的,对于series x系列在高质量模式下显存占用可能会接近10GB,但是这部分显存不会存放到挂起文件中,通过xbox快速架构,直接由GPU在内存部分恢复后直接从SSD游戏安装资源中读取并快速解压到显存中,解压速度最快可以达到4.8GB/s,这部分速度非常快,1-2s左右时间即可完成。对于大型游戏来说,显存占用非常高,在快速恢复后显示画面的一瞬间,玩家可能会看到屏幕画面短暂的停顿,这部分就是重新加载游戏图形资源到显存的时间。对于显存使用较小的游戏来说,这部分时间可以忽略不计,如2D游戏基本察觉不到。

当玩家切换到新游戏时,系统会显示启动游戏的欢迎屏幕,同时将当前运行游戏的内存置换到Temp Content分区的FastResume.xvd文件中,该过程根据游戏内存占用情况会持续1-3秒左右。然后系统从FastResumeMetadata.xvd索引中查找是否有新启动游戏的挂起记录,如果有则执行快速恢复,时间1-2秒。这两部分时间加和就是玩家从切换游戏到游戏画面出现,游戏欢迎屏幕的停留时间共计1-5秒左右。

目前QuickResume非常适合单机玩家,因为不存在和服务器交换数据,出错概率很小,但是对于网络游戏玩家有可能由于与服务器同步造成问题,体验有待完善。根据国外用户玩家的反馈,微软有可能会将是否启动QuickResume的控制权交还给玩家自行控制。

QuickResume功能由于存在对硬件SSD的写入消耗,也引起少数玩家的争议。以series s 512GB版本为例,按照sn530的500次擦写寿命估算,可以进行5-10万次的快速恢复,不过这个数量已经可以完全满足series的生命周期。