配布物のビルド 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.rpycold-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.include_update = False link

True なら、 Ren'Py は updater が動作するのに必要なファイルを生成します。

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" パッケージが利用可能になります。