📤

UE4マーケットプレイスにC++ Pluginを公開するためのTips

2020/09/27に公開

UE4 マーケットプレイス

UE4にはマーケットプレイスというユーザーが作ったアセットやコードを公開、販売するストアがあります。

私はココに今までに4つのC++で書いたプラグイン(Code Plugin)を公開しています。

なので、今回はCode Pluginを公開する時に知っているとプラスになる(かも)Tipsをいくつか紹介します。

なお、マーケットプレイス用のプラグインビルド方法などは以前こちらのブログ記事にて紹介しています。
https://www.ayumax.net/entry/2019/02/07/235700

また、マーケットプレイスへの開発者登録についてはこちら。
https://www.ayumax.net/entry/2019/02/10/171408

Tips

No.1 ソースの先頭にCopyrightをいれる

これはタイトルの通りです。
全てのソースファイル(cpp, h, cs)の先頭行にはCopyrightの記述をいれましょう。

これは入れ忘れると審査時に指摘されますので、忘れないように。

No.2 単純な名前のUCLASSを作らないようにする

UE4 C++ではブループリントに公開するクラスはnamespaceに対応していない(UENUMだけはつかえる)ので、global namespaceにおかれることになります。

そのため自分のプラグインの中でEngine内で使われているクラス名を使おうとするとエラーが発生します。

ただ上記Engine内とのクラス名被りは開発中に気づけるので良いのですが、気を付けないといけないのが他のプラグインのクラス名との衝突です。

同じクラス名を持つ2つ以上のプラグインをユーザーが使用すると、開発時は問題ないですがパッケージ時にエラーが発生しなんともなりません。。。

また、ユーザーに公開するクラスだけでなく、テスト用のクラス名も同じなので気を付ける必要があります。

完全な対応策はUE4にnamespaceを対応してもらわないと厳しい気がしますが、少なくとも以下のようなことに気を付けると上記問題の発生率を下げる事はできます。

  • StringUtils, ActorManagerなど単純な名前のクラスは作らないようにする
  • ブループリントに公開しないクラスはUCLASSではない通常のC++クラスにしてnamespaceで囲む
  • どうしても単純なUCLASSを作りたい場合は、頭にPrefixを追加してユニークなクラス名になるようにする

No.3 マルチプラットフォームプラグイン

UE4の良さであるマルチプラットフォーム対応をプラグインにも対応させるにはいくつか気を付けるポイントがあります。

基本的には以下の手順で行います。

  1. マルチプラットフォームで動くようにコードを書く
    可能なら各OS固有のAPIなどは使わずに、UE4提供のクラスのみで書くとよいです。

  2. インストールオプションで必要なプラットフォームのチェックをONにしておく

  3. 各プラットフォームのビルド環境を整える

Android
以下の手順に従ってAnroid Studioのインストールなどしておく。

https://docs.unrealengine.com/ja/Platforms/Mobile/Android/Setup/AndroidStudio/index.html

Linux
以下のページのToolchainファイルをインストールしておく。

https://docs.unrealengine.com/en-US/Platforms/Linux/GettingStarted/index.html

Mac, iOS
Mac上でビルドできる環境を整える(XCodeとUE4のインストール)

※ iOSアプリをビルドする時に使えるリモートビルドは使えません
※ Apple Developerの登録はなくても可能です

  1. upluginファイルのWhitelistPlatformsに対応するプラットフォームを記載する

※ 上記WhitelistPlatformsへ記載する以外に、RunUAT.batを実行する際に対象プラットフォームを引数(-TargetPlatforms)で渡すことも可能です

※ iOSを対象にする際、Windows側のインストールオプションでiOSが有効な場合はWhitelistPlatformsにiOSを書くとリモートビルドが走ってしまい失敗するので、Windowsでパッケージを作る時だけWhitelistPlatformsからiOS, Macを消すか、RunUAT.batへ-TargetPlatformsを渡す方法を試してください

  1. パッケージを作成する

  2. WinとMacでビルドしたファイルをマージする
    Mac側で作ったパッケージフォルダ内のBinariesIntermediateをWindows側で作ったパッケージフォルダの同階層にコピペすることでOKです。

No.4 MarketplaceURL

