Unityとcorgi engineで作ったゲームをiOS用に変更する。

はじめに

Steamで販売を開始した「DRAGON’S TOWER(ドラゴンズタワー)」ですが、2021年1月22日よりApp StoreにてiOS版として配信が開始されました!

「DRAGON’S TOWER(ドラゴンズタワー)」

App Storeでの配信は審査が厳しいと聞いていたのでかなりびびっていましたが、無事に審査に通りました!
今回はSteram版からiOS版へ変更するまでをまとめました。

※登録、審査については後日まとめる予定です。

AppStoreで配信したい

「DRAGON’S TOWER(ドラゴンズタワー)」については、Steamで販売することを目標としていたので、AppStoreでの配信は考えていませんでした。そこには3つの理由があります。

1.タッチパッドに対応するのが大変そう。
2.解像度とか大変そう。
3.
申請とか審査とか大変そう。

そう、つまりは大変そうだからです(笑)

初めて作るゲームだったのでゲームを完成して発表するところまでは絶対に達成したかった。
あまり風呂敷を広げすぎないよう目標を絞った結果です。

とりあえずSteamで販売する目的は達成したので、次の目標としてAppStoreでの配信を考えました。

iPhoneに特化した新作を作ろうと思いましたが、その前にタッチパネルとか解像度の対応とかの勉強も兼ねて、ドラゴンズタワーで機能が実装できるのか試してみることにしました。

ドラゴンズタワーで実験

1.タッチパッドの対応

ドラゴンズタワーの場合はファミコンのコントローラー構成で操作できるので、スマホを横持ちでタッチパッド、タッチボタンの操作をイメージしました。

スマホゲームではファミコン式の十字ボタンタイプとXboxとかPSのアナログスティックみたいなタイプと2種類のインターフェイスが使われることが多いと思います。

十字キー
アナログスティック系

ファミコン式の十字キーは自分が遊ぶ時に入力ミスが多くて遊びづらい印象だったので、今回はアナログスティック系のインターフェイスを採用しました

幸いにも利用しているアセット「corgi engine(コーギーエンジン)」ではスティック入力のシステムも用意されているので、それをそのまま使えるか検証。この辺りの設定はInputManagerで行えるので、エディタ上でも強制的に表示させるよう変更し、マウスで入力を試験。

↓お世話になりまくりのアセット。「corgi engine(コーギーエンジン)」

全く問題なく動作している様子。めちゃくちゃ簡単…エディタ上でのマウス操作ですが、とりあえず動作はした。

ボタンについてはドラゴンズタワーは2ボタンなので、他のボタンは非表示にして、ボタンの位置や大きさも調整。とても良い感じ。

2.解像度の対応

iPhoneの場合はシリーズによって画面の解像度に違いがあります。大体以下の感じです。

iPhone 12 Pro Max2,778 x 1,284
iPhone 12/12 Pro2,532 x 1,170
iPhone 12 min2,340 x 1,080
iPhone XS Max / 11 Pro Max2688 x 1242
iPhone 11 Pro2436 x 1125
iPhone XR/111792 x 828
iPhone X / XS2436 x 1125
iPhone 8 Plus/ 7 Plus/ 6s Plus/ 6 Plus1920 x 1080
iPhone 8 / 7 /6s / 61334 x 750


ゲームの解像度(1280×720)を超える部分は黒枠をつけて表示するようにしたい。
色々と調べてみるとメインカメラのプロパティでViewport Rect(ビューポート矩形)を変更すれば、
メインカメラの映像を画面の枠内に収められそう。

この辺りの機能についてはコーギーエンジンで何を使えばいいのかわからなかったので、自分で実装することとしました。

最初はゲームの解像度(1280×720)をそのまま表示して、上下黒帯の額縁表示にしようと考えました。実際に表示すると、解像度の高いiPhoneではゲーム画面が小さくなってしまう…

そこで縦はiPhoneの画面に合わせて、横の足りない部分を黒く表示することとしました。こうすることで解像度の高いiPhoneでもそこまで画面が小さくならずに済みます。

と、当初は空いたスペースは黒帯と考えていましたが、黒帯のままだと審査でリジェクトされる可能性があるとか…

と言うわけで別に新しいカメラを設けて一番下のレイヤーに常にレンガの画面を表示するようにしました。
これで画面の空いたところにレンガの画像が表示されるようになりました。

3.ビルド設定

一番心配していた操作系と解像度の問題がクリアできたので、実際にビルドしてiPhoneの実機で試してみました。


