配布物のビルド link

Ren'Py は 配布物のビルドをサポートしています。ランチャーの「 Build Distributions 」を選択すると、 Ren'Py は自分自身とそのプロジェクトをスキャンし、配布物に含まれるファイルを決定し、必要なアーカイブを生成してパッケージとアップデートファイルのビルドをします。

なにも設定しないと、 Ren'Py は以下の種類のパッケージをビルドします。

PC: Windows and Linux

Windows x86, Macintosh x86, Linux x86, Linux x86_64 をターゲートとする zip ファイルです。

Linux x86/x86_64

Linux x86 と Linux x86_64. をターゲットとする tar.bz2 ファイルです。

Macintosh x86_64

インテルプロセッサ上の Mac OS X をターゲットとする、マックアプリケーションを含む zip ファイルです。ゲームデータはアプリケーションに含まれ、ユーザーに対してひとつのファイルとして提供されます。

Windows x86

Windows x86 をターゲットとする 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 上で使用されるアイコンです。

これらのアイコンファイルは特別なフォーマットです。これらを変換するためにプログラムやウェブサービス ( http://iconverticons.com/ のような ) を使用する必要があるでしょう。

ファイルの分類と無視 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 ビルドに含まれます。

archive

これらのファイルは archive.rpa アーカイブに含まれます。

他に分類されていないファイルは「 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 パッケージを宣言します。

build.package("all-premium", "zip", "windows mac linux 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 Vista 以上

  • CPU: 2.0 GHz Core 2 Duo
  • RAM: 2.0 GB
  • Graphics: OpenGL 2.0 または DirectX 9.0c

macOS

  • Version: 10.10+
  • CPU: 2.0 GHz Core 2 Duo (64 bit only)
  • RAM: 2.0 GB
  • Graphics: OpenGL 2.0

Linux

  • Version: Ubuntu 16.04+
  • CPU: 2.0 GHz Core 2 Duo
  • RAM: 2.0 GB
  • Graphics: OpenGL 2.0

ディスクスペースの要求量は完全にあなたのゲームの容量次第であり、CPU と RAM の要求もまたゲームにより変動します。

ビルド関数 link

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

アーカイブの存在を宣言します。一つ以上のファイルが name に分類されると、 name.rpa がアーカイブとしてビルドされます。そのアーカイブは file_list に含まれます。

build.classify(pattern, file_list) link

pattern にマッチするファイルを 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) link

パッケージツールにビルドされるパッケージを宣言します。

name

パッケージ名

format

パッケージのフォーマットで、スペースで区切られた以下のリストの文字列です。 :

zip

zip ファイル

tar.bz2

tar.bz2 ファイル

directory

ファイルを含むディレクトリー

dmg

ファイルを含む Macintosh DMG

app-zip

Macintosh 用のアプリケーションを含む zip ファイル

app-directory

Macintosh 用のアプリケーションを含むディレクトリー

app-dmg

dmg を含む Machintosh ドライブ

文字列が空だと何もビルドされません。

file_lists

パッケージに含まれるファイルリストのリスト

description

ビルドするパッケージに対する任意の説明文です。

update

True ならこのパッケージ向けのアップデータもビルドされます。

dlc

True の場合、 update ディレクトリーは無しとなり、 zip や tar.bz2 ファイルが単独の DLC モードでビルドされます。

hidden

True ならこれはランチャーのパッケージリストでは非表示になります。

高度な設定 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.mac_info_plist = { } link

これは文字列と文字列の辞書であり、Macの info.plist ファイルのキーを追加、または置換するのに使用できます。