Ren’Py包含一个更新器(updater),可以从Ren’Py项目所在的网站上自动下载和安装更新。在可以用于让一个大型游戏保持更新。
Ren’Py更新器自动实施下列步骤:
Ren’Py更新器在处理过程会显示一个更新界面,提示用户处理并允许用户退出更新。
更新器要求创作者有自己的服务主机。用户需要可以通过URL直接下载升级文件,所以创作者的服务器必须支持HTTP请求。
(这意味着需要为服务器付费。共享文件类型的网站并不支持这种更新。)
生成分发版时会自动生成更新。将options.rpy中的build.include_update项设置为True,就可以生成升级包了。这样做会解锁启动器(launcher)中“生成分发版”的“生成更新”选项。勾选这项,Ren’Py就会生成更新文件。
更新文件包含下列内容:
创作者必须把所有这些文件都上传到web服务器的单一目录下。
要触发更新时,需要调用updater.update函数或updater.Update行为(action)。
updater.Update(*args, **kwargs) link这个行为调用 updater.update() 函数。所有入参会存储并传入那个函数。
updater.UpdateVersion(url, check_interval=21600, simulate=None, **kwargs) link这个函数会连接 url 的服务器,并判断是否有可用的新版本。如果有可用更新就返回新版本号,否则返回None。
由于连接服务器需要消耗一些时间,这个函数在后台启动一个线程,连接服务器成功后立刻返回版本号,如果连不上服务器则返回None。 后台线程一旦连接到服务器会重启当前交互行为,会让调用更新函数的界面更新。
对应每个连接的url都需要分配至少1个Ren’Py会话(session),并在每个 check_interval 秒的周期内保持会话。如果不能连接服务器,就返回缓存数据。
额外的关键词入参(包括 simulate )会如同传给 updater.update() 一样,传给更新机制使用。
updater.can_update(base=None) link如果可以更新成功则返回True。如果无法完全更新(比如update目录被删除了),就返回False。
注意这个函数并不实际进行更新操作。实际更新需要使用函数 updater.UpdateVersion() 。
updater.get_installed_packages(base=None) link返回已安装DLC的包名列表。
updater.update(url, base=None, force=False, public_key=None, simulate=None, add=[], restart=True) link将这个Ren’Py游戏更新到最新版。
这项用于测试GUI,而不是真的实行更新。这项可能的值为:
如果要定制更新器(updater)的外观,创作者可以重写 update 界面。默认界面定义在common/00updater.rpy中。