【雑記】GameMakerからAndroidへの出力を行うメモ (2022.10)

GameMakerで開発中のゲームを Androidへ出力しようとしたら、開発環境が変わったりバージョンアップでビルドが通らなくなっていたりしたので、そのあたりの個人的なメモです。

環境

  • Mac mini (M1, 2020) – macOS Monterey
  • GameMaker v2022.9.0.49 Steam (Runtime v2022.9.0.63)

環境のインストール

まっさらな環境なので色々インストールします。

過去に書いたまとめによると、以下のものが必要そう…。(正確な情報は「公式ページ」を参照)

JDKは必要ないのかな…? と思ったのですが、Android Studio に含まれていそうな感じです。

1. Android Studio のダウンロード

ということで、Android Studio を公式サイトからダウンロード。

「Download Android Studio」をクリック。

すると利用規約が表示されるので、「I have read and agree with the above terms and conditions」にチェックを入れて、”Mac with Apple chip” (M1 Mac なので) をクリックしてインストーラーをダウンロードします。

2. Android Studio をインストールして、SDK/NDKをインストール

ダウンロードした「android-studio-2021.3.1.16-mac_arm.dmg」をダブルクリックで実行して、Applicationフォルダにインストールします。

Android Studio.app を実行すると、お約束のセキュリティチェックが表示されるので「開く」を選択。

設定ファイルの読み込み画面なのですが、新規インストールなので「Do not import settings」を選んで「OK」

個人情報は送信したくないので「Don’t send」をクリック。

Welcome画面では「Next」をクリック。

カスタムインストールはせずに標準のインストールを行うので「Standard」を選んで、「Next」をクリック。

UIテーマは好みのものを選んで「Next」をクリック。

Verify Settings から「SDK Folder」と「JDK Location」の値をどこかにメモしておき、「Next」をクリック。

Verify Settings
  • SDK Folder” / “JDK Location” の設定は後で GameMake 側で設定するので、パスをメモしておいたほうが良いです
  • SDK Folder” については、後で “Android SDK Location” という項目で表示されます

ライセンス同意規約は、各項目を「Accept」にして「Finish」をクリック。

するとインストールが開始されるので、しばらく待ちます…。

インストールが完了すると「Finish」ボタンが表示されるので、それをクリックします。

Welcomeページが表示されるので、「More Actions」を選んで「SDK Manager」を選びます。

  1. “Android SDK Location” をテキストにコピーしておきます(以前表示された “SDK Folder” と同じものです)※注意:このパスを変更する場合、空白文字や全角文字が含まれない短いパスにすると、余計な不具合に悩まされる可能性が減ります
  2. SDK Tools のタブをクリックします
  3. Show Package Details にチェックを入れます

すると各ツールの詳細な設定ができるようになるので、以下の項目にチェックを入れます。

  • Android SDK 33.0.0
  • NDK 24.0.8215888
要求されるSDKバージョン

公式ページによると、現時点 (2022.10.10) の GameMakerの最新バージョン (v2022.9) で要求されるSDK情報は以下のものとなっています。

  • Android SDK 33.0.0
  • NDK (Side by side) 24.0.8215888

Android SDK 33.0.0 は前の手順でインストールされていたようなので、今回はこのままとしておきます。

ただ、NDK (Side by side) の方はインストールされていなかったので、チェックを入れておきます。

ということで、インストール設定ができたので、「OK」ボタンを押します。

確認画面が表示されるので、「OK」を押します。

ライセンス同意確認が表示される場合は “Accept” で了承すると、インストールが開始されるので、しばらく待ちます…。

“Done” と表示され「Finish」ボタンが出現したらクリックします。

3. GameMakerで各種SDKのパスを設定する

GameMakerを起動してプロジェクトを開きます。そして Prefernces (環境設定) を選択。

Platform Settings > Android でAndroid用の設定を開きます。

“Android SDK location / Android NDK location / Java JDK location” の3つの項目を設定します。私の環境では以下のようになりました。

  • Android SDK location: /Users/syun77/Library/Android/sdk
  • Android NDK location: /Users/syun77/Library/Android/sdk/ndk/24.0.8215888
  • Java JDK location: /Applications/Android Studio.app/Contents/jre/Contents/Home

NDK は SDKフォルダの中にバージョンごとに分けてインストールされます(Side by Sideの場合)。

さらにこの画面で、キーストア(認証キーのようなもの)の生成を行います。画面は開いたままで次の項へ…

4. キーストアの作成

先程のパス設定画面を下にスクロールすると、以下の項目があります。

  • Filename: キーストアファイルのパス(最初は設定不要)
  • Common Name: あなたの名前を入れる
  • Password: パスワード (6文字以上)
  • Alias: キーストアのユーザ名
  • Alias: キーストアのパスワード
  • Organisations Unit: 組織単位
  • Organisation: 組織名
  • Location: 拠点とする場所 (“Tokyo” など)
  • Country: 国を示す2文字のコード (日本なら”JP”)

