こんにちは!丸ダイスです。
先日、Unityで開発したゲームのモバイル版をリリースしました。
https://twitter.com/dice_maru/status/1253657786283520001
前に出した時 に苦労した覚えがあって、PCで遊べる完成したゲームでもモバイル版を出すのはとにかく大変 というイメージがあります。
…みんなあるよね?あってほしい。
なので、「結局、何にどれだけ時間がかかったか?」 をまとめておこうという記事です。
「このゲームをモバイルで出そうかな?」と思った時、やるかどうか、何を削るかの判断にきっと役に立つはず!
※ 実は、正確に言うとiOS 版がリリース出来ていません。Apple の審査が通らないからです(というか審査してくれない…)。が、ビルドや公開準備など開発側としてやることは終わってるので、かかる時間の比較の上では不問ということにしています。
画面の再設計して、バーチャルパッドで遊べるようにした(14時間)
結構悩むことに。
元のゲームは1画面1ステージなので、広告やバーチャルパッドを置く「隠れてもいい場所」がない。
なので、元のゲーム画面を縮小する↑こんなのを作りかけたけど、メットボーイ を参考にゲーム画面を分割した操作しやすい方法をひらめいて…
こうなった。
https://assetstore.unity.com/packages/tools/input-management/joystick-pack-107631?locale=ja-JP:title を使うのは初めてだったが、やりたいことはシンプルだったので半日でほぼ動くように。
このバーチャルパッド設定が必要だったので、ついでに「設定」「クレジット」「課金」など、オリジナル版にない追加UIは画面レイアウトだけ作った。(設定画面は過去作 から使いまわし)
TMProでのSprite Assetを勉強。元はキー操作(R)だったHowToを絵文字でやるように差し替えて終了。
外国語への翻訳(7時間)
いい機会なので、GoogleSpreadSheetのテキストを一発でcsv にして取り込めるようにワークフローを整備しました。
Google翻訳 最高!! 知らない言語もとりあえず翻訳は出来ます。
今までせいぜい 日本語、英語、中国語 までだったのが、それら含めて(一応)9言語が選べるように!
ひたすらプロジェクト中にKEYを入れて、日本語をSpreadsheetに移す作業(つらい・・)。
まとめて翻訳出来るとはいっても
「おす 」が「男性 」に…。ちがうんや…。
こういう誤翻訳は起こるので、気付いたら直しました。
英語は流石に一通り誤訳がないか読みました。
他は明らかにおかしい中国語に気付くくらいでほぼ読めないのでそのまま。
なんとなく、自動翻訳は
日本語→(中国語、韓国語)
英語→(ヨーロッパ系言語)
としてみたけど、効果があったかは不明。
文字溢れ
和「かいだんづくり( ◜◡◝ )」→ 独「Treppen Herstellung💢」
ドイツ語は・・ドイツ語はな・・・・。
Text Mesh Pro のAuto Sizingを使って文字が縮むようにしました。
1言語しか表示されないとUI上でのRect設定が適当だったりするので、文字が出る要素は一通りチェックする必要があった。
セリフの翻訳
口語なので自動翻訳が難しい。翻訳がダメだった時の萎え度も高いので、本当はネイティブに頼みたいところ。
今話題のDeepL翻訳を試してみました。
あれ?結構いい感じじゃね?知らんけど。 Heh hehがカワイイです。
ちなみに、Google翻訳 はこちら
SpreadSheetと違って手動で翻訳しないとダメだけど、デモ1つごとにコピペ1回で済みそうだったのでDeepLで。
面倒なので、英語以外は英語からのGoogle翻訳 で済ませる。
セリフの多いゲームではないけど、DeepL翻訳の英文は都度チェックして訳しやすいように日本語を調整したので、数時間はかかった。
翻訳終わり!Heh heh!
プライバシーポリシー表示の組み込み(3.5時間)
こういうヤツ。うっとうしいですよね。実装する方も面倒くさい思っています…。
でも、こうして各アプリが同意を取るおかげで、Google さんやApple さんの利用規約 がゆるくなってる・・・はず。
初回のみの言語切替も作りかけたけど、自動判定出来そうだったのでボツに。
広告をゲーム遷移に組み込む(4時間)
AdMobSDKの組み込み
GoogleMobileAdsSDKの最新版unityパッケージをGitHub からもらってくる。
何度かやってるのでほぼ秒。実機でちゃんと出るかはともかく…。
バナー広告の検討
AdMobのサポートページ とかを見てうまくやると、Editor上でもバナー広告のサイズ感を再現可能。
それでダミー広告で画面を隠してみて…
諦めました。
パズルゆえ考えてる時間が長いので出したかったが、流石にプレイ体験を損ないすぎる… 遅れてくる企画の敗北です…
全画面広告
シンプルに、パズルをクリアして次のパズルが始まる直前に全画面広告。画面に広告タイマーを表示。
遊ぶ側の広告への憎しみを忘れないために、Editor上でも出来るだけダサいデザイン でダミー広告が出るように。
この、このクソ広告め・・・。消えろ!消えろ!!!
Android で実機ビルドする(6.5時間)
一旦広告だけある状態で実機確認。
他のも組み込んだ後にダメだと、どこまでなら動くか切り分けるのが大変に…。
一度ビルドを走らせると平気で30分とか待たされて、Android 用コマンドライン 部分(結構最後の方)で失敗…、少し変えてもう一度、また30分…。
NDKがどうだの.jarがgradleでdeprecatedだのがConsoleに吐かれるも、中間処理がいっぱい挟まってるので何が原因か全く分からない。
あぁこれ…最高にモバイル版ビルド作業 …って感じ
素直にAndroid ビルドはExport Projectに変えて、Android Studio を使って自分でapkをビルドします。
意味不明なエラーを気合で直して、ようやくデバッグ 版の.apkが出来ました。たった2時間半で済んでよかった
その後KeyStore準備とか何やかんやあってrelease版が出来た。
ようやく実機で遊べる状態になるも、広告が表示されない…。
とりあえず放置しました 。
広報用のトレーラー動画 (7時間)
気が重かったけど、ストアページやGoogle 広告などいろいろ便利なので、作らざるを得ない。
今までトレーラーは同人ゲームまとめ動画 向けに 1~3分くらいの尺で作ってたのですが(https://www.youtube.com/watch?v=P2CYM9GtNFE 、https://www.youtube.com/watch?v=7ie43FNA5JA )
ストア向けの動画はApp Store の30秒が一番短い制限です。今回はこのショートPV一本に絞ってサッと作りました。
VIDEO www.youtube.com
出来た。
30秒だと必然的に「本題!ドヤドヤ!終わり!」みたいな構成になるけど、その方が要点がまとまった良いPVなのでは…という気もしますね。
日本語版 もついでに作って終了。
Android 実機で広告が出ない…(12時間)
時間が経てば動くやろ と思っていたけど、待てど暮らせど広告が表示される気配はなし。
PlayServiceResolverって何だ。イチから勉強するか。aarって誰だ。Android のシミュレーターなら出るのか。ええいNCMBは一回外すぞ 。っていうか意味が分からないログが多すぎてどれがクリティカルなのか全然分からない…。
最終的に、未公開アプリのデバッグ ビルドなのに本番広告が出るリクエス トになってしまっていた…? ようで、テスト広告はなんとか実機で見られました。
が、言ってることが分からないログと警告は特に消えず……。
つらさの主な原因は、UnityからAndroid Studio などの実機用エディタに移ると全てがブラックボックス 化されることでしょうか…。
アプリ内課金 (0時間。中止)
これ以上ネイティブプラグイン で苦しむのが嫌だったので中止しました。
(ゲーム内コンテンツに比べ圧倒的に買われない広告削除くらいしか課金要素はないし)
気合で登録しました。空いてる空欄をひらすら埋める作業…。
広報用のテキストは他のプラットフォームとかでプレスリリースで便利なのでテキストとして保存します。
AdMob広告を使う際、いろんな業者から競売されるようにすると不思議な力で単価が上がるらしいのでチャレンジしてみました。知らんけど。
Google AdMob のメディエーションガイド を読んで各メディエーション を組み込みます。
AdMob単体の広告に苦労したのに比べると、思ったより組み込みは楽でした。Google のドキュメントがとても分かりやすいのも良いです。
AppLovin(実装難易度 3)
新しく広告を作るために、一度メディエーション なしでSDK を組み込まないといけない。逆にメディエーション を使うと直接呼び出しが出来なくなる(両方を含めてビルド出来ないため)。
ドキュメントが分かりにくい。テストビルドにいきなり本番っぽい広告が出る。
全体的に作りがモッサリしてるが、コンソールの項目の少なさも含めて庶民派な感じでちょっと可愛い。
UnityAds(実装難易度 1)
Cloudビルドとかとダッシュ ボードが統合されてて、Unityチョットデキルとハードルが低い。ランタイム実装も何も要らないので大変楽。
Facebook Audience(実装難易度 4)
広告以外にも機能が膨大にあるようで、ブラウザコン ソールがめちゃくちゃ複雑。
2つのコンソールをまたいでIDをたくさん作らされてそれぞれを正しく接続しないといけない。AdMobのドキュメントがないと絶対無理。
もちろん当然のようにFacebook のアカウントと関連付けられる(イヤだ…)
ランタイム実装は何も要らないのは楽だが、広告テストに必要なAdvertising Identifierのために結局実機実装が少し必要。
IronSource(実装難易度 2?)
アプリを公開してないとうまく出来ない雰囲気で諦めた。
公開さえしてればなんか簡単そうな雰囲気だった。
Free Aspect に対応(1時間)
カメラの描画範囲はタテにもヨコにも伸ばせなかったので、いわゆる黒帯でお茶を濁しました。さみしいけど致し方なし。
2:1
4:3
AppStoreへのアプリ登録(3.5時間)
基本的には Google Play のコピペなんですが、スクリーンショットや動画の解像度指定 が厳しく、さらに複数要求されます。
Photoshop のバッチ処理 やAfterEffectsの出力をいじって、スクリーンショット 11枚(英語8枚+日本語3枚)と動画2本(英語・日本語)を3つの解像度に分裂させて、33枚のスクリーンショット と6本の動画を生成。
(正直、アス比対応を黒帯にしたのはそうしないと各解像度のスクリーンショット を作るのが面倒になるというのも・・)
事前予約・プレスリリースの準備と発信(5時間)
この当たりから想像以上の長期化でしんどくなってメモが適当ですが、時間は正確です。
予約トップ10
予約トップ10 でアプリの事前予約を登録して
PR TIMES でプレスリリースを出す準備をしました。
内容はストア広報の内容と大きく変わりませんが、各サイトのフォーマットに合わせます。
リリース時のオペレーション
実際にリリースしたら、下書き準備したプレスリリースを発射して、予約トップ10のリリースしたぞいボタンを押します。
iOS 実機でビルド・実行する(10時間)
(ちなみに、古かったMac のOSを最新に上げるのに5時間くらいかかりましたが、それは入れてません)
Certificate全く分からない
iOS のビルドはCertificate, mobile provision というアプリの証明書のような仕組みを組み込まないとダメです。
調査と組み込みに結構時間がかかった…。
AdMob広告や各メディエーション の登録と実機確認をiOS で改めてやりました。 2回目なので前よりはマシです。
iOS が審査してもらえない……(10時間)
詳細は伏せますが謎のリジェクトをくらってしまい、そもそもアプリを審査してもらえてないです。
既存のアプリをアップデートしてみたり 、1週間ほどいろいろ試しましたが、諦めました。
ぶっちゃけて言うと、今後も含めてiOS 版が出るかはApple 様次第です。 正直そこそこ不愉快なのですが、どうにも出来ません…。
まとめ
iOS は一旦保留ということにしましたが、4/24金曜日になんとかリリース出来ました
この記事の目的がモバイル版対応の作業コストを正しく見積もりことなので、各項目をカテゴリに分類してみました。
カテゴリ
かかった時間
モバイル版仕様の実装
22.5
広報素材の作成
8
多言語対応
7
アプリストア
6
広告SDK を組み込む
10
想定外の問題対処
27
実機ビルド
11.5
広報作業
5
実機ビルドも広い意味では問題対処ですが、モバイルリリ ースではほぼ必ずぶつかる壁なので別にしました。
合わせると半分近く、約40時間近くを問題対処に使っていました。実機ビルドに慣れてきたり問題が起こらなければこれらはほぼゼロになるはず。
一方、モバイル版仕様や素材作成、翻訳、広報などは制作作業なので、リリース経験が増えてもあまり減らない作業コストです。
評価
お気づきかと思いますが、3月末から期間にして約1ヶ月、オリジナルゲームの開発よりもはるかに時間がかかりました。
集計する前は、「1作品20時間くらいでモバイル対応して、ゲームジャムに参加する度にリリース!」と出来たらいいなと思っていたのですが、現実的には慣れたとしても40時間、2週間くらいはかかりそうな印象です。
ゲームジャム作品で言えば、3割をモバイルリリ ースに進めるくらいがコスト対効果として適切かなぁ…。
「Google Play ストア登録」→いろんな場面で使う広報テキストはここで書いたはずなので、1時間を「広報テキストの作成」として分けた。
「広告をゲーム遷移に組み込む」→GoogleMobileAds SDK の導入自体はほぼ秒だったので、「広告込のゲーム遷移」としてモバイル版仕様の実装に含めた
「広告メディエーション の導入」→検証込みだがここではAndroid しかやっていないので、Android の とした。
「iOS でビルド・実行する」→各コンソールに登録などがあった広告メディエーション の組み込みはAndroid と対応させてCertificate関係とは分けた
カテゴリ
内容
かかった時間
カテゴリ合計
モバイル版仕様の実装
バーチャルパッド・タッチ操作
9
22.5
設定画面など追加UI
5
FreeAspect対応
1
プライバシーポリシー
3.5
広告込のゲーム遷移
4
広報素材の作成
トレーラー動画
7
8
広報テキストの作成
1
多言語対応
翻訳
7
7
アプリストア
Google Play ストア登録
2.5
6
App Store ストア登録
3.5
広告SDK を組み込む
Android の広告メディエーション
5
10
iOS の広告メディエーション
5
想定外の問題対処
Android 実機で広告が出ない
12
27
iOS が審査してもらえない
10
Mac のOSが上げられない
5
実機ビルド
Android の実機でビルド
6.5
11.5
iOS の実機でビルド
5
広報作業
予約トップ10
2
5
プレスリリース
1.5
広報オペレーション
1.5