生成分發版 link

Ren’Py包含了對生成遊戲分發版的支持。在啟動器(laucher)選擇“生成分發版”,Ren’Py會掃描自身和項目,決定分發版中包含哪些文件,並創建需要的歸檔文件,以及生成包(package)和升級文件。

不需要額外設置,Ren’Py就可以生成下列類型的包(package):

PC: Windows and Linux
一個運行在Windows x86、Linux x86和Linux x86_64平台的zip文件。
Linux x86/x86_64
一個運行在Linux x86和Linux x86_64平台的tar.bz2文件。
Macintosh x86_64
一個運行在使用Intel處理器Macintosh OS X系統的zip文件,文件中包含一個Macintosh可執行文件。遊戲數據可以包含在可執行文件中,在用戶看來只有一個文件。
Windows x86
一個運行在Windows x86平台的zip文件。
Windows, Mac, and Linux for Markets
包含軟體市場(比如itch.io和Steam)必要訊息的分發版。這個版本不用於直接運行(可能在Mac上根本無法啟動),而用於上傳到app商店。

Warning

Ren’Py生成的zip和tar.bz2文件包含Ren’Py在Linux和Macintosh平台運行的授權訊息。在Windows平台解包zip並重新打包,不能在Linux和Macintosh平台運行。

基本配置 link

透過在build命名空間中設置變數和調用函數,可以對生成過程進行配置。這些工作必須在 init python 語句塊(block)中進行。 這些配置項預設都設置在 options.rpy 中。

有一些基本變數和函數在很多遊戲中都會使用。

build.name = “…” link

這個變數用於自動生成build.directory_name和build.executable_name,前提是那兩項都沒有設置。這個變數不包含空格、冒號或分號。

build.directory_name = “…” link

這個變數用於在歸檔文件中創建的目錄名稱。例如,如果這個變數設置為“mygame-1.0”,項目的Linux版本解包後就是“mygame-1.0-linux”。

這個變數也用於決定包(package)文件中的目錄名稱。例如,如果將build.directory_name設置為“mygame-1.0”,最終歸檔文件裡就會在基目錄裡放一個“mygame-1.0-dists”目錄。

這個變數不能包含特殊字元,比如空格、冒號或分號。如果沒有配置,這個變數預設使用 build.nameconfig.version

build.executable_name = “…” link

這個變數控制用於點擊並啟動遊戲的可執行程序名稱。

這個變數不能包含特殊字元,比如空格、冒號或分號。如果沒有配置,這個變數預設使用 build.name

例如,如果把變數設置為“mygame”,用戶在Windows平台運行mygame.exe,在Macintosh上運行mygame.app,在Linux平台運行mygame.sh。

特殊文件 link

有兩個在遊戲基目錄下的文件,可以用於訂製化生成過程。

icon.ico
Windows平台使用的圖示。
icon.icns
Macintosh使用的圖示。

