Android link

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

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

Ren'Py はAndroid 5.0 以上で動作しますが、それ以前のバージョンでは恐らく大きなゲームを適切に動作するリソースに欠けるでしょう。

必要な文言 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 のソフトウェア、ハードウェアによる違いは:

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

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

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

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

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

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

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

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

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

Phone

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

タブレット

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

Television

このモードは テレビベースの 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. ランチャーを使用してキーを作成します。

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Android SDK のインストール。

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

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

この手順を処理するために、「 Install SDK & Create Keys 」 を Ren'Py ランチャーの Android 画面から選択します。 RART はそれが何をするかを報告し、ライセンスを承諾するか尋ねます。

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

手順3: キーの生成 link

次に「キーの生成」をクリックしてパッケージの Android とバンドルキーを生成します。

警告

RAPT が生成したキーは標準的なパスフレーズで生成されます。これらのファイルへのアクセスを失わないよう気を付ける必要があります。

android.keystore と bundle.keystore ファイルは安全な場所に保管しておくべきです。また、バックアップもとっておいてください。このキーがないと生成したアプリケーションを更新できなくなります。

これらのファイルが決してパブリックにならないよう、特にバージョンコントロールが使用されているならば十分気を付けて下さい。

Android の key を生成するとき、 Ren'Py はスクリプトファイルと同じ場所にそれらをバックアップしますが、あなた自身でのバックアップの代わりにはなりません。

手順4: ゲームの設定 link

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

この情報を変更する必要があれば、設定コマンドを再実行してできます。以前の選択は記憶されます。

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

最後にパッケージのビルドとインストールを行います。まず2つのリリースモードを選択します。 :

Play バンドル

Play バンドルでのリリースは Android App Bundle (AAB) フォーマットであり、 Google Play store へのアップロードにのみ適していますが、 Play が有効な Android デバイスにもインストールできます。

Play バンドルのサイズは 2 GB までですが、4 つの 500MB の fast-follow パックのファイルに分割され、ゲーム内の各ファイルは4つのバンドルのうち1つに割り当てられます。4つのファイルであることが問題になるかもしれません。4つのファイルパックのそれぞれに1つのスペースのみ割り当てられているため、ゲームは 300MB の5 つのファイルには出来ません。

Universal APK

Universal APK のリリースは Ren'Py や ADB, 非 Play app store, web を介したサイドローディングによる Android デバイスへの直接のインストールに適しています。

Universal APK は 2 GB までのサイズが可能で、内容に制限はありません。

3つのコマンドによってパッケージのビルド、デバイスへのインストール、テストのための起動の様々な組み合わせを処理できます。

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

非常に大規模なゲーム link

2 GB を超えるゲームをビルドできます。これは モバイル上の巨大なゲームのためのダウンローダー を使用して行われており、ゲームの一部は Play バンドルまたはユニバーサル APK に含まれ、残りは使用可能なウェブサーバーからダウンロードされます。

アイコンとプレスプラッシュ画像 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ピクセルの境界で囲まれるべきです。表示時にその画像はアスペクト比を維持しつつ利用可能エリア一杯に拡大され、画面の残りは境界の色となります。

android-downloading.jpg

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

20pxの高さの進行バーは下から 20px に表示され、画面の左から右にダウンロード進行を表示します。

Pyjnius link

Android での実行時、 あるバージョンの Pyjnius library が利用出来ます。これは高度なクリエーターが Android librarie を呼び出せるようにします。

main activity を所得する必要があります。 org.renpy.android.PythonSDLActivity class の mActivity Field で見つけられます。例

init python:
    if renpy.android:
        import jnius
        mActivity = jnius.autoclass("org.renpy.android.PythonSDLActivity").mActivity
    else:
        mActivity = None

Permissions link

Ren'Py は実行に追加の許可を必要としませんが、あなたのゲームで Pyjnius を使用して Android を呼びだすなら許可を必要とします。 Ren'Py には Android の permission system に作用する変数と 2 つの関数があります。

build.android_permissions = [ ] link

これは文字列のリストで、各文字列は Android permission の完全な名前です。例 "android.permission.WRITE_EXTERNAL_STORAGE" 。 これは単にそのアプリケーションがそれらの許可を必要とすると宣言するのみです。許可を申請するには renpy.check_permission と renpy.request_permission を使用する必要があります。

renpy.check_permission(permission) link

Android のパーミッションがこのアプリに許可されているかを確認します。

permission

"android.permission.WRITE_EXTERNAL_STORAGE" のようなパーミッション名の文字列です。

そのパーミッションが許可されていれば True で、されていないか Android 以外のプラットフォームで呼び出されていれば False です。

renpy.request_permission(permission) link

Android にこのアプリケーションへのパーミッションの許可を要求します。ユーザーはそのパーミッションを許可するか尋ねられます。

permission

"android.permission.WRITE_EXTERNAL_STORAGE" のようなパーミッション名の文字列です。

そのパーミッションが許可されていれば True で、されていないか Android 以外のプラットフォームで呼び出されていれば False です。