スクリプトプラグインを比較する
UE4には4.19からPythonがスクリプトプラグインとして組み込まれている。以前からLuaなど好きなスクリプトエンジンをソース組み込みできたが、プラグインかつ標準組み込みとなったことで今後Pythonの活用が進むと思われる。
そこで、UE4上で動くスクリプトのプラグインのPythonの2種類(公式1、3rd Party)とJavaScriptについて比較してみた。
比較表
※2018-08-25現在
_ | 公式Python | UnrealEnginePython | Unreal.js |
---|---|---|---|
対応UE4 ver. | 4.19 <= 4.20 | 4.12 <= 4.20 | 4.11 <= 4.19 ※1 |
言語 ver. | 2.7.x ※2 | 2.7.x / 3.6.x / 3.7.x ※3 | ES2017 |
提供形式 | 標準プラグイン | github | MarketPlace ※1 |
プラグイン ver. | BETA 1.0 | 1.0 | 0.3.1 |
Windows/Mac/Linux | 〇/〇/〇 | 〇/〇/〇 | 〇/〇/〇 |
iOS/Android | ×/× | ×/〇 | ×/〇 |
ランタイム実行 | × | 〇 | 〇 |
エディタ実行 | 〇 | 〇 | 〇 |
GUI付エディタ拡張 | × | 〇 | 〇 |
専用コンソール | 〇 | 〇 | 〇 |
- 補足
- ※1:githubのものをビルドすることで4.20に対応
- ※2:エンジンをソースからビルドすることで3系統に対応
- ※3: 3.6以外は別途python実行エンジンのインストールが必要
対応UE4 ver.
公式Pythonは比較的最近のver.にしか対応しない。UnrealEnginePython、Unreal.jsは古いver.でも対応する。
Unreal.jsはやや最新ver.への追従が遅い(githubのソースをビルドして導入することで最新にも対応する)。
言語ver.
対応するスクリプトの言語のver.の比較。
公式のPythonプラグインの問題として2系統であることが一つあげられる。というのも、Pythonの2系統は2020年までのサポートとされているため将来性に乏しい。
なぜ2系統なのかというと映像制作系の業界基準ガイドライン「VFX Reference Platform」の最新でもPython2が指定されているためとされており、これに合わせた形らしい。
なお、UnrealEnginePython、Unreal.jsに関してはそれぞれの言語の比較的新しいものが使える。
提供形式
いずれもプラグインであるが提供方法はバラバラ。
- 公式Python
- 既に入っているので有効化する
- UnrealEnginePython
- githubからバイナリをDLしてくる
- Unreal.js
- Market placeから導入
- 最新盤はgithubからソースDLしてビルド
対応実行プラットホーム
公式のPythonはそもそもエディタオンリーのため、モバイルでは動かない。
UnrealEnginePython、Unreal.jsに関してはAndroidのサポートの記載がある。
ランタイム実行
公式のPythonはエディタ上でのみ使用可能。つまりPythonでゲームを作ることはできない。
UnrealEnginePython、Unreal.jsはランタイム実行に対応。つまり、PythonやJavaScriptでゲームを作れる。
エディタ実行
どのプラグインもエディタ上で実行可能。エディタのマクロやバッチ処理的なことができる。
GUI付エディタ拡張
専用のUIを持った、ツール的なエディタ拡張ができるかどうか。
公式のPythonは将来的には対応予定があるらしいができない。
UnrealEnginePython、Unreal.jsは可能。複数のサンプルあり。
専用コンソール
インラインでスクリプトが実行できる専用のコンソールがあるかどうか。どのプラグインも用意されている。
- 公式Pythonは標準のOutput Logコンソールを切り替えることで専用コンソールになる
- Unreal.jsのJavaScriptコンソールはAPIの補完機能がある
- UnrealEnginePythonは専用のテキストエディタさえもある
まとめ
- 公式のPythonは導入が簡単
- 公式のPythonはPython2系統で将来性に不安
- 公式のPythonはエディタ実行のみ
- 公式のPythonは(まだ)GUIのあるエディタ拡張が作れない
おまけ:APIの比較
膨大になってしまうので詳細な比較は避けるがざっと見た感じの差。
- 公式のPythonはローカライズの機能がある
- Unreal.jsはローカライズの機能にアクセスするのは難しい
- UnrealEnginePythonはSlateにアクセスするAPIが充実している
- Unreal.jsもSlateへアクセスできるが間接的/部分的なAPIになっている
- Unreal.jsはBlueprintと相互に連携できる
- UnrealEnginePythonはBP -> Pythonができるかどうか不明
- 公式Pythonは両方向とも不明
- “Python Editor Scrtipt Plugin”が正式名称。 ↩︎