Android link

Ren'Py はスマートフォンやタブレットなど、Android が動作するデバイスをサポートしています。これらの機器は Ren'Py の機能の 100% をサポートしてはいませんが、最小のコード修正でパッケージ化してこれらのデバイスに移植出来ます。

RAPT - Ren'Py Android Packaging Tool - は、Ren'Py とは別にダウンロードできるプログラムで、テストやリリースを目的とした Android パッケージを作成できます。

必要な文言 link

RAPT で Ren'Py が使用しているライブラリのなかには LGPL ライセンス条件の元で許可されているものがあります。 Ren'Py を配布するためにはそのライセンス条項に沿う必要があります。あなたのアプリの説明に以下の文言を含めれば十分だと信じますが、確認のため弁護士と調査してください。

このプログラムには GNU Lesser General Public ライセンスを含む、いくつものライセンス下でライセンスされています。 https://www.renpy.org/l/license/ にはソフトウェアの完全なリストがあります。

操作方法の説明 link

Ren'Py のゲームが Android で起動された時、次のキーバインディングが有効です:

ホーム

Ren'Py を一時停止し、Android のホーム画面に戻ります。一時停止のときに、Ren'Py は自動的にゲームをセーブします。ユーザーがゲームを再開すると、必要に応じて自動的にセーブデータがロードされます。

メニュー

ゲームメニューの表示、またはゲームに戻ります。

戻る

ロールバックします。

ボリューム↑, ボリューム↓

Android の音量を調整します。

プラットフォームによる違い link

Ren'Py がサポートするプラットフォームには、タッチベースの Android とマウスベースのものという大きな違いがあります。Android のソフトウェア、ハードウェアによる違いは:

  • タッチスクリーンはマウスであるかのように扱われます。ただし、ユーザーがスクリーンにタッチしたときのみマウスイベントが発生します。

  • 動画再生は Android デバイスでサポートされる形式のみ、フルスクリーンのみがサポートされます。サポートされるビデオ形式のリストは このページ を参照してください。

  • (renpy.input() のような)テキスト入力は動作に補完を要求しない入力方法に限定されます( 西洋言語はおそらく動作しますが、他は多分動作しません )。

加えて、人手を必要とする変更作業が少しあります:

  • Android スマートフォンはコンピューターのモニターより小さいので、テキストサイズを大きくしなければなりません。

  • タッチ入力はマウス入力より不正確なので、ボタンを大きくしなければなりません。

これらの差異への対応を補助するために、 Android 用の Ren'Py は自動的にデバイスの画面のサイズと能力に合わせてスクリーンバージョンを選択します。詳細は スクリーンバージョン を参照してください。

モバイルデバイスのセキュリティーポリシーにより、 MultiPersistent 機能は1つのゲームとそのアップデートに限定されます。つまり他のゲームと共有できません。

テストとエミュレーション link

テスト目的で、 Ren'Py は 3 つの Android エミュレーションモードをサポートしています。これらはランチャーの Android スクリーンからアクセス出来ます。

Phone

このモードは Android Phone をエミュレートします。タッチエミュレーションはマウスを使用して処理されますが、マウスボタンが押された時のみです。エスケープキーはメニューボタンに、ページアップキーはバックボタンにマップされます。

タブレット

このモードは Android タブレットをエミュレートします。タッチエミュレーションはマウスを使用して処理されますが、マウスボタンが押された時のみです。エスケープキーはメニューボタンに、ページアップキーはバックボタンにマップされます。

テレビ / OUYA

このモードは OUYA のようにテレビベースの Android をエミュレートします。キーボードはリモートまたはコントローラーの入力をエミュレートし、矢印キーがナビゲーション、セレクトキーはエンター、エスケープキーはメニューボタンに、ページアップキーはバックボタンにマップされます。

このモードではテレビの非安全領域を示すオーバーレイも表示します。テレビの非安全領域はすべてのテレビでは表示されないかもしれません。