Steamの時もそうでしたが、エディタ上で正常に動作してもビルドができなかったり、ビルド後にちゃんと動作しない場合もあリます。
このタイミングで一旦ビルドして、実機で動作を確認します。

実際にビルドをしてみるとやはりエラーが発生しました。エラーの内容的にはSteamAPI関係のエラーです。Steamの実績を利用するためにSteam APIをpluginで利用しているためです。

一部のスクリプトをコメントアウトしたり、Steam用に作った「Steam Manager」のオブジェクトをオフったりすることで、エラーは消えて無事にビルドは完了。


ネットの古い情報ですと、デベロッパー登録していないと実機検証できない的な内容が見られましたが、Mac(Xcode)を通じて実機で検証することが出来ます。

概ね以下のサイトの情報を参考にしましたが、なかなかうまくいかずいろんなサイトを少しづつ参考にしました。

自分のiPhoneに自分のゲームのアイコンが表示されるのは、なかなか感慨深いものがあります。

また意外にサクサク動いたことにも驚きました。タッチパネルの操作も反応がとても良い。

この時点でApp Storeでの配信に自信が持てました。
このままドラゴンズタワーをApp Storeで配信するために作業を継続することにします。

App Store配信に向けて変更

1.UIやグラフィックの変更

アイテムの表示場所について現状は枠などで仕切られていないですけど、小さい画面になるのでわかりやすくアイテムを枠で仕切ることにします。これは単純に枠の絵を描いて、画面の上部に表示するだけなので、すぐに完成。

ついでにアイテム数を減らすため、鍵を無くしブーツや剣、鎧を装備することで、鍵の代わりになるように変更します。アイテムに鍵の機能を追加するのと、今まで鍵の色に合わせた扉の色にしていましたが、アイテムに合わせた扉へ変更。

あと、背景についてあえて黒バックにしていたところに背景を追加します。

実機で操作してみて、タッチパネルの表示の透明度や大きさが微調整できると良いと思ったので、その設定画面も追加します。

画面右上に設定アイコンを設置。スマホのゲームでよくみるスライダーの設定なんですけど、これはunityではスライダー表示させれば簡単に実装出来ました。あとは透明度、大きさの数値をタッチパネルの変数に反映させるだけ。便利。

2.広告の実装

Steam版はプレイヤーのリスポーンは無限ですが、今回は2機やられると、一旦ゲームオーバーとなってリトライするには広告動画を再生するよう促す仕様に変更します。

unityで広告動画を実装する場合にunity Adsを利用するのが便利そうだったので試しに実装して見ました。
ゲームオーバーの処理は一旦画面をポーズして、リトライボタンをUIを表示→リトライボタンを押すとunity Adswo呼び出して広告再生し、
ポーズを解除。実機が2機に増えて、ゲーム再開の流れです。

とりあえずテスト動画は再生されます。
実際に正常に動作するのか…配信してみないとわかりません。

3.セーブ機能の実装

一番大変だったのがセーブ機能の実装でした。
ゲーム内でFD(いまさらフロッピーディスク)を拾うとセーブポイントがアンロックされる仕組みにします。
一旦アンロックした好きなエリアから開始できるエリア選択の画面も新たに作ります。

セーブ自体はunityの場合「PlayerPrefs」を使うだけでとても簡単に実装出来ました。

FDを拾ったらPlayerPrefsで整数をファイルに記録するだけです。書き込みするファイルを意識する必要もないのでとても簡単。更にこのデータはアプリを終了した時にunityで自動的に端末にセーブしてくれるので、あえてファイルに書き込みする必要もないとのこと。ただ稀にアプリが落ちた時になどにセーブできていないことがあるようなので、今回は「ゲーム終了」をプレイヤーが選択した時だけファイルに書き込むこととしました。

実際に大変だったのはエリア選択画面でした。FDを拾ってエリアをアンロックしたり、エリアを選択した時にアイテムを持たせたり…ドラゴンズタワーは1本道のゲームなのであまりパターンはないですが、結構細かく色々なところに変更を加えました。

1回実装してしまえば他のゲームに流用できる部分なので、

次回からはこの辺りは苦労せずにできるかなと。

あとは登録と申請、審査…

アプリはこれでひとまず完成です。

このあとApple Developer Program」への登録、申請、アップロード、審査へと続き無事に配信が開始されました。

むしろそっちの方が大変でしたが、こちらについては後日まとめる予定です。

「DRAGON’S TOWER(ドラゴンズタワー)」はAppStoreにて、無料で配信中です。気になったら遊んで頂ければ幸いです!

「DRAGON’S TOWER(ドラゴンズタワー)」

タイトルとURLをコピーしました