Filename は特に記入せずに、それ以外の項目に適切に入力します。おそらくですが、パスワード以外はあまり重要でないような気がします。気になる場合は 「Android キーストア」でGoogle検索すると色々見つかると思うので、そのあたりを参考に入力します。(この設定情報はスクリーンショットを撮っておくなどして、保管しておくほうが良いようです)

入力ができたらキーストアの出力です。Generate Keystore をクリックして、キーストアを生成します。

すると保存先の選択が表示されるので、任意の場所に保存します。私の環境では、/Users/syun77/Documents/keys/android.keystore としました。

これでキーストアの作成は完了です。

5. デバイス接続設定・転送

最後にデバイスの接続設定です。

32ビットの x86デバイスはサポートされなくなった

2022.8.22 以降、32ビットの x86デバイスはサポートされなくなったようなので、もし古いAndroidを使っている方は注意が必要となります。

Androidにアプリを転送するには 端末側の “開発者オプション > USBデバッグ” を有効にする必要があります。
私の持っている端末は Galaxy だったので、ここを参考に有効化しました

なお、”macOSのみ” ファイル転送を有効にするため、以下の Android ファイル転送アプリをインストールする必要があります。

PC(macOS)と端末を接続し、転送の準備ができたら、GameMakeに戻って、右上のビルド設定から、Platform > Android > VM を選択して、「鉛筆アイコン」をクリックします。

Device Editorが開くので、Detect Device をクリックします。

初回は以下のような認証確認ダイアログが表示されるので、端末側で許可をOKします。

「デバイス側で認証を許可してね」というメッセージ

認証が正しく行われると、Display Name と Host Name にシリアル番号が表示されます。(Display Nameはわかりやすいようにリネームしています)。

そうしたら「Test Connection」をクリックします。

問題なく接続できれば、以下のようなメッセージが表示されます。

接続成功のメッセージ

接続がうまく行かない場合は、端末とUSBを抜き差しすることで許可設定が表示されることがあるようです。

最後に、ゲーム側の設定の “Game Options”(GameMaker のツールバーにある歯車アイコン)をクリックして、設定画面 > Android を表示します。

API Level を「33」にしておきます。

以前は「Build Tools」にバージョンを入力していたのですが、こちらは “空白” で問題ないようです。(入力しても無視されるようです)

Build Tools version is blank for API 30+ because Google have changed this so you specify the Compile SDK value and the Android SDK works out the correct build tools you need. If you’re compiling with API 30+, then any version you type here will be ignored by Google’s tools.

API 30+ のビルド ツール バージョンは空白です。これは、Google がこれを変更したため、Compile SDK 値を指定すると、Android SDK が必要な正しいビルド ツールを実行するためです。 API 30 以降でコンパイルしている場合、ここに入力したバージョンは Google のツールによって無視されます。

GameMaker Required SDKs

なお、公式ドキュメントによると、Google Playに登録するには API Level が 30以上でなければならないようです

Minimum SDK version is 16 for API 28+ and anything built for Android YYC. (Be aware Google Play requires you to use API 30 or above when submitting!)

API 28+ および Android YYC 用に構築されたものについては、SDK の最小バージョンは 16 です。 (Google Play では、提出時に API 30 以上を使用する必要があることに注意してください!)

GameMaker Required SDKs

ちなみに Architecture に x86_64 がありますが、x86 はサポート外となったのであまり意味はないかもしれません(念のためチェックは入れたままにしておきます)。

6. 実行して動作確認

では実行して動作確認をします。「F5」でビルド&実行…のはずですが、昔インストールした AdMob 用広告のエラーが発生。確か古いモジュールはサポートされなくなったようなので、Extentions から削除して再びビルドしますがビルドエラー。

ビルドエラーメッセージ (一部抜粋)
/Users/syun77/.config/GameMakerStudio2/Cache/GMS2CACHE/Escape002_FEDE1D0C/android/Default/jp.jp_2dgames.escape002/src/main/java/jp/jp_2dgames/escape002/GooglePlayAdsExtension.java:744: エラー: シンボルを見つけられません
		ConsentInformation consentInformation = ConsentInformation.getInstance(RunnerJNILib.ms_context);

悩むこと数十分…。「消したはずの古い情報が残っているので、クリーンビルドすればうまくいくかも…?」と思って、以下のクリーンアイコンを押してから再ビルド…。

無事、ビルドできました……!

(検証に要した時間:3時間ほど)

AdMobの設定

AdMobの設定については、以下のページに続きます。

【雑記】GameMakerでAdMobを設定するメモ (2022.10) 【雑記】GameMakerでAdMobを設定するメモ (2022.10)