これらのエミュレーターはプロジェクトの簡易なテストで使用可能ですが、実際のハードウェアでテストすることが最善です。エミュレーターはユーザーの指の大きさのようなヒューマンエラーは扱いません。

Android アプリケーションのビルド link

Ren'Py には パッケージ作成を中心に Android でのゲーム開発を補助するツールがあります。ここでは PC を使用して Android パッケージをビルドし、あなたのデバイスにアップロードします。そうすれば他の Android アプリと同様にそのゲームを実行可能です。正常に動作すればそのパッケージを Google Play やその他の app store にアップロード出来ます。

Android アプリのビルドは 4 つの手順を踏みます:

  1. Java Development Kit, Android USB ドライバーをダウンロードしてインストールします ( リンクは以下にあります )。

  2. ランチャーを使用して Android SDK をインストールしてキーを作成します。

  3. ランチャーを使用して Android ビルドを設定します。

  4. ランチャーを使用して Android アプリをビルドします。

一旦これらの手順を終えたら、実行可能な Android パッケージが手に入ります。ゲームの設定を変更したり新しいゲームを設定するときは手順 3 を実行するだけで大丈夫です。ゲームの新しいビルドを実行するときは常に手順 4 を実行します。

Step 1: 依存関係のインストール link

パッケージをビルドする前に手動でダウンロードしてインストールしなければならないものが 3 つあります:

Java 開発環境 Java Development Kit (JDK) には RAPT で使用するツールのいくつかが含まれており、その中には鍵の生成と署名をするためのパッケージもあります。これは次からダウンロードできます:

JDKのバージョン8が必要です。

開発者向けの JDK はユーザー向けの JRE とは異なることに注意してください。 Android パッケージの作成には JDK が必要です。

Android Device. あなたのデバイスを開発用に設定したいでしょう。あなたのデバイスで開発者モードを有効にして、PCをAndroid開発用に設定したいなら、設定方法の解説がこちらで見つかります。

アプリ は Android エミュレーター上で、 x86_64 でも実行できます ( x86 は未サポートです )。エミュレーターの設定まではこのドキュメントの範囲外となります。

手順2: Android SDK と開発環境のセットアップ link

次のステップでは、Android SDK と開発環境全体のセットアップを行います。このステップは以下のことをします:

  • JDK が適切にインストールされていることの確認。

  • Android SDK のインストール。

  • Android SDK による開発パッケージの追加インストール。

  • キーを 1 つ作成してマーケットに置くパッケージにサインします ( android.keystore: これは RAPT ディレクトリーに生成されます )。

このステップではインターネットアクセスが必要です。

この手順を処理するために、「 Install SDK & Create Keys 」 を Ren'Py ランチャーの Android 画面から選択します。

RAPT は何をしているかを報告し、ライセンスについての警告とともに表示し、ユーザーにキーを生成するか尋ねます。

警告

RAPT が生成したキーはスタンダードなパスフレーズで生成されます。実際にはキーツールを使用してあなた自身でサインしたキーを生成するべきです。

少なくとも、 android.keyring ファイルは安全な場所に保管しておくべきです。また、バックアップもとっておいてください。これはキーがないと生成したアプリケーションをアップロードできなくなるからです。

SDKを毎回ダウンロードしたくないならば、すでにインストールされたSDK へのパスを含む一行の sdk.txt という名前のファイルを作成できます。

手順3: ゲームへの設定 link

パッケージをビルドする前に、 Ren'Py にゲームの Android ビルドに関する情報を与えなければなりません。このため Ren'Py ランチャーの Android 画面から「 Configure 」を選択してください。

この情報を変更する必要がある場合(例えば、ゲームの新しいバージョンをリリースする場合)、設定コマンドを再度実行できます。以前選択した内容は記憶されます。

手順4: パッケージのビルドとインストール link

最後にパッケージをビルドし、インストール出来ます。これは Android デバイスとコンピューターを接続し、 Ren'Py ランチャーの Android 画面から「 Build & Install 」を選択して処理されます( 最初にインストールするときは Android デバイスはアプリのインストールのために、コンピューターを認証するよう求めるでしょう )。

