Blueprint & C++のiOS向けプロジェクトをWindowsで開発する

UE4

前置き

先に下記の親記事を読んで頂くとよいかと思います。

Unreal Engine 4でモバイルゲーム開発

この記事では iOSの開発環境を用意する上で一番躓きやすい、C++プロジェクトをWindowsで開発してMacにRemote Buildをして、Windowsに接続されているiOS実機で動作させるまでの手順を記載します。

動作環境

この手順は以下のバージョンで確認しています。

  • Unreal Engine 4.25.0
  • iOS 13.4.1
  • Visual Studio 2019 Community
  • macOS Catalina 10.15.4
  • Xcode 11.4.1

下準備

Apple Developer Programに登録する

iOS端末でアプリを動作させるためには、Apple Developer Programに登録して年間99米ドルを支払う必要があります。

WindowsにVisual Studio 2019をインストールする

WindowsでUE4のC++プロジェクトを扱う際には、Visual Studio を使用します。

特にこだわりがなければ、Visual Studio 2019 Community を使用すれば問題ありません。

インストール時にオプションをいくつか設定する必要があります。

  • .NET テスクトップ開発
  • C++によるデスクトップ開発
  • C++によるゲーム開発
  • .Net Framework 4.6.2 Targeting Pack(確か必要だったような)
  • Windows 8.1 SDK(最新版では項目が無くなっていたような)

※見つからないものは[個別のコンポーネント]の中を探してみてください。
※抜けがありましたらご指摘ください。

WindowsにiTunesをインストールする

WindowsにiTunesがインストールされていない場合は、こちらの手順に従ってiTunesをインストールします。

2020年5月現在、WindowsでiTunesをインストールする方法はMicrosoft Storeに一本化されました。(以前はAppleのサイトからもインストール可能でした)

Microsoft Storeからインストールした場合、フォルダ権限周りの対応が必要となります。以下のリンク先の対応をしてください。

この対応をしないと、iPhonePackagerでipaファイルを実機に転送する際にエラーが出ます。

WinowsにiOSデバイスを接続する

USBケーブルを使用してiOSデバイスをWindowsに接続します。

うまくいかない場合

PCにiOSデバイスを接続しても反応しない

プロビジョニング プロファイルを用意する

こちらの手順に従ってプロビジョニング プロファイルの準備をしてください。

iOSゲーム開発 – プロビジョニングを用意する

2020年5月11日

手順

プロジェクトを作成する

