(再掲)同人ゲームをAndroid用に作ってリリースするまでのロードマップ

※この記事は10月にサ終する予定のニコニコブロマガのサルベージ記事です。多少改定もしてます。

元記事投稿日:2020/10/24

先日作ったカモメ町のベンチマークとして、ビーチボールゲームを作りましたが、
モバイル用にも作ってGooglePlayにリリースしました。
カモメ町ビーチボールフェス
https://play.google.com/store/apps/dev?id=7772025009740869932

画像9

…その道のりが想像以上に大変だったというか、ネットで得られる情報がことごとくぶつ切りで! 今じゃ通用しなくなった情報もあってやべえ!

全工程を一つの記事で書ききったサイトは見当たらなかったので、
2020年度のAndriodアプリリリースまでのロードマップをここに書き記します。

1.Unityでアプリのプロジェクトを作る
2.AndroidStudioを入手する・Javaを入手する・JDK/SDK/NDKを割り当てる
3.Unity2018でしかビルドが通らない
4.PlayerSettingから、いろいろ設定する
5.Googleアカウントからデベロッパーアカウントとストアページを作る
6.アプリを新規作成する
7広告AdMobのアカウントを取得する
8.広告とプライバシーポリシーを実装する
9.テストビルドしてスクショを撮る
10.apkまたはabbをアップロードする
11.レーティングを真剣に考える
12.テストリリース
13.公開申請する
14.自力で宣伝する

長い道のりです(真顔)


1.Unityでアプリのプロジェクトを作る
まずここは省略します。
プラットフォームをAndroidに切り替え、モバイル用に最適化するため各種アセットの圧縮や低解像度化、メッシュの統合、マテリアルの削減、軽いシェーダー、といろいろやるべきことはあれど
ネットで出回ってる情報の通りにやればほぼ間違いありませんでした。
キャラモデルに関しては、シェイプがあると引くほどサイズが増えるので、どうしてもキャラの表情を変えたかったら顔を別モデルにして、アニメーターも変えるという改造が必要です(した)が、ここでは割愛します。
他にひっかかったのがVertex Compression(後述) ですが、圧縮は可逆でいつでも設定を変えられるので、おおむね問題ないです。


2.AndroidStudio+エミュを入手する・Javaを入手する・JDK/SDK/NDKを割り当てる

嘘だあーーーー!!!

JDK/SDK/NDKは、Android向けにビルドするために必須のものですが、
使用するUnityのバージョンに合わせて、細かく要求されるバージョンが違います。
しかし、2017以前のUnityエディタにはSDKNDKは組み込まれてなくて、その頃までの記事にはJDK/SDK/NDK入手とインストール手順がみっちりネットの記事に書かれてたのですが、

今は事情が違います。

うかつにこれらの最新バージョンをインストールすると死にます。
古いバージョンをインストールしても死にます。

クリーンインストールしたまっさらの新品PCに、UnityHubとUnity2019.4だけインストールしてURPサンプルプロジェクトをビルドしてみましたが、
ふつーに書き出せました。
うかつにSDKとかJDKとか入れちゃだめだ!!
大まかに言うと、特定の機能を使うアプリを作るとビルド時にSDKが合ってないとか警告されて、初めて必要だとわかるようになってきます。
何をしようとしたら要求されるかはわからないので、そうなったときに初めて導入するほうが安全です。
2018以降はUnityエディタにはじめから組み込まれてます。
どのSDKが必要かはUnityエディタのバージョンによって違い、さらに時間とともにGoogleストアが必要APIレベルを上げて、対応できないUnityエディタバージョン、ストアにアップしようとしても、古いバージョンを弾きます。
開発に数ヶ月かかるとその間にAPIレベルが上がって、ビルドできなくなることも十分ありえます。とても怖い思いをします。
それによって、APIレベルに対応できない古いAndroid機種も弾かれます。
当時テスト用に買ったAndroidタブは今ではもう使い物になりません。(ほんとにひどい)
古い情報を鵜呑みにして、うかつに間違ったSDKをインストールとかパスを変えて再起動とかやると、逆にビルドできなくなります。もしくは、ビルドしてエラーを出さずにapkファイル=実行ファイルは作れても、Androiod実機で起動しない症状に死ぬほど苦しめられました。
情報が出てこない。
ちなみにいまだに解決してません。一度おかしくなったら、PCクリーンインストールしか解決策がないかも。

AndroidStudioはAPIレベルが足りないとか言われたら必要になります。AndroidStudioを使わないと適切なSDKがインストールできませんが、仕方なくこれらのインストールを検討する…ぐらいの姿勢で正解かもしれません。


3.Unity2018でしかビルドが通らない
当時の私の開発環境では、2018しかビルドできなかった…!
2.でもがきまくったのが原因だと思います。
HDRPもURPも使えない(いや2018でもプレビュー版なら使えるけど)
泣く泣く2019.4で作ったプロジェクトを2018に作り直しました。
(2019→2018だとシーンに並べたプレハブが消えない程度の後方互換性はあったんだ。)
これも、ネットで調べても該当する情報が出てこなかったです。
レジストリまでいじくるような操作とかしたから、クリーンインストールしない限り直らないかもなあ。それでも動く保証はないし、最悪2018までビルドできなくなりかけたので、今の状況を維持して状況改善するには、別のPCを用意してそっちで試すしかないという…