upluginファイルにはMarketplaceURLを入力する箇所があるのですが、一見するとここに入れるURLは事前には分からないです。

ただこれは提出前に以下の手順を確認することができます。

  1. Plulisher PortalでADD PRODUCTを押して新規プラグインの設定ページを作成

  2. スクリーンショットや説明など必要な箇所を入力。

  3. 画面一番下のPRODUCT FILESにダミーのzipファイルを登録します。

  4. SAVE CHANGESボタンを押して入力した情報を保存します。

  5. いったんPublisher Portalのトップページに戻った後に、先ほど作成した新規プラグインのページを開くとURLの末尾に割り当てられたIDが確認できます。

  6. 以下のフォーマットのMarketplaceURLをupluginファイルに記述する
    com.epicgames.launcher://ue/marketplace/content/[割り当てられたID]

  7. 3で登録したダミーzipファイルを、完成したプラグインファイルをzipしたものに置き換える

MarketplaceURLを空のまま提出しても審査終了時にURLを教えてもらえるので問題はないのですが、上記手順を実行しておけば余計な手順を1つ減らすことができ、公開までの時短になります。

No.6 アセットを含める場合の注意

UE4 PluginにはPlugin以下のContentフォルダにブループリントやマテリアルなどのアセットを含めることができます。

この時に含めるアセットは自分のプラグインがサポートする最小バージョンのEngineで作るようにしましょう。

たとえば4.23, 4.24, 4.25に対応する場合は4.23で作るようにします。

そうしないと作成したバージョンよりも古いバージョンでは、そのアセットを開くことができません。

No.7 GitHubなどとの併用

Pluginのマーケットプレイスに表示される説明欄は、以下のように2つのくくりに分かれた欄があり、最大3800(1900+1900)文字まで入力できます。

この文字数制限は最初は十分かと思っていたのですが、更新履歴などを書いていくと割と早くオーバーしてしまいます。

なのでマーケットプレイスの説明欄には最新の情報のみを書き、過去のバージョン履歴や使い方などはGitHubや自分のホームページへリンクする構成に初期からしておくと途中から困らなくてもよくなり便利です。

No.8 Update時のURL

一度登録したPluginを機能追加やバグ修正などして更新したい場合は、Project File Linkに入力したURLを別の文字列にする必要があります。

同じURLのままだと、更新扱いにならずファイルが置き換わりません。

私はOneDriveのファイル共有の発行したURLを使っていますが、更新する場合は一度共有停止してから再度ファイル共有をすることで別のURLを発行していれています。

No.9 スクリーンショットやプラグインの説明は後からでもOK

プラグインを初回登録する際にはEpicによる審査がありますが、これはプラグインファイルにのみ行われているようです(たぶん)

この審査は結構時間がかかる(私はだいたい1か月くらいでした)ので、その分の時間を考慮しておく必要があります。

ただしスクリーンショットの登録や説明分などは審査なしで即時登録、変更できるので、初回審査の時はとりあえず間に合わせの画像や説明分で審査申請をして、審査が行われている間に説明分をもっと練り直すなどの作戦も可能です。

もちろん最初から全部準備できているに越したことはないと思いますが。

ちなみに初回審査に通ったあとは、スクリーンショット、説明分の変更は即時可能。プラグインファイルの更新はEpicの手続きがあるため1~2日(たまに1週間以上かかることも)くらいかかります。

No.10 審査申請してからバグをみつけてしまった。。。

審査に申請た後に、なんとなくソースを眺めていたらバグをみつけてしまった。。。

よくあることですw

そんな時はすぐに審査の中断をするのではなく、一呼吸おいて落ち着きましょう。

いったん審査を中断してしまうと、また再度申請してから審査待ち行列の最後尾に並ぶことになります。

プラグインファイルはダウンロード可能なURLを登録しているだけなので、さっと修正して再度同じURLにアップロードしておけばOKです。

この時にダウンロードするためのURLが変わらないようにすることだけ気を付けてください。

まとめ

UE4のプラグインを開発してきた中で、自分がメモしていた項目を記事にしてみました。

これからUE4 マーケットプレイスにC++プラグインを出そうと思っている人のお役に立てれば光栄です。

Discussion