今回はプログラマ向けクイックスタートを参考に、C++のプロジェクトを作ります。

  1. [プロジェクト選択または新規作成]にて[新規プロジェクトのカテゴリ]の[ゲーム]を選択して[次へ]をクリックする。
  2. [テンプレート選択]にて[Blank]を選択して[次へ]をクリックする。
  3. [プロジェクト設定]にて以下のように設定します。
    1. [C++]のプロジェクトに設定する。
    2. ターゲットプラットフォームを[モバイル/タブレット]に設定する。
    3. [プロジェクトのパフォーマンス特性を[スケーラブルな3D/2D]に設定する。
    4. スターターコンテンツを[スターターコンテンツ有り]に設定する。
    5. プロジェクトの保存場所とプロジェクト名を指定する。(ここではiOSQuickStartします)
  4. Visual Studioが起動するとともに、プロジェクトが作成されました。

うまくいかない場合

WindowsでC++プロジェクトが作成できない

プロジェクトにC++クラスを追加する

プログラマ向けクイックスタートを参考に、C++クラスを追加してマップに配置してください。

詳細は省略しますが、「6. 応用編」は時間がかかるので「5. 最終結果」まででよいかと思います。

ターゲットプラットフォームを[モバイル/タブレット]に設定した場合、StarterContentがMobileStarterContentになりますので、ファイルパス指定時には書き換えてください。

プロジェクト設定でプロビジョニングを設定する

こちらの手順に従ってプロジェクトにプロビジョニング プロファイルを設定します。

iOSゲーム開発 – プロジェクト設定でプロビジョニングを設定する

2020年5月12日

うまくいかない場合

プロジェクト設定でプロビジョニング プロファイルがValidにならない

リモートビルドの設定をする

これでようやく実行!…といきたいところですが、C++のプロジェクトをiOSに転送するには、一度Mac側に転送してゴニョゴニョしなければなりません。そのためのリモートビルドの設定をします。

Macでのリモートログイン設定

  1. [システム環境設定]>[共有]を選択します。
  2. [リモートログイン]にチェックを入れて、ここでは[すべてのユーザ]に対してアクセスを許可します。
    また、後ほどコンピュータ名ユーザ名が必要となるので確認しておきます。コンピュータ名は画面上部のものを、ユーザ名は画面中央付近の「リモートログイン:オン」の箇所にある、アットマーク(@)の前の部分を使用すれば間違いないかと思います。
  3. 次にMacでの証明書のインポートですが、これは4.18にてWindowsで証明証をインポートしてあればMacでの証明書インポートは不要になりました。
    ですのでWindows で iOS をビルドするの「Macの設定」項目2、3の手順は不要となります。

WindowsでのRemote Build設定

現状のUE4では、次に説明する手順でリモートビルド用の秘密鍵を作成したのち、パーミッションを修正しなければリモートビルドに失敗してしまいます。本記事ではCygwinで修正する手順を紹介します。
  1. [編集]>[プロジェクト設定…]を選択してプロジェクト設定を開きます。
  2. [プラットフォーム]>[iOS]を選択します。
  3. 下の方にスクロールすると[ビルド]->[リモートビルドオプション]という閉じたセクションがあるので、これを開きます。
  4. [リモートサーバー名]には先ほどのMacのコンピュータ名を入力します。[RSync ユーザー名] には先ほどのユーザ名を入力します。
  5. [新規SSHキーを生成] ボタンを押して、Windows で iOS をビルドする の「SSHの設定」の手順の通りにSSHキーを入力します。が、私の手元だと表示される内容が違ったので以下に記載します。

    1. 「続行するには何かキーを押してください」 と表示されるので [Enter] キーを押します。
    2. PC環境によっては、下図のような表示が出る場合があります。

      この場合、一旦コマンドプロンプトを閉じてCygwin Terminalを起動します。
      以下のコマンドによって、秘密鍵のパーミッションを修正します。

      cd /cygdrive/c/Users/ユーザー名/
      chgrp -R Users ./.ssh/*
      chmod 600 ./.ssh/*

      その後、もう一度 [新規SSHキーを生成] ボタンを押してSSHキー作成を再開してください。

    3. 「Enter passphrase for key ‘/cygdrive/c/Users/ユーザー名/.ssh/id_rsa’:」 と表示されたら、自身の秘密鍵のパスワードを入力します。パスワードを設定していない(もしくは思い当たるフシがない)場合は空白のまま [Enter] キーを押します。
    4. 「Password:」と表示されたら、Macのアカウントのパスワードを入力します。
    5. 「Enter passphrase (empty for no passphrase):」と表示されたら、空白のまま [Enter] キーを押します。
    6. 「Enter same passphrase again:」と表示されたら、再び空白のまま [Enter] キーを押します。
    7. 「続行するには何かキーを押してください」 と表示されるので [Enter] キーを押します。
    8. 「Enter passphrase for key ‘/cygdrive/c/Users/ユーザー名/.ssh/id_rsa’:」 と表示されたら、自身の秘密鍵のパスワードを入力します。パスワードを設定していない(もしくは思い当たるフシがない)場合は空白のまま [Enter] キーを押します。
    9. 「Password:」と表示されたら、Macのアカウントのパスワードを入力します。
    10. 「続行するには何かキーを押してください」 と表示されるので [Enter] キーを押してウィンドウを閉じます。
  6. 正常に作成されれば、鍵ファイルのファイルパスが自動的に入力されます。(初回は反映までに数十秒かかることがあります)

SSHキーのパーミッションを修正する

  1. Cygwin Terminalを起動します。
  2. 以下のコマンドによって、秘密鍵のパーミッションを修正します。

    $ cd /cygdrive/c/Users/ユーザー名/AppData/Roaming/Unreal\ Engine/UnrealBuildTool/SSHKeys/Wanchan-Mac/wanchan/
    $ chgrp Users ./RemoteToolChainPrivate.key
    $ chmod 600 ./RemoteToolChainPrivate.key

IPAファイルを生成する

iOS上で動作するアプリケーションを含む IPAファイル を生成します。

  1. UE4エディタのメニューから、[ファイル]>[プロジェクトをパッケージ化]>[iOS]を選択します。
  2. 保存先フォルダを聞かれるので、場所を指定します。
  3. パッケージ化に成功すると、指定したフォルダ内にIPAファイルが生成されます。

IPAファイルが生成されている

UE4エディタの [起動]>[All_iOS_On_PC名]は4.25現在成功しないのでご注意ください。

うまくいかない場合

リモートビルドが成功しない

IPAファイルをiOSデバイスに転送する

こちらの手順に従って生成したIPAファイルをiOS実機に転送します。

iOSゲーム開発 – IPAファイルをiOSデバイスに転送する(Windows)

2020年5月12日

起動してみる

iOS実機側でアプリを起動します。

正しく起動できれば作業完了となります。

うまくいかない場合

iOS実機でアプリが起動できない