4.PlayerSettingから、設定を組む
UnityエディタではAndroid用の設定は主にPlayerSettingから行います。

画像1

ここでプロダクトIDとかアイコンとかセットしますが、注意点は

・キーストアを作る
キーストアって何?、要はアプリをGoogle Play Consoleにアップするさいに必要な本人証明のファイルと、そのパスワードのことです。これがないとアップできません。

画像2

参考記事
https://qiita.com/ptkyoku/items/3fb1ae542ff04423c781
作ったファイルとエイリアスが全然Unityに認識されずに焦った。いつの間にか通ってた
作ったファイルとパスワードx2は絶対忘れないように。

・NDKが不可欠
ストアに出す=Google Play Consoleにアップするには、
今は64ビット対応(というか32ビット禁止)にしないといけなくて、それにはNDKの使用が不可欠です。(使わなくてもビルドだけはできる)
これもはじめから入ってるので(何事もなく済むなら)入手する必要はありません。
参考記事
https://teratail.com/questions/207173
PlayerSettingから、Publishing Settings-ConfigurationでARM64にチェック
加えて、x86のチェックは外さないといけませんでした。

画像3

x86つけてるとストアアップロードではじかれます。

・APIレベルを最大にする
APIレベルが何なのかイマイチわかりませんが、その時点の要求レベル以上にしないとアプリストアにアップできません。記事を書いた当時でレベル28必要。年々上がります。
Unityエディタに設定項目がありますが、AndroidStudioはこのためだけに必要みたいなこともあったかも。…これが何したらレベルを上げられたのかよく覚えてません。
アプリを作る前に一度必要APIレベルでビルドできるか試しておくと、後で困らずいいのかも。

・Vertex Compressionも設定する必要があります。
https://masakami.com/archives/2019/11/14/486/
これはビルド時にメッシュを圧縮する新機能ですが、似た機能であるfbxのMeshCompressionをオンにしてると無効になってしまうとか。
どっちがよく圧縮するのかパフォーマンスがいいのかわかりませんが、新しい機能の前者を使うのが奨励です。古いバージョンなら後者で


5.Googleアカウントからデベロッパーアカウントとストアページを作る
ゲームを公開するにはデベロッパーアカウントとストアページが必要です。
リリースする前にアカウントを作り、
Google Play Consoleから自分のストアを作る必要がありますが、

画像4

いろいろな要項を申請して承認させるのに一日以上の待ち時間を要します

デベロッパーページにはでかいバナー画像が必要だし、
支払い設定は銀行オンリーで(嘘だろ)、テスト入金待ちなんてあるし
プライバシーポリシーにはホームページを作っておかないとだし
アプリ広告もアプリページを作って検索に出てくるまでは無効です。(ビルドしてアップロードするまで、ではなくて)

早めに(金払って)作っておかないと、いらんトラブルを引き起こします。


6.アプリを新規作成する
アプリページがあれば広告がアプリに貼れるようになります。
アプリのテキスト関係を早めに設定しといて損はないでしょう。
言語は日本語以外に英語も用意しておくといいはず。英語の翻訳は急ぐとひどい文章になる。

アプリ自体も言語切り替えを実装してるに越したことはないので、文字が少ないならちょびっとのスクリプトで簡単にテキストを切り替えできるので、やります。
これの動作確認は実機の本体設定を変えるのが手間だけど


7広告AdMobのアカウントを取得する
Googl広告AdMobのアカウントを取得したら、プロジェクトに広告を実装するのですが

画像5

実装はまあ、ネットの記事の通りにやればバナー広告だったら簡単でした。
一方、UnityAdsが無理ゲーでした
http://kuromikangames.com/article/475955809.html
コードを追加するのは簡単だけど、それはテストモードまでの話
本番に必要な必要なグーグルストアIDが取得するまでの手順が、頭に入らない!!!
一度も使ったことないUnityダッシュボードにアプリのプロジェクトを登録して、さらにアルファ版のアプリ(なにそれ?)をGooglePlayにクローズドテスト版でアップして、申請が通るまで24時間待ち…ついてけねー!
さらにAdvanced設定は切れとか怪情報が出るし…
初心者はバナーだけで精一杯


8.広告とプライバシーポリシーを実装する
無料アプリに広告を載せましたが、こいつのためにプライバシーポリシーが不可欠だそうで
なんと自分のサイトを作って専用ページを作り、更にストアページだけでなくアプリからも飛べるようにリンクを張らないといけません
課金とかネットアクセスとかしなければ文は短くて済むんですが
すでにHP持ってたからまだ良かったけど、やっぱりめんどくさい
※なお現時点ではまだアプリにリンクは実装してないです(このへん申請した後に知った情報なんで)、にもかかわらず通ったなら、もしかしたら今は必要ないのかもしれない。数日後に警告がきて公開取り消しになるのかもしれない。


