UE4マーケットプレイスに出すプラグインのマルチプラットフォーム対応について
UE4プラグインのマルチプラットフォーム対応 今私がマーケットプレイスにだしているObjectDelivererというプラグインはWindowsのみをサポートしています。 最近利用者からのご要望で他のプラットフォームにも対応してほしいという声が数件きていたので、ちょっと重い腰を上げて調べてみました。 最終的なゲームのパッケージ時のマルチプラットフォーム対応は色んな記事が見つかったのですが、プラグインのパッケージ化についてはあまり情報がなく見つけるのに苦労しました。 ただし大部分はゲームのパッケージ方法と同じなので、いろんな情報をつなぎ合わせたところ何とかうまくいきそうなところまできました。 ここから先の情報は開発環境がWindowsを前提としています。 ※ 最後に書きますがiOS向けのみ上手くいっていません。 環境の準備 まずはEngineのインストールオプションから、出力したいプラットフォームにチェックをつけて必要な機能をインストールします。 次に追加で必要なソフトをインストールします。 Android 以下のインストーラーからAndroidの開発環境に必要なツールを一括でインストールします。 [UE4 Install Directory]\Engine\Extras\AndroidWorks\Win64\CodeWorksforAndroid-1R7u1-windows.exe この情報は以下のリンクから詳細が確認できます。 Unreal Engine | 1. Android 向けゲーム開発に必要な設定 Linux Linuxは公式サイトに必要なソフト(ツールチェーン)のインストーラのリンクがあるので、そこからとってきてインストールします。 ツールチェーンはEngineのバージョン毎に異なるので、パッケージしたいEngineの分だけインストールが必要です。 以下のサイトにインストーラのリンクがあります。 (日本語のページだとEngineのバージョンが4.19までしかないので、英語ページのリンクをのせています) Cross-Compiling for Linux iOS iOSはWindowsのマシンではビルドできないため、同一ネットワークにMacのマシンを用意してWindowsからリモートログインしてビルドする手法をとるようです。 そのためリモートログインの設定を行う必要があります。 通常のゲームのパッケージ化ですと、[ProjectSettings]-[Platforms]-[iOS]の[Build]に[Remote Build Options]があるので、そこにMacのマシン名とログインするユーザー名を入れれば設定は完了らしいです。 あとここでSSH のKeyの作成と登録もできます。 ただしプラグインのパッケージ化にはここの情報は使われず、Macにリモートアクセスしてくれません。 そこで色々試した結果[UE4 Install Directory]\Engine\Config\IOS\IOSEngine.iniに以下の記述を追加したところ、リモート接続しにいくようになりました。 [/Script/IOSRuntimeSettings.IOSRuntimeSettings] RemoteServerName=Macのマシン名 RSyncUsername=ログインユーザー名 プラグインのパッケージ化 そもそものプラグインのパッケージ化方法については以前の記事を参照ください。 UE4 マーケットプレイス用に自作Pluginのパッケージを作る - AYU MAX また、コマンドではなくEditorからの操作で作る場合は、PluginsウィンドウからもPackageできるようです。(最近知った) この時に狙ったプラットフォームの出力を作るためには*.upluginファイルのWhitelistPlatformsにプラットフォーム名を書く必要があります。 (WhitelistPlatformsを使わずにコマンドライン引数でも指定できるようです) 以下のように書くとWindows(64bit, 32bit), Mac, Linux, iOS, Android, HTML5向けに出力されるらしいので、この設定でパッケージ化のコマンドをたたいてみます。 "WhitelistPlatforms": [ "Win64", "Win32", "Mac", "Linux", "IOS", "Android", "HTML5" ] パッケージ化の結果 上手くパッケージ化できているかは、コマンドの結果とプラグイン出力ディレクトリの\Intermediate\Build内を見て判断しました。 ...