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中。