ゲームプログラマー暇人日記

プロのゲームプログラマーが技術的な事から、そうじゃないことまで書いていきたいと思います。

ぷちコンで作ったPC用ゲームをAndroid対応してみる

 この記事はUnreal Engine 4 (UE4) Advent Calendar 2017の22日目の記事です。

今回はUE4ぷちコンで作成したPC用ゲーム『60 Seconds Shooting』をAndroidに移植する話です。

『60 Seconds Shooting』はこんなゲームです。

 PC版は無料ダウンロード出来ますので、詳しくはこちらを参照してください。

 

行ったAndroid対応ですが、下記の順番でやってます。

  1. Andoridで動かしてみる
  2. システムとして問題がある部分を修正する
  3. ゲームとして問題がある部分を修正する

 Androidで動かしてみる

もちろん、Andoridで動かないことには話になりません。

ということで、Androidで動かしてみます。

と言っても、昔UE4からAndroidのアプリを吐き出す対応を行っていたため、ここでの作業はあまりありませんでした。

Androidの開発環境が準備できていない場合は

Unreal Engine | Android クイックスタート

を参考にAndroidの開発環境を構築してください。

 

作業を始める前に一応、プロジェクトのバックアップを取って作業を取っておきます。

これは別に必要の無い作業でしたが、バックアップの安心感はありますよね。

 

プロジェクトの設定を変更します。

ハードウェアをモバイル/タブレットに変更する

グラフィックレベルをScalable 3Dまたは2Dに変更する

f:id:hima_zinn:20171215230151p:plain

ETC1フォーマットで出力します。

f:id:hima_zinn:20171215230203p:plain

これだけでAndroid用のアプリケーションファイルが出力されます。

とても簡単です。

マルチプラットフォーム開発環境万歳! 

 

次に出力したアプリをAndroid端末に入れます。

PCとAndroidを接続した後、AndroidがPCで認識されているか確認します。

コマンドプロンプトから

『adb devices』

で端末が認識されていることを確認します。

もし端末が認識されていない場合はドライバが入っていない可能性があります。

『端末の機種名 adb ドライバ』などで検索し、ドライバを入れてください。

adbがうまく動いていない場合は

adbの停止『adb kill-server』コマンドを行った後、

adbの起動『adb start-server』コマンドを行うとうまくいくことがあります。

その後は

Install_SixtySecondsShooting_Shipping-armv7-es2.bat

を実行するとAndroidスマホにアプリが入ります。

f:id:hima_zinn:20171215230223p:plain

あ、もちろんただ確認するだけならデバイスを選んで起動してもOKです。

f:id:hima_zinn:20171215232943p:plain

でも、最終的にはアプリとして出力しなければいけないので、先に正しく出力できるかは試しておくべきかと思います。

 

 システムとして問題がある部分を修正する

Andoridで動いたらゲームを遊んでみます。

しかし、『60 Seconds Shooting』の場合は即問題が発生してゲームが遊べませんでした。

タイトル画面からゲームを開始する方法を

キーボードのスペースキーを押すorコントローラーのStartボタンを押す

しか対応していませんでした。

そのため、タイトル画面から次の画面に行く方法がありません。

 

PCとAndroidで処理を変える必要があります。

プラットフォーム別に処理を変える方法ですが、

『Get Platform Name』ノードを使用します。

Get Platform Name | Unreal Engine

返り値はプラットフォーム名で

WindowsMacIOSAndroidPS4、XboxOne、HTML5Linux

が返ってきます。

IOSが大文字なので注意が必要です。

今だとSwitchとかも返ってきそうですね。

 

今回はGUIWidgetの部分で処理を変えています。

とりあえず、こんな感じです。

f:id:hima_zinn:20171215230238p:plain

PC版では文字を表示してキーボードorコントローラーのボタンでゲーム開始、

Andorid版ではボタンを表示して押したときにゲーム開始にしました。

それぞれ下記の見た目になります。

PC版

f:id:hima_zinn:20171215230303p:plain

 Android

f:id:hima_zinn:20171215231524p:plain

『60 Seconds Shooting』に関してはこの対応くらいで他にシステムとして問題があるところはありませんでした。

もし処理負荷が高い場合は処理負荷の軽減対応なども必要になります。

 

 ゲームとして問題がある部分を修正する

ここまでゲームとして動くようになったので、テストプレイを行いました。

調整を全く行っていない状態でのNexus 5での実機プレイ動画です。

これは難しい。。。

PC版でコントローラーで遊んだら慣れた人なら3分くらい遊べるように調整を行ったのですが、スマホでは操作性が悪すぎて19秒で死んでしまいました。

何回もプレイしたのですが、平均30秒くらいしか生き残れませんでした。

特にタッチパッドになったことによって指の部分が隠れてしまい、

指の下から来る敵に気付いた時には当たってしまいます。

PC版と同じ難易度にしてしまうとかなり難しいゲームになってしまうことがわかったので、Android用に調整することにしました。

 

敵の動きの速度を経過秒数に応じて変更することを試してみました。

敵の動きをゲーム開始時に今までの半分の速度にして3分経過時にPC版と同じ速度になるようにだんだんと早くするようにしてみました。

こちらが難易度調整後のNexus 5での実機プレイ動画です。

90秒ほど生き残れるようになりました。

まだ調整がかなり荒いところはありますが、これでゲームとして遊べる形になったかなと思います。

単純に敵の動きを遅くしたため、ステージ上に敵が想定よりも多く出てしまっています。

PC版と同じプレイ感になるようにするには、敵の出現数の調整もまだまだ必要そうです。

 

 最後に

このゲームは最初の企画段階からぷちコンに提出するためにPC版を作るだけではなく、あとでスマホ版対応を行う予定でした。

初めからなるべく移植しやすいように作っていたので、システムとして変えなければ行けない部分が少なくて助かりました。

PCとスマホの両対応するアプリを作る時はキーボードやコントローラーボタンのみの操作をなくしておいた方が簡単です。

また、処理負荷に関してはなるべく早めに考えておいた方が楽ですね。

ゲームとしての調整は実際にプレイしてみないとわからないところが多そうです。

マルチプラットフォームでの開発では操作性の違いから難易度が大きく変わってしまい事があるので注意が必要です。

このゲームはapkファイル化までは行ってゲームとしては作成できたので、時間があるときに残りの難易度調整を行って署名つけて公開しようと考え中です。

 

明日はじゅる (@xxJulexx)さんのUE4+Arduinoでいろいろとです。