32blogby StudioMitsu
renpy8 min read

Ren'Pyゲームの配布ガイド:ビルドからitch.io公開まで

Ren'Py 8.5でゲームをビルドし、itch.ioに公開する手順を解説。プラットフォーム別の注意点、macOS署名問題、build.classify()によるファイル制御まで。

renpyvisual-novelgame-devbeginner
目次

ゲームが完成した。次にやることは、プレイヤーの手元に届けることだ。

この記事では、Ren'Py 8.5.2 でゲームをビルドし、itch.ioに公開するまでの手順を解説する。

ビルド前の準備

options.rpy の設定

options.rpy にビルドの基本情報を記述する。プロジェクト作成時にテンプレートが生成されているので、値を書き換えるだけでいい。

renpy
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アイコンを自分のゲームのアイコンに差し替える。

text
mygame/               ← ベースディレクトリ(ここに置く)
├── icon.ico          ← Windows用(256x256推奨)
├── icon.icns         ← macOS用
└── game/
    └── ...

プロジェクトのベースディレクトリ(game/ フォルダの親)に配置する。

ビルドの実行

Launcherからビルドする

  1. Ren'Py Launcherでプロジェクトを選択
  2. 「Build Distributions」 をクリック
  3. ビルドするパッケージを選択(デフォルトで全プラットフォームが選択済み)
  4. ビルドが完了すると、出力先フォルダが開く

出力されるファイル

デフォルト設定では、以下のファイルが生成される:

ファイル対象
MyVisualNovel-1.0-pc.zipWindows + Linux
MyVisualNovel-1.0-mac.zipmacOS

pc パッケージにはWindowsとLinuxの両方の実行ファイルが含まれている。プレイヤーは自分のOSに対応した実行ファイルを起動するだけでいい。

プラットフォーム別の注意点

Windows

特別な設定は不要。zipを展開して .exe をダブルクリックで起動する。最も手軽なプラットフォーム。

macOS — Gatekeeper問題

macOSでは未署名のアプリケーションの実行が制限されている。macOS Sequoia(15.0)以降、この制限はさらに厳しくなった。

未署名のゲームを起動するには、プレイヤーがターミナルで以下を実行する必要がある:

bash
xattr -r -d com.apple.quarantine /path/to/MyVisualNovel.app

Linux

pc パッケージに含まれる .sh ファイルを実行する。ファイルに実行権限がない場合は chmod +x が必要。

Android

Android向けのビルドにはRAPT(Ren'Py Android Packaging Tool)を使う。

  1. Launcherで 「Android」「Install SDK」 を実行
  2. JDK 21(Adoptium推奨)が必要
  3. 「Generate Keys」 で署名キーを生成(バックアップ必須)
  4. 「Configure」 でパッケージ名・アイコン等を設定
  5. 「Build」 でAPKまたはAABを生成

Google Play向けにはAAB(Android App Bundle)を、直接配布にはAPKを使う。

Web(ベータ)

ブラウザで遊べるWeb版も作れる。

  1. Launcherで 「Web (Beta)」「Build Web Application」 を実行
  2. 出力フォルダ内の index.html をブラウザで開いて動作確認

Web版はitch.ioでの「ブラウザで遊ぶ」公開に最適だが、ファイルサイズが大きいとロードに時間がかかる。画像や音声ファイルの最適化を意識しよう。

itch.ioに公開する

手動アップロード

  1. itch.io でアカウントを作成
  2. Dashboard「Create new project」
  3. プロジェクト情報を入力(タイトル、説明、タグ等)
  4. 「Kind of project」 を「Downloadable」に設定
  5. ビルドしたzipファイルをアップロード
  6. 各ファイルにプラットフォームタグ(Windows / macOS / Linux)を設定
  7. 「Save & view page」 で公開

Web版の場合は 「Kind of project」 を「HTML」にし、zipアップロード後に 「This file will be played in the browser」 にチェックを入れる。

Launcherからの自動アップロード

options.rpy に以下を追加すると、Launcherから直接itch.ioにアップロードできる。

renpy
define build.itch_project = "username/project-name"

ビルド完了後に 「Upload to itch.io」 ボタンが表示される。初回はitchのCLIツール(butler)のインストールとログインが求められる。

自動アップロードでは、ファイル名のパターンに基づいてitch.ioのチャンネルが自動設定される:

ファイルパターンチャンネル
*-pc.zipwin-linux
*-mac.ziposx
*-linux.tar.bz2linux
*-release.apkandroid

build.classify()でファイルを制御する

デフォルトのビルド設定で十分なケースが多いが、ファイルの除外やアーカイブ化をカスタマイズしたい場合は build.classify() を使う。

開発用ファイルを除外する

renpy
init python:
    # Photoshopやイラストソフトのソースファイルを除外
    build.classify("**/*.psd", None)
    build.classify("**/*.clip", None)

    # 開発メモを除外
    build.classify("**/TODO.txt", None)

None を指定すると、そのパターンに一致するファイルはビルドから除外される。

ファイルをアーカイブ化する

画像や音声ファイルを .rpa アーカイブにまとめると、配布時のファイル数を減らせる。Web版ではitch.ioの1000ファイル制限の対策になる。

renpy
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 — コミュニティ