ゲームの apk ファイルを Android デバイスに手動でコピーしたいなら、 Ren'Py ランチャーの Android スクリーンから「 Build Package 」を選択後、 RAPT ディレクトリー直下の bin ディレクトリーを開いて mygame-release.apk をあなたのAndroidデバイスに手動でコピーしてください。そのゲームをインストールするためにためには Android デバイスでファイルマネージャアプリを使用してその .apk ファイルを見つけて開かなければなりません。

Ren'Py では2つのリリースモードを選択できます。Debug と Release です。Debug はテストに便利で、簡単に Android Studio を使用してデバイスのログやファイルを閲覧できます。Release はストアにアップロードするのに適した app のバージョンを生成します。

Debug, Release ビルドを変更したときは app をアンインストールする必要があります。

アイコンとプレスプラッシュ画像 link

Icon link

Ren'Py は ゲームのベースディレクトリにある2つのファイルから、app 用にアイコンを生成できます。

android-icon_foreground.png

アイコンの全景です。これは 432x432 ピクセルの透明な画像であるべきです。

android-icon_background.png

アイコンの背景です。これは 432X432 ピクセルで不透明であるべきです。

Android adaptive アイコンはアイコンの2つのレイヤーを、少なくとも 132x132 ピクセルに中心寄せでマスキングします。このセーフスペースの外側はおそらく表示されますが、マスクされるかもしれません。セーフスペースの外側をにじませることが推奨されます。2つのレイヤーはアイコンがドラッグされると相互に相対的に移動します。

adaptive アイコンについての詳細は以下を確認ください。 :

1dp は 4 ピクセルに対応します。

アプリ生成時、 Ren'Py は各デバイスに対して適切なサイズにファイルを変換し、adaptive アイコンをサポートしないデバイスには静的なアイコンを生成します。

プレスプラッシュ link

プレスプラッシュは Ren'Py が完全にロードされるまで、メインスプラッシュスクリーンの前に表示されます。 Ren'Py の初回起動時のサポートファイル展開はしばらくかかるため、これは特に Andoroid では重要となります。

android-presplash.jpg

アプリのロード中に使用される画像です。これはモノカラーの1ピクセルの境界で囲まれるはずです。表示時にその画像はアスペクト比を維持しつつ利用可能エリア一杯に拡大され、画面の残りは境界の色となります。

Google Play の APK 拡張ファイル link

Google Play をサポートするデバイス使用時 Ren'Py は任意で APK 拡張ファイルの使用をサポートします。 APK 拡張ファイルは Google Play で 50MB 以上のサイズのゲームをホスト可能にします。以下を参照してください。 :

APK 拡張ファイルについては、現在 2 GB の制限を持つメイン拡張ファイルのみがサポートされています。 APK 拡張ファイルが作成されると、全てのゲームファイルは APK 拡張ファイルに置かれます。 Ren'Py はこれらのファイルを使用します。

あなたのゲームで APK 拡張ファイルを使用するためには 2 つの変数を設定する必要があります。

build.google_play_key = "..." link

これはあなたのアプリに紐付けされた Google Play のライセンスキーで、あなたのアプリに紐付けされた Google Play developer console の「Monetization Setup」タブで見つけられます ( すべてのスペースと改行をキーから除去してください )。

これは次のようなものです。

define build.google_play_key = "MIIBIjANBgkqhkiG9w0BAQEFA…HGTQIDAQAB"

実際にはもっと多くの文字と数字が並びます。

build.google_play_salt = ( ... ) link

これは 20 バイトのタプルであるべきで、各バイトは -128 から 128 までの整数で表現されます。これは Google Play からのライセンス情報を暗号化するために使用されます。

この変数の ( 安全ではないが ) 妥当な値です。 :

(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19)

RAPT は APK パッケージをインストールするときにそのデバイスに APK 拡張ファイルを設置します。

通常の処理では、そのアプリがインストールされると Google Play は自動的に APK 拡張ファイルをそのデバイスに設置します。