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

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

  • (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.keystore と bundle.keystore ファイルは安全な場所に保管しておくべきです。また、バックアップもとっておいてください。これはキーがないと生成したアプリケーションを更新できなくなるからです。

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

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

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

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

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

手順4: パッケージのビルドとインストール 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

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 jinus
        mActivity = jnius.autoclass("org.renpy.android.PythonSDLActivity")
    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 を使用する必要があります。

Android へのまたは Android からのファイル転送 link

Android デバイスが USB でコンピューターに接続されてファイルストレージへのアクセスが許可に設定されていると、ファイルを配置出来るようになるディレクトリーがいくつかあります(ここではあなたのゲームが org.renpy.mygame にあると想定していますが、ほぼ異なります)。

Android/data/org.renpy.mygame/files/saves

これはゲームのセーブファイルを含みます。

Android/data/org.renpy.mygame/files/game

あなたが作成していなければこれは存在しないでしょう。このディレクトリのファイルは android パッケージのファイルに優先してロードされるので、このディレクトリにパッチが配置できます。