9.テストビルドしてスクショを撮る
広告を実装したら動作テストします。
Android用の実行ファイルはapk形式の1ファイルのみ、扱いが簡単です、が。
USBケーブルでつないでビルドランするか、コマンドプロンプトでadbコマンドとか、エミュレータにD&Dでファイルを実機に渡す、などいくつか方法がありますが、恐ろしいことにどれも失敗しました。プロファイラーでデバッグもできやしねえ。ケーブルが断線してたのかもしれません
が、Googleドライブ経由でファイルを渡すことができました。

admobの実装はまあまあ簡単なのですが、
https://nekopro99.com/unity-android-admob-banner/
リリース前は広告はテストIDにしないと規約違反でBANされるかもとか。
本番リリース時以外は常にテストIDにしとかないとマジで間違えます。
絶対間違えずすぐ切り替えられような気の利いたスクリプトを書く必要があります。

テストプレイ時にストア用のスクショも撮ります。
アイコン用に512*512が一枚,フィーチャーグラフィック用に1024*500が一枚,
実機のサンプルスクショ用に数枚必要です。
Androidでスクショしづらかったら、PCでビルドして撮るのもいいかも
更に、国別に違う画像をアップできるので、レーティング対策に多めに撮ります。
操作UI付きの画面は見栄えが悪いので、UIを非表示+処理落ち上等の最高画質+コントローラで操作できるように作るという戦略も有効です。


10.apkまたはabbをアップロードする
テストビルドが問題なかったら、apkをアップします。どこに?
Google Play Console-アプリ-リリースってとこです。

画像6

クローズテスト、オープンテスト、製品版とありますが、どれも別ファイルをアップする仕様です。また、一度アップしたらバージョンアップとしてカウントされ、Bundle Version Codeが同じかそれ以下のファイルは二度とアップできません。ビルド前にUnityエディタ側でBundle Version Codeを変える必要があります。
PlayerSettingから、Other SettingsにあるBundle Version Codeを上げます。

画像7

また、apkよりabb形式のほうがファイルサイズが小さくなるのですが、abbファイルは実機に直接読み込ませることができないデメリットがあります。

abbファイルでビルドするには、Build App Bundleをオンにします。


11、レーティングを真剣に考える
アプリには、レーティングを決める必要があります。
apkをアップロードすると設定できるようになります。こいつが審査の最大の障壁です
Google Play Consoleの長いアプリメニューの一番下というわかりにくいところにあります

画像8


https://akira-watson.com/android/developer-console.html

CeroZとかM指定とか、リリースする国ごとにレーティングが違いますが、リリースする国が増えると面倒が増えます。日本国内なら面倒は少なそうだけどアメリカでかいから外したくない…
アンケートに暴力表現の有無とか答えると、レーティング目安が3歳とかになって低っ!てなったけど、
これとは別にターゲット層と、広告の有無の項目があったのも見逃してました。
ビーチボールのぶつけ合いというゆるゆるな内容でも水着の女が出る時点でアウトなわけで、審査一度落ちました
日本以外は超厳しいのは察せられます。アイコンやスクショに水着ガールが映るのは100%アウトらしいです。
アイコンとスクショに映ってなければ大丈夫です。
念の為水着ガールはモデリングし直しました。


12.テストリリースを挑むができない
レーティングを固めてリリースの設定がすべて終わったら、申請します。
いきなり製品版リリースはビビるのでテストリリースしたかったのですけど。

限定されたメンバーにだけテスト版をリリースできます。メールアドレスを登録して、Play Consoleアプリをインストールした実機からプレイできる…はずですが
ぼっちはどうすんだ 
仕方なく自分のメアドをテストメンバーとして登録しましたが、テストリリースも申請が必要で、こっちはレーティング関係ないと思うんだけど、ずっと審査中のまま通らない…

仕方なくノーテストで製品版リリースしました。

製品版の公開と同時にこっちも公開済みになりました。なにそれ


13.公開申請する
リリースを申請すると数日かかって審判が下ります。
無事日の目を見るといいですね


14.自力で宣伝する
申請が通って無事リリースされたら…え?!になりました
公開されたというメールも来ないし、アプリのストアページにはシェアボタンが見当たらない
さらに、ストアで自作アプリを検索しても出てきません。
どうやって告知とかするん????

Googl広告を登録するとできるぽいですが(アプリ内広告のAdMobとは別)
https://ads.google.com/intl/ja_jp/home/campaigns/app-ads/
…これ企業向けで個人でやることではなさげ?

さらにAdMobの設定は、自動でリリース済みにならず、手動で設定し直す必要がありますが、ストアの検索に出てこないとこれも設定できません。
検索に出るまでしばし(一日以上?)かかります。

おへえ


というわけで山程つまづきながらも、人生初のゲームアプリのリリースにこぎつけました。よろしくおねがいします。

この記事が気に入ったらサポートをしてみませんか?