這些圖示文件必須使用特殊格式。你可能需要使用一個程序或網路服務 (比如 http://iconverticons.com/ ) 轉換圖片。

歸類和省略文件 link

生成過程的第一步,是將Ren’Py分發版和你遊戲中的文件分類並添加至各個文件列表。這些文件列表會添加為包(package)文件。

文件分類通過build.classify函數實現。這個函數使用一個正則表達式和空格分隔的檔案名列表。正則表達式會從頭到尾對檔案名進行匹配,第一個匹配到的對象優先處理(儘管後面可能有個比較級正則表達式)。正則表達式可以匹配開頭的 “/” 符號。正則表達式包含下列特殊字元:

/
目錄分隔符。
*
匹配所有字元,除了目錄分隔符。
**
匹配所有字元。

舉例:

**.txt
匹配所有txt文件。
game/*.txt
匹配game目錄下的txt文件。

默認總共有7個文件列表用於文件的分類。(Ren’Py將自身文件放入前6個。)

all
這些文件會包含在所有包(package)中,生成安卓版本。
linux
這些文件會包含在Linux平台的包(package)中。
mac
這些文件會包含在Mactintosh平台的包(package)中。
windows
這些文件會包含在Windows平台的包(package)中。
renpy
需要Ren’Py引擎文件的包(package)內文件。(Linux、Macintosh和Windows平台。)
android
這些文件會包含在安卓版本中。
archive
這些文件會包含在archive.rpa歸檔文件中。

不在任何分類下的文件都會放入“all”文件列表中。

如果要在分發版中排除某些文件,就將文件歸類為None或空字串。 使用時,檔案名表達式通配符中的 * 和 ** 必須至少能匹配到一個字元。

舉例::

# 包含README.txt。
build.classify("README.txt", "all")

# 排除所有其他txt文件。
build.classify("**.txt", None)

# 將game目錄下的所有png和jpg文件放入歸檔中。
build.classify("game/**.png", "archive")
build.classify("game/**.jpg", "archive")

文件 link

使用正則表達式調用build.documentation函數可以把匹配到的文件標記為文件。在Macntosh版本裡包含兩份文件文件——程序裡一份,程序外一份。

例如,將所有基目錄的txt和html文件標記為文件::

build.documentation("*.txt")
build.documentation("*.html")

Packages link

在Ren’Py生成過程中添加新類型的包(package)也是可行的。調用build.package函數可以實現這點。調用時傳入一個包名、類型和一個包含的文件列表。

假設我們想要生成一個遊戲的普通版本,以及一個包含獎勵材料的版本。我們可以將獎勵文件歸類到“bonus”文件列表中,然後使用如下語句定義一個“all-premuim”包(package)::

build.package("all-premium", "zip", "windows mac linux all bonus")

支持生成的包類型包括“zip”和“tar.bz2”格式,以及用於裝文件的目錄“direcroty”。

歸檔文件 link

Ren’Py支持將多個文件合併為單個歸檔格式的文件。這個機制能保護文件免於被臨時複製。

默認情況下,所有歸類為“archive”的文件都會放入歸檔文件archive.rpa中,這個歸檔文件包含所有“archive”列表中的文件。

調用build.archive函數,可以定義一個新的歸檔文件,以及這個歸檔文件中包含的文件列表。(雖然,很少指明具體檔案而是包含所有文件列表。)需要歸檔文件時,就將目標檔案名分類到歸檔的列表中。

例如,下面腳本將所有圖片歸檔到image.rpa,遊戲腳本歸檔到scripts.rpa::

# 定義兩個歸檔文件。
build.archive("scripts", "all")
build.archive("images", "all")

# 將腳本放入scripts歸檔。
build.classify("game/**.rpy", "scripts")
build.classify("game/**.rpyc", "scripts")

# 將圖片放入images歸檔。
build.classify("game/**.jpg", "images")
build.classify("game/**.png", "images")

如果某個歸檔文件為空,就不會生成。

關於遊戲歸檔的問題,請三思。使用開放文件可能有助於後人在未來的平台上運行你的遊戲——那些你離開這個世界之後才出現的平台。

old-game目錄 link

生成多個遊戲版本,比如早期公測或Patreon平台版本時,有必要保留舊版本的.rpyc文件。 .rpyc文件中包含的訊息可用來確認存檔是否可以繼承,如果忽略這些訊息查可能會引起各種問題。

同時,當game目錄下的文件改變後,Ren’Py會更新對應的.rpyc文件,使文件無法適用版本控制的要求。

為了解決這個問題,Ren’Py允許創作者將前一個版本的.rpyc文件放入 old-game 目錄中,該目錄與game目錄平行。 old-game的目錄結構會與game目錄保持一致,比如game/scripts/day1.rpyc文件移動後會成為old-game/scripts/day1.rpyc。 非.rpyc文件將會忽略。

使用old-game的優勢是,Ren’Py總是會根據已知的代碼改動在old-game生成.rpyc文件。 對個人開發者來說可能沒什麼用,對大一些的多人開發遊戲項目則會有幫助。

關於在遊戲變更後,如何使用.rpyc文件幫助實現存檔繼承的訊息,可以查看下面的連結:

運行環境要求 link

一些網路商店會詢問Ren’Py程序的運行環境要求。雖然各個遊戲的實際要求並不相同,這裡還是給出了運行大多數視覺小說的最基礎配置。

Windows

  • 版本:Windows XP或以高。
  • 處理器:2.0 GHz Core 2 Duo
  • 記憶體:2.0 GB
  • 顯示卡支持:OpenGL 2.0或DirectX 9.0c

macOS

  • 版本:10.6+
  • 處理器:2.0 GHz Core 2 Duo (只支持64位版本)
  • 記憶體:2.0 GB
  • 顯示卡支持:OpenGL 2.0

Linux

  • 版本:Ubuntu 12.04+
  • 處理器:2.0 GHz Core 2 Duo
  • 記憶體:2.0 GB
  • 顯示卡支持:OpenGL 2.0

對磁碟空閒空間的大小則完全取決於遊戲自身,並且對處理器和記憶體的要求可能會不同。

生成(build)函數 link

build.archive(name, file_list=u'all') link

聲明某個歸檔文件。如果一個或多個文件歸類為 name ,就會生成一個 name.rpa 歸檔文件。歸檔包含對應名稱的列表中的文件。

build.classify(pattern, file_list) link

將匹配 pattern 的文件歸類為 file_list

build.clear() link

清空用於文件分類的正則表達式列表。

build.documentation(pattern) link

定義正則表達式 pattern 用於匹配文件類文件。在生成mac版本app時,匹配文件正則表達式的文件會存儲兩份——app包內一份,app包外另一份。

build.executable(pattern) link

添加將文件標識為支持平台(Linux和Macintosh)可執行程序的正則表達式。

build.package(name, format, file_lists, description=None, update=True, dlc=False, hidden=False) link

定義一個包(package),這個包由打包工具生成。

name
包(package)名稱。
format

包的格式。這是一個由空格分隔的字串,由下列要素組成:

zip
zip文件。
tar.bz2
tar.bz2文件。
directory
包含文件的目錄。
dmg
包含文件的Macintosh平台DMG文件。
app-zip
包含Macintosh應用程式的zip文件。
app-directory
包含mac應用程式的目錄。
app-dmg
包含dmg文件的macintosh鏡像。(僅限Mac平台。)

空字串則不生成任何格式的包(package)。(這個機制可以實現DLC需求。)

file_lists
包含在包(package)中的文件列表。
description
生成包(package)的可選項描述。
update
若為True並且生成了更新,就會為這個包(package)生成更新文件。
dlc
若為True,會在獨立的DLC模式下生成zip或tar.bz2文件,而不是update目錄下生成。
hidden
若為True,會在啟動器(launcher)的包(package)列表中隱藏這個包。

高級配置項 link

下列配置變數提供了對生成過程的更多控制項:

build.allow_integrated_gpu = True link

在同時包含集成顯示卡和獨立顯示卡的平台上,允許Ren’Py運行在集成顯示卡上。目前,這個功能僅在Mac OS X上支持。

build.destination = “{directory_name}-dists” link

指定了生成的歸檔文件放的目錄路徑。可以是絕對路徑也可以是相對路徑。相對路徑將項目(project)目錄作為當前位置。

下列值會使用Python的str.format函數進行替換。

{directory_name}
build.directory_name的值。
{executable_name}
build.executable_name的值。
{version}
build.version的值。
build.change_icon_i686 = True link

若為True並且 icon.ico 文件存在,32位Windows可執行程序的圖示可以被修改。 若為False,圖示不能修改。將該值設置為False可以防止某些防毒軟體對遊戲文件更改導致的問題。

build.exclude_empty_directories = True link

若為True,空目錄(包括文件歸檔後殘留的空目錄)會從生成的包(package)中移除。若為False,則會包含空目錄。

build.include_i686 = True link

若為True,生成Linux和Mac版本時,將包含在32位x86處理器平台運行時需要的文件。 若為False,將不包含那些文件。

build.include_old_themes = True link

當這項為True時,文件需要在Ren’Py 6.99.9版本之前支持的主題文件會包含在生成的包中。當這項是False時,不會包含這類文件。

調用 gui.init() 時,這項會被設置為False。

build.itch_project = None link

配置了這項後,就允許Ren’Py啟動器將項目上感測到itch.io。這項應該設置為在itch上註冊的項目名。(例如,“renpytom/the-question”。)

一旦設置了這項,你可以點擊“生成分發版”,然後選擇“上傳到itch.io”,將生成的版本上傳。

build.mac_info_plist = { } link

該配置項是一個字典型數據,鍵和值都是字串。用於添加或覆蓋mac中的Info.plist文件。