配布物のビルド link
Ren'Py は 配布物のビルドをサポートしています。ランチャーの「 Build Distributions 」を選択すると、 Ren'Py は自分自身とそのプロジェクトをスキャンし、配布物に含まれるファイルを決定し、必要なアーカイブを生成してパッケージとアップデートファイルのビルドをします。
なにも設定しないと、 Ren'Py は以下の種類のパッケージをビルドします。
- PC: Windows and Linux
Windows x86_64 と Linux x86_64 をターゲートとする zip ファイルです。
- Linux
build.directory_name
が付加されていない zip ファイルです。- Macintosh
インテルとアップルシリコンプロセッサ上の Mac OS X をターゲットとする、マックアプリケーションを含む zip ファイルです。ゲームデータはアプリケーションに含まれ、ユーザーに対してひとつのファイルとして提供されます。アップデーターはこのパッケージでは動作しません。
- Windows
Windows x86_64 をターゲットとする zip ファイルです。
- Windows, Mac, and Linux for Markets
itch.io や Steam のようなソフトウェアのストアで必要な情報を含む配布物です。これは直接実行されるわけではありません(おそらく Mac では動作しません)が、app ストアへのアップロードプロセスで必要です。
警告
Ren'Py が生成する zip と tar.bz2 ファイルは Ren'Py がLinux や Macintosh で起動するために必要なパーミッション情報を含んでいます。
Windows 上で zip ファイルを解凍して再圧縮すると、 Linux や Macintosh 上でのそのファイルの実行は未サポートになります。
基本設定 link
ビルド処理は build 名前空間にある変数の設定と関数の呼び出しによって設定出来ます。これは init python
ブロック内から実行されなければなりません。標準ではこれらの設定は options.rpy
で設定されます。
多くのゲームが使用するいくつかの基本的な変数と関数があります。
- build.name = "..." link
これを使用して、設定されていなければ自動的に build.directory_name と build.executable_name を生成します。これにはスペースやコロン、セミコロンを含めてはいけません。
- build.directory_name = "..." link
アーカイブファイル内のディレクトリー名を決定するためにこれは使われます。例えばこれが 「 mygame-1.0 」に設定されると、プロジェクトの Linux バージョンは「 mygame-1.0-linux 」に解凍されます。
パッケージファイルが出力されるディレクトリー名を決定するためにもこれは使われます。例えば、 build.directory_name を mygame-1.0 に設定すると、ベースディレクトリーの親フォルダーに存在する mygame-1.0-dists にアーカイブファイルが出力されます。
この変数にはスペースやコロン、セミコロンなど特殊な文字は含めてはいけません。設定されていなければデフォルトで
build.name
-config.version
になります。
- build.executable_name = "..." link
この変数はユーザーがゲームを開始するためにクリックする実行ファイルの名前を制御します。
この変数にはスペースやコロン、セミコロンなど特殊な文字を含めてはいけません。設定されないとデフォルトで
build.name
です。例えば、これが 「 mygame 」に設定されると、ユーザーは Windows では mygame.exe, Linux では mygame.sh, Machintoshでは mygame.app を実行することになります。
特別なファイル link
ビルドをカスタマイズするために、ゲームのベースディレクトリーに含められる2つのファイルがあります。
icon.ico
Windows 上で使用されるアイコンです。
icon.icns
Macintosh 上で使用されるアイコンです。
これらのアイコンファイルは特別なフォーマットです。これらを変換するためにプログラムやウェブサービス ( https://anyconv.com/png-to-ico-converter/ や https://anyconv.com/png-to-icns-converter/ のような ) を使用する必要があるでしょう。
ファイルの分類と無視 link
ビルド処理は最初に Ren'Py 自身とゲームのファイルをファイルリストに分類します。これらのファイルリストは続いてパッケージファイルに追加されます。
分類は buildclassify 関数で実行されます。これはファイル名のパターンと、スペースで区切られたファイルリストを受け取ります。パターンは最初から最後までマッチされますが、最初のマッチが優先されます ( より限定的なパターンが次に続いていた場合もです ) 。パターンには以下の特別な文字が含まれるでしょう。
- /
ディレクトリーの区切り。
- *
ディレクトリーの区切り以外のすべての文字にマッチします。
- **
すべての文字にマッチします。
例:
- **.txt
すべてのテキストファイルにマッチします。
- game/*.txt
ゲームディレクトリーのテキストファイルにマッチします。
デフォルトではファイルが分類されるファイルリストが 7 つあります ( Ren'Py は本体のファイルをそれらのうち最初の 6 つに分類します )。
- all
これらのファイルはすべてのパッケージと Android ビルドに含まれます。
- linux
これらのファイルは Linux をターゲットとするパッケージに含まれます。
- mac
これらのファイルは Macintosh をターゲットとするパッケージに含まれます。
- windows
これらのファイルは Winddows をターゲットとするパッケージに含まれます。
- renpy
これらのファイルは Ren'Py エンジンファイルを必要とするパッケージに含まれます(Linux, Macintosh, Windows)。
- android
これらのファイルは Android ビルドに含まれます。
この有効なファイルリストのセットは build.classify()
にその file_list
引数として新しい名前を渡して拡張できます。
ファイルはアーカイブにも分類できます。デフォルトでは "archive" アーカイブが宣言されています。
- archive
これらのファイルは archive.rpa アーカイブに含まれます。
このアーカイブのセットは build.archive()
関数を使用して拡張できます。
他に分類されていないファイルは「 all 」ファイルリストに入れられます。
配布物からファイルを除外するためには、それらをNoneまたは空の文字列に分類します。この場合、パターン末尾の * and ** が少なくとも1つの文字に当てはまるべきです。
例
# Include README.txt
build.classify("README.txt", "all")
# But exclude all other txt files.
build.classify("**.txt", None)
# Add png and jpg files in the game directory into an archive.
build.classify("game/**.png", "archive")
build.classify("game/**.jpg", "archive")
ドキュメント link
パターンを引数に build.documentation 関教を呼び出すとドキュメントとしてそれらのパターンにマッチするファイルをマークします。ドキュメントファイルは Macintosh アプリではアプリケーション内部と外部の両方に含まれます。
例えば、ベースディレクトリーにあるすべてのテキストと html ファイルをドキュメントとしてマークする方法は次の通りです
build.documentation("*.txt")
build.documentation("*.html")
パッケージ link
Ren'Py のビルド処理に新しいパッケージの種類を追加もできます。これはパッケージの名前と含めるべきファイルリストの文字列を引数に build. package 関数を呼び出して行います。
通常版のゲームとボーナス要素を追加したものをビルドしたいとすると、ボーナスファイルを「 bonus 」ファイルリストに分類して、次のように all-premium パッケージを宣言します。
# Declare a new archive belonging to a new "bonus" file list.
build.archive("bonus_archive", "bonus")
# Put the bonus files into the new archive.
build.classify("game/bonus/**", "bonus_archive")
# Declare the package.
build.package("all-premium", "zip", "windows mac linux renpy all bonus")
サポートされるタイプは対応するフォーマットで生成される "zip" と "tar.bz2" 、ファイルを含むディレクトリーを作成する "directory" です。
アーカイブ link
Ren'Py は複数ファイルのひとつのアーカイブへの統合をサポートしています。それほど安全ではありませんが、これは単純なコピーからファイルを守ります。
デフォルトでは「 archive 」ファイルリストに分類されたすべてのファイルは、 all ファイルリストに含まれる archive.rpa アーカイブに置かれます。
build.archive を呼び出して新しいアーカイブと、それらが含まれるファイルリストを宣言できます( all ファイルリスト以外を使うことはめったにありませんが)。あるアーカイブを使って、ファイルをその名前のリストに分類します。
例えば、以下のコードは画像を image.rpa
に、スクリプトを script.rpa
に保存します
# Declare two archives.
build.archive("scripts", "all")
build.archive("images", "all")
# Put script files into the scripts archive.
build.classify("game/**.rpy", "scripts")
build.classify("game/**.rpyc", "scripts")
# Put images into the images archive.
build.classify("game/**.jpg", "images")
build.classify("game/**.png", "images")
空のアーカイブはビルドされません。
ただあなたのゲームをアーカイブすることについてちょっと考えてみてください。ファイルをオープンなままにしておけばあなたの頃にはなかった将来のプラットフォームで、誰かがゲームを実行する助けになるでしょう。
Old-game ディレクトリー link
ゲームがアーリーアクセスや Patreon のようなプラットフォームから配布されるときのように複数のリリースを作成するとき、以前の .rpyc ファイルを置いておくことが必要になります。.rpyc ファイルにはセーブがロードできると保証するために必要な情報が含まれるため、これらのファイルが抜けると問題が起きます。
同時に Ren'Py はこれらのファイルが変更されると game ディレクトリーの .rpyc ファイルを更新しするため、バージョンコントロールに含めるには不適当にします。
この問題を解決するために Ren'Py は .rpyc ファイルを以前の配布物から game ディレクトリーと一緒にある old-game ディレクトリーに配置します。 old-game/
のディレクトリ構造は game/
のディレクトリ構造に一致するべきです。例えば game/scripts/day1.rpyc
は old-game/scripts/day1.rpyc
に移動されるはずです。 old-game の .rpyc ファイル以外のファイルは無視されます。
old-game の使用の利点は old-game の .rpyc ファイルはチェックされ、 .rpyc ファイルを生成するときに Ren'Py は常に 既知のソースから開始する点です。これは変更の少ない一人の開発者のゲームに対しては恐らく必要ないでしょうが、 old-game は変更が大きいゲームの開発で便利でしょう。
.rpyc ファイルが変更されたゲームのセーブをロードするのにどのように役立つかのさらなる情報は以下で見つかります :
Requirements link
ストアによっては Ren'Py アプリの必要環境を尋ねることがあります。これはゲームによりますが、こちらが一般的なビジュアルノベルの最低環境となります。
Windows
Version: Windows 7 以上
CPU: 2.0 Ghz 64-bit Intel互換
RAM: 2.0 GB
Graphics: OpenGL 3.0 または DirectX 11
macOS
Version: 10.10+
CPU: 2.0 Ghz 64-bit 互換(Apple silicon は Rosetta2 によるサポートです)
RAM: 2.0 GB
Graphics: OpenGL 3.0
Linux
Version: Ubuntu 16.04+
CPU: 2.0 Ghz 64-bit Intel互換
RAM: 2.0 GB
Graphics: OpenGL 3.0
ディスクスペースの要求量は完全にあなたのゲームの容量次第であり、CPU と RAM の要求もまたゲームにより変動します。 Ren'Py は特定の拡張が利用可能な OpenGL2 下でも起動します。
ビルド関数 link
- build.archive(name, file_list='all') link
アーカイブの存在を宣言し、その name が利用可能なアーカイブ名のリストに追加されます。これは
build.classify()
にも渡せます。一つ以上のファイルが name に分類されると、 name.rpa がアーカイブとしてビルドされ、次のように指定した file_list を含むパッケージに含まれます。
build.archive("secret", "windows")
何らかのファイルが
build.classify()
関数を使って "secret" アーカイブに含まれると、そのファイルは Windows のビルドで secret.rpa アーカイブに含まれることになります。build.classify()
関数と同様に、file_list として与えられた名前がファイルリスト名として存在しない場合には、その名前を作成して、有効なファイルリストのセットに追加します。
- build.classify(pattern, file_list) link
pattern にマッチするファイルを file_list に分類します。 file_list はアーカイブ名でもあります。
file_list として与えられた名前がアーカイブやファイルリストの名前として存在しなければ、それを作成して有効なファイルリストのセットに追加します。
- build.clear() link
ファイルを分類するために使用したパターンのリストをクリアします。
- build.documentation(pattern) link
ドキュメントにマッチするパターンを宣言します。 mac アプリのビルドではこのパターンにマッチしたドキュメントは二度保存されます。 - 一度目は app パッケージ内に、二度目はその外部です。
- build.executable(pattern) link
サポートするプラットフォーム ( Linux や Mac ) で実行可能ファイルとしてマークするパターンを追加します。
- build.package(name, format, file_lists, description=None, update=True, dlc=False, hidden=False, update_only=False) link
パッケージツールにビルドされるパッケージを宣言します。
- name
パッケージ名
- format
パッケージのフォーマットで、スペースで区切られた以下のリストの文字列です。 :
- zip
zip ファイル
- tar.bz2
tar.bz2 ファイル
- directory
ファイルを含むディレクトリー
- dmg
ファイルを含む Macintosh DMG
- app-zip
Macintosh 用のアプリケーションを含む zip ファイル。このフォーマットは Ren'Py アップデーターをサポートします。
- app-directory
mac アプリを含むディレクトリー。このフォーマットはRen'Pyのアップデータをサポートしていません。
- app-dmg
dmg を含む Machintosh ドライブ(Mac のみです)。このフォーマットは Ren'Py のアップデーターをサポートしません。
- bare-zip
build.directory_name
が先頭に付かない zip ファイルです。- bare-tar.bz2
build.directory_name
が先頭に付かない zip ファイルです。- null
メインパッケージなしでアップデートのみを生成するのに使用されます。
文字列が空だと何もビルドされません。
- file_lists
そのパッケージに含まれるファイルリストのリストです。
- description
ビルドするパッケージに対する任意の説明文です。
- update
True ならこのパッケージ向けのアップデータもビルドされます。
- dlc
True の場合、 update ディレクトリーは無しとなり、 zip や tar.bz2 ファイルが単独の DLC モードでビルドされます。
- hidden
True ならこれはランチャーのパッケージリストでは非表示になります。
ビルド情報 link
特定のビルドについての情報を提供するのに使用できる二つの変数があります。この情報を使用して game/cache/build_info.json ファイルを生成できます。これは Ren'Py の起動時にロードされます。
- build.time = None link
この変数はデフォルトでは None ですが、ゲームがビルドされると、そのゲームがビルドされた時の1970/1/1からの経過時間に秒単位で設定されます。
- build.info = { } link
この変数はビルドされたゲームの game/cache/build_info.json ファイルに格納される情報を指定できるようにします。ビルドされたゲームが開始するとき game/cache/build_info.json はロードされ、その内容はこの変数に格納されます。
一般的には、setdefault を使用してフィールドがないことを確認しつつ設定します。
例えば、これは build_info.json ファイルにゲームをビルドしたコンピューター名を格納します。
python hide: import socket build.info.setdefault("build_host", socket.gethostname())
この変数の情報は JSON ファイルに格納できる型( None, 真偽値, 文字列, 数値、リスト、辞書)である必要があります。
高度な設定 link
以下の変数はビルドプロセスのさらなる機能を提供します。
- build.allow_integrated_gpu = True link
組み込みと外付けの GPU が両方あるプラットフォームでは、組み込みの GPU で起動するようにします。現在これは Mac OS X でのみサポートされます。
- build.destination = "{directory_name}-dists" link
アーカイブファイルが出力されるディレクトリーへのパスを与えます。これは絶対または相対パスです。相対パスはプロジェクトのディレクトリーから始まります。
以下の値は
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-bit Windows 実行ファイルのアイコンが変更されます。 false なら、アイコンは変更されません。これを false にすると一部のアンチウイルスの後検出を防げかもしれません。
- build.exclude_empty_directories = True link
True の場合は空のディレクトリー (アーカイビングの時点で空になるディレクトリーを含む) が生成されたパッケージから除外され、 False の場合は空のディレクトリーも含まれます。
- build.include_i686 = True link
True なら、 32bit x86 プロセッサでの動作で必要とするファイルが Linux と Mac のビルドに含まれます。 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")。
いったんこれが設定されると、配布物の生成後、 "Build distributions", "Upload to itch.io" をクリックしてアップロードできます。
- build.itch_channels = { ... } link
これは ( "*-win.zip" のような) ファイル名のパターンとそのファイルがアップロードされる itch チャンネルを対応させます。文字列デフォルトは次になります。
{ "*-all.zip" : "win-osx-linux", "*-market.zip" : "win-osx-linux", "*-pc.zip" : "win-linux", "*-win.zip" : "win", "*-mac.zip" : "osx", "*-linux.tar.bz2" : "linux", "*-release.apk" : "android", }
- build.mac_info_plist = { } link
これは文字列を文字列に対応させる辞書であり、Macの info.plist ファイルのキーを追加、または置換するのに使用できます。
- build.update_formats = [ "rpu" ] link
これはアップデータがビルドするフォーマットのリストです。デフォルトは "rpu" が Ren'Py 7.7 と 8.2 からサポートされています。初期の zsync ベースのアップデータの使用をサポートする場合は "zsync' をリストに追加する必要があります。
- build.game_only_update = False link
True なら、
build.include_update
が有効に成り、 "Game-Only Update for Mobile" パッケージが利用可能になります。