ゲームが完成した。次にやることは、プレイヤーの手元に届けることだ。
この記事では、Ren'Py 8.5.2 でゲームをビルドし、itch.ioに公開するまでの手順を解説する。
ビルド前の準備
options.rpy の設定
options.rpy にビルドの基本情報を記述する。プロジェクト作成時にテンプレートが生成されているので、値を書き換えるだけでいい。
define config.name = "My Visual Novel"
define build.name = "MyVisualNovel"
define config.version = "1.0"
config.name はゲームのタイトル。build.name は配布ファイルの名前に使われる。スペース・コロン・セミコロンは使えない。config.version はバージョン番号で、itch.ioへのアップロード時にも参照される。
Lintチェック
ビルド前に必ずLintを実行する。Launcherの 「Check Script (Lint)」 をクリックする。
Lintは以下をチェックする:
- 未定義のimageやcharacterの参照
- 到達不能なlabel
- 音声ファイルの欠落
- その他の潜在的な問題
エラーが出たら修正してからビルドに進む。警告(warning)は致命的ではないが、できるだけ解消しておこう。
アイコンの変更
デフォルトのRen'Pyアイコンを自分のゲームのアイコンに差し替える。
mygame/ ← ベースディレクトリ(ここに置く)
├── icon.ico ← Windows用(256x256推奨)
├── icon.icns ← macOS用
└── game/
└── ...
プロジェクトのベースディレクトリ(game/ フォルダの親)に配置する。
ビルドの実行
Launcherからビルドする
- Ren'Py Launcherでプロジェクトを選択
- 「Build Distributions」 をクリック
- ビルドするパッケージを選択(デフォルトで全プラットフォームが選択済み)
- ビルドが完了すると、出力先フォルダが開く
出力されるファイル
デフォルト設定では、以下のファイルが生成される:
| ファイル | 対象 |
|---|---|
MyVisualNovel-1.0-pc.zip | Windows + Linux |
MyVisualNovel-1.0-mac.zip | macOS |
pc パッケージにはWindowsとLinuxの両方の実行ファイルが含まれている。プレイヤーは自分のOSに対応した実行ファイルを起動するだけでいい。
プラットフォーム別の注意点
Windows
特別な設定は不要。zipを展開して .exe をダブルクリックで起動する。最も手軽なプラットフォーム。
macOS — Gatekeeper問題
macOSでは未署名のアプリケーションの実行が制限されている。macOS Sequoia(15.0)以降、この制限はさらに厳しくなった。
未署名のゲームを起動するには、プレイヤーがターミナルで以下を実行する必要がある:
xattr -r -d com.apple.quarantine /path/to/MyVisualNovel.app
Linux
pc パッケージに含まれる .sh ファイルを実行する。ファイルに実行権限がない場合は chmod +x が必要。
Android
Android向けのビルドにはRAPT(Ren'Py Android Packaging Tool)を使う。
- Launcherで 「Android」 → 「Install SDK」 を実行
- JDK 21(Adoptium推奨)が必要
- 「Generate Keys」 で署名キーを生成(バックアップ必須)
- 「Configure」 でパッケージ名・アイコン等を設定
- 「Build」 でAPKまたはAABを生成
Google Play向けにはAAB(Android App Bundle)を、直接配布にはAPKを使う。
Web(ベータ)
ブラウザで遊べるWeb版も作れる。
- Launcherで 「Web (Beta)」 → 「Build Web Application」 を実行
- 出力フォルダ内の
index.htmlをブラウザで開いて動作確認
Web版はitch.ioでの「ブラウザで遊ぶ」公開に最適だが、ファイルサイズが大きいとロードに時間がかかる。画像や音声ファイルの最適化を意識しよう。
itch.ioに公開する
手動アップロード
- itch.io でアカウントを作成
- Dashboard → 「Create new project」
- プロジェクト情報を入力(タイトル、説明、タグ等)
- 「Kind of project」 を「Downloadable」に設定
- ビルドしたzipファイルをアップロード
- 各ファイルにプラットフォームタグ(Windows / macOS / Linux)を設定
- 「Save & view page」 で公開
Web版の場合は 「Kind of project」 を「HTML」にし、zipアップロード後に 「This file will be played in the browser」 にチェックを入れる。
Launcherからの自動アップロード
options.rpy に以下を追加すると、Launcherから直接itch.ioにアップロードできる。
define build.itch_project = "username/project-name"
ビルド完了後に 「Upload to itch.io」 ボタンが表示される。初回はitchのCLIツール(butler)のインストールとログインが求められる。
自動アップロードでは、ファイル名のパターンに基づいてitch.ioのチャンネルが自動設定される:
| ファイルパターン | チャンネル |
|---|---|
*-pc.zip | win-linux |
*-mac.zip | osx |
*-linux.tar.bz2 | linux |
*-release.apk | android |
build.classify()でファイルを制御する
デフォルトのビルド設定で十分なケースが多いが、ファイルの除外やアーカイブ化をカスタマイズしたい場合は build.classify() を使う。
開発用ファイルを除外する
init python:
# Photoshopやイラストソフトのソースファイルを除外
build.classify("**/*.psd", None)
build.classify("**/*.clip", None)
# 開発メモを除外
build.classify("**/TODO.txt", None)
None を指定すると、そのパターンに一致するファイルはビルドから除外される。
ファイルをアーカイブ化する
画像や音声ファイルを .rpa アーカイブにまとめると、配布時のファイル数を減らせる。Web版ではitch.ioの1000ファイル制限の対策になる。
init python:
build.classify("game/**.png", "archive")
build.classify("game/**.jpg", "archive")
build.classify("game/**.ogg", "archive")
パターン記法
| パターン | 意味 |
|---|---|
* | ディレクトリ区切り以外の任意の文字列 |
** | ディレクトリを含む任意の文字列 |
/ | ディレクトリ区切り |
パターンは上から順に評価され、最初にマッチしたものが適用される。より具体的なパターンを先に書くこと。
まとめ
この記事で解説したこと:
- ビルド前の準備:
options.rpyの設定、Lintチェック、アイコンの差し替え - ビルドの実行: Launcherから数クリックでzipファイルを生成
- プラットフォーム別の注意点: macOSのGatekeeper問題、Androidの署名キー管理、Web版のファイルサイズ
- itch.ioへの公開: 手動アップロードとLauncherからの自動アップロード
- build.classify(): 開発用ファイルの除外、アーカイブ化、
#プレフィックスの活用
Ren'Pyの基本は 入門ガイド を参照してほしい。
公式リソース:
- Building Distributions — ビルドの公式リファレンス
- Android — Androidビルドの詳細
- Web — Web版ビルドの詳細
- itch.io — インディーゲーム配布プラットフォーム
- r/RenPy — コミュニティ