2014年6月5日

UE3 から UE4 への移行

作成 Matt Stafford

私は、Matt Stafford (別名 Wraiyth) です。Pub Games という会社でテクニカル ディレクターを務めています。Pub Games は、オーストラリアのメルボルンに本拠を構え、アンリアル・エンジンによる開発を専門に行っています。初めてゲームをリリースしたのは、2012年のことでした。ゲームのタイトルは、ブラストポイントです。iOS と Android で動くスペースシューティングゲームでした。他にも Pub Games は、コントラクターとしてさまざまなプロジェクトに参加しています。中でも特に、InFluxPrimal Carnage を挙げることができます。

Pub Games は、小さなスタジオにすぎません。6 人の従業員とさらに 6 人のコントラクターで構成されています。最近では、Arx (犠牲と選択のコンセプトによるファンタジー アクションゲーム) を開発するための資金を受け取りました。

このブログに投稿するように依頼された時、私はどのように書くべきか真剣に考えました。Unreal Development Kit (UDK とも表記される UE3 の無料版) から UE4 に移行することは、不思議な体験でした。非常に大きな違いがありながら、この新たなエンジンには、不思議と親近感がありました。しかも顕著な改善点と変更があったのです。

前のテクノロジーに比べて最も大きな改善点はどこなのか、私はオフィスの中にいるスタッフに急いで聞いて回りました。それぞれが異なる意見をもっているようです。これは良い兆候です。エピックがエンジンのあらゆる側面について実施した改善の質を物語っているからです。ただし、スタッフとのやり取りの中で共通していることがありました。それは、UE4 によって非プログラマーが大きな力が得られたということです。そこで私は、主要な変更点と改善点についていくつか手短にリストとしてまとめ、明確化してみました。リストには、かなり大々的な改善点も含まれていますが、アンリアル・エンジン 4 を使用するデベロッパーが現在気がつかないほど小規模でありながらも有用な改善点も含まれています。

ブループリント

おそらく、最もすばらしく、大きな変更点は、ブループリント ビジュアル スクリプティングでしょう。ブループリントのパワーと用途性については、語るべきことがたくさんあります。1 回の投稿ではカバーし切れないほどです。

ブループリントは、Kismet、prefab、archetype に代わるものであるとともに、さらに強力な機能が追加されたオールインワンのツールです。アーティストは、シンプルなアクタを作成して、さまざまなコンポーネントを追加し、その振る舞いを構築できます。これらはすべてプログラマーによる入力を必要としません。これらは再利用可能であり、かつカスタマイズ性が非常に優れています。ブループリントには利用可能なリソースが豊富にそろっており、作品の中にはさらに多くのリソースが含まれています。ただし、その存在と強力さについては気がつかなければなりません。

パッケージがなくなった!

UE3 で味わった恐ろしい体験の 1 つに、パッケージ システムに関係することがありました。パッケージを誤ったやり方で分割すると、単純なアセットに加えたささいな変更が、ゲームのレポジトリに大きな影響を及ぼしたのです。UE4 では、アセットを個々のファイルまたは UAsset とすることによってこの問題が完全に解決されました。これらのアセットをコンテンツ ブラウザ内で動かして、整理できる機能は、優れて柔軟であり、またドラッグアンドドロップで簡単に利用できます。Perforce や Subversion といったソース管理とのエディタの統合と相まって、整理が非常にしやすくなります!

簡単になったインポート

ドラッグアンドドロップと言えば、アセットのグループを Windows エクスプローラーのフォルダからコンテンツ ブラウザに直接インポートできるようになりました。小さな改善点に思えますが、便利で効率性が向上します。

アニメーション アセット

パッケージが削除されたことによって、Animation Sets などの「group」オブジェクト型が削除されるというプラスの副次的効果がもたらされました。各アニメーションは、それ自身のアセットファイルとして保存され、スケルトンに関連づけられます。これによってアセットの共有が格段に簡単になりました。

実際、アニメーション システム全体がオーバーホールされました。UE4 には AnimMontage が導入されています。これによって、アニメーション シーケンスがアーティストに任せられるようになりました。アーティストは、AnimMontage を使って、複雑なアニメーションのシーケンスをつなげたり、イベント ベースでアニメーションを切り替えたり、他にもいろいろできるようになりました。

UE3 の AnimTree に代わって登場したのが、ブループリント ベースの AnimBlueprint です。このシステムが強化されたことによって、アーティストは大きな力を手に入れました。アニメーションのステートマシーン全体とエディタ内で遷移ルールを構築できるようになったのです。

INI 編集の終わり?

UE3 で開発していた頃は、「それって、どの INI ファイルに入っていたんだっけ?」という声が職場でしょっちゅう飛び交っていました。幸いなことに、エピックが、苦痛に満ちた私たちの声を聞き、通常作業のために、 INI ファイルの編集をエディタの内部に置いてくれました。

[編集] > [プロジェクト設定] によって、機能に関する有益な説明が多数エクスポーズされます。独自の一般的な設定やコリジョン チャンネル、キーバインディング、物理サーフェス等が設定できます。それらのメニューを試してみてください。作業量が軽減するかもしれませんよ!

BSP およびナビゲーションのための自動リビルド

BSP ブラシは、改変後にリビルドしなくてもよくなりました。ブラシを自由にドラッグして、操作し、リアルタイムにその変更を見ることができます。この動的なシステムは、Navigation などのようなものにも及び、自動的にビルドされます。この機能が気に入らなかったり、パフォーマンスが劣化する場合は、[プロジェクト設定] > [ナビゲーション システム] から無効化できます。

ステーツがない

UnrealScript の 1 つの長所をあげるならば、それはステート システムです。これは、ステートフルなものを作成するためにはとても優れた手段です。ただし、C++ への移行にともない、ステート マシーンのためのネイティブのサポートがなくなりました。エピックはこれに対処するために、ツールを作り、プログラムによるステート マシーンの必要性を低減させました。これには、AI のためのビヘイビアとアニメーション ブループリント ステートが挙げられます。あなたがまだプログラムによるステート マシーンの使用に賛成であるならば、C++ は非常に強力な言語です。ご自分のステート マシーンを書くことができます!

サブスクリプションに加入している方であれば、Github で Unreal Tournament 4 のソースコードを見ることができます。これによって、UE4 における C++ ベースのステート マシーンの例がご覧になれます。

アセットの参照機能

コードを書いている時は、ほぼいつも、さまざまなアートのアセットを参照しなければなりません。たとえば、3D モデル、パーティクル エフェクト、オーディオ、他多数のものについて。アセットの参照機能が、ブループリントの追加にともない、大幅に向上し、これらすべてが、所定のブループリント内でコンポーネントとして単に追加できるようになりました。

当然の帰結として、いたるところにブループリントの参照があるコードベースができあがってしまうことが考えられます。ありがたいことに、この問題に対処するために 2 つのシステムが備わっています。それは、アセット レジストリとオブジェクト ライブラリです。アセット レジストリを使えば、タグやパスなどに基づいて、ロードされていないアセットをクエリできます。それによってゲームプレイ中にアセットをルックアップできるようになります。たとえば、Player クラスをともなったゲームがある場合は、すべての Player クラスのブループリントをフォルダに保存して、実行時にルックアップし、ユーザーインターフェイスにそれらを入れることがきます。しかも、ハードコードされたアセットの参照を必要とせずに!

プラグインと拡張性

多くの人が UE3 について抱いていた最大の不満の 1 つに、エンジンおよびエディタに拡張性が欠けていたということがあります。これについては、UE4 で目覚ましく改善されています。プラグインが追加され、実行時の機能とエディタの機能を追加できるようになりました。

エンジンには、非常に豊富なサンプルが付いてきます。その中でも最も興味深いものは、Experimental ディレクトリに入っているサンプルです。たとえば、Paper2D は、2D スプライト ベースのサポートをエンジンに追加しています。また、Math Expressions (数式) は、数式をブループリントで扱うためのサポートを追加しています。

これらはまだ活発に開発されていますが、あらゆるプラグイン システムのパワーがはっきりと見て取れます。新たなブループリント ノードから、フルエディタおよびインエディタのビジュアライゼーション、そしておそらくは私たちがまだ考えてもいないものまで!

他にも?

今挙げたリストは、UE4 の機能セットのほんのさわりに過ぎません。それでも、みなさんが UE3 から移行して遭遇するであろう変更点 (大きい変更でも小さい変更でも) についてご紹介できていたら幸いです。

UE3 to UE4 Transition Guide (UE3 から UE4 への移行ガイド) が、アンリアル・エンジンの wiki に掲載されています。お役に立つので、ぜひご覧になってください。また、このテーマについてフォーラムでもっといっしょに話し合いませんか?