Let's Enjoy Unreal Engine

Unreal Engineを使って遊んでみましょう

UE4 FASTBuildでC++やシェーダーを分散ビルドする

今回はUE5のネタではなく、UE4.27 Preview 1が出た直後なのでまたUE4ネタです。

FASTBuildというオープンソースの分散ビルドシステムがあります。

fastbuild.org

UE4では有志の方が対応した独自対応版があったりしましたが、この度4.27でExperimentalではありますが正式に使えるようになっています。正式には4.26からでも使えていましたが、バグにより正しく動作しなかったりします。

独自にエンジンをカスタムできる環境であれば、有志が作成した独自対応版を導入することで利用可能です。

Integrating FASTBuild with Unreal Engine 4 · GitHub

今回はこのFASTBuildをカスタムしていないUE4でも使えるようにする方法を解説します。

続きを読む

UE5 Data Driven CVars(コンソール変数)について

もう既にリリースされてから結構時間が経ちますが、Unreal Engine 5 アーリーアクセス版がリリースされましたね!

www.unrealengine.com

NaniteやLumenを既に触っている方も多いと思いますが、個人的にはそれ以外の色々な機能を触ったりしています。NaniteやLumenなどのメジャーな機能は他の方にお任せするとして、今回はUE5で追加された小さいけど便利な機能についてを解説します。

少し触ってみてData Driven CVars(データ駆動 コンソール変数)という新機能があることを確認しました。CVarというのは通称コンソール変数と呼ばれるもので、よくコンソールコマンドを入力して値を変更することで様々な機能を使うことがあるかと思います。

本来はC++が必須なコンソール変数の追加ですがコンソール変数を簡単に追加し、データ駆動つまりアセットとして追加するような感覚で利用できるようになります。

早速今回はこの機能についてを解説します。

続きを読む

UE4 Math Expression(数学式)ノードを使いこなそう

UE4にはブループリントが実装されている当初から用意されているMath Expression(通称 数学式)という機能があります。最初はプラグインでしたが現在はエンジン自体の組み込み機能です。

これがMath Expressionノードです。
f:id:alwei:20210525201216p:plain

このMath Expression、最初からついている組み込み機能なのにその存在を知らない人を今でもよく見掛けます。そしてプログラマーでより経験の長い人ほどブループリントで四則演算を計算することを毛嫌いする人が多い気がしますが、そういう人のためにあるのがこのMath Expressionノードです。

公式ドキュメントは以下にあります。
docs.unrealengine.com

たしかに基本的な使い方は上記ドキュメントの通りなのですが、微妙にわからない点もいくつかあります。

Math Expressionで使えるノードについて、ヒストリアさんの以下の記事でも検証されているので引用しておきます。

historia.co.jp

  1. static 関数である
  2. BlueprintPure である
  3. ネイティブ関数である
  4. 出力が1つ(ReturnValue)だけある

これらを守っていれば比較的自由に計算式を構築できるということがわかります。ただし記事内でも触れられていますが、前括弧 "(" がDisplayNameに入っているノードは仕様なのか現在も使えないようです。

それではもう少し詳しく見ていきましょう。

続きを読む

UE4 Color Correct Regionで特定範囲内だけのカラコレをやってみる

UE4.26にはColor Correct Regionという特定の範囲内に対してのみ影響を与える色補正をかけることができます。Color Correctは元々映像系の専門用語ですが、UE4にも様々なColor Correct機能があります。

今回紹介するColor Correct Regionはボリュームのように扱うことができ、特定の範囲に対してのみ影響を与えるという少しだけ特殊な機能です。早速使っていきます。

続きを読む

UE4 アクターパレット(Actor Palete)でレベルデザインを少し楽にする

今月もミニ更新です。

UE4.26かひっそりと追加されていた『アクターパレット(Actor Palete)』プラグインというものがあります。このアクターパレットというのは、名前の通り"アクター"を画材の"パレット"のように便利に使えるようにするためのプラグインです。

ただUE4でパレットと言われてもパっとイメージがつかないかもしれません。アクターパレットはレベルデザイン時に、別のレベルに配置されているアクターを直接選択し、そのまま編集中のレベルにD&Dで持ってくるといったことが可能なプラグインです。

文章で説明するよりも使われているイメージがあった方がわかりやすいと思いますので、実際に使ってみましょう。

続きを読む

UE4 ネットワークマルチプレイヤーゲームを作る時の役割について

ここ最近はUE4でネットワークを使ったマルチプレイヤーゲームを作る機会が多くなってきました。UE4はエンジン自体が最初からネットワークマルチプレイヤーを幅広くサポートしています。しかし、実際に制作を行うためにはエンジン独特のノウハウが必要で、これらを解説している情報というのは少ないというのが現状です。

そこで今回はUE4でネットワークマルチプレイヤーゲームを作るための設計やクラスごとの役割についてを解説したいと思います。UE4のネットワーク周りについてのドキュメントは以下のページにありますのでこちらも参考にしてください。

docs.unrealengine.com

またUE4でネットワークを扱う際に非常に重要な部分となる所有権とRPCについて、ヒストリアさんのブログ記事が非常に参考になるので、こちらもどうぞ。

historia.co.jp

今回の記事はListenサーバー、Dedicatedサーバー、どちらを使ったとしても考え方そのものは同じです。Listenサーバーの場合は、クライアント側の処理も含めてサーバーが行う必要があるということに気をつけましょう。

それではメインの解説をしていきます。

続きを読む

UE4 マクロでワイルドカードを使って等価比較ノードを作る

今回は久し振りに軽めのネタです。

UE4のブループリントマクロではどんな型でも接続可能なワイルドカードピンというものを作成することができます。いわゆるプログラミング言語ジェネリクスと呼ばれるものに近いものではあるのですが、ブループリントのワイルドカードは制約も多く、一般的なジェネリクスのように作成することが難しいです。

等価比較というのは指定した2つの値が同じものかを調べることです。UE4でも等価比較ノードは沢山用意されており、以下のように型ごとに用意されています。(この他にも沢山)

f:id:alwei:20210124160232p:plain

マクロで作成しようとした際、ワイルドカードによって比較しようとしても結局は以下のように型が決められてしまうので、汎用的なノードを作ることができません。

f:id:alwei:20210124160402p:plain

そこで登場するのが配列用ノードです。配列用のノードは元からワイルドカードで指定できるようになっており、これを少し工夫することでなんと等価比較ができるようになります。それを実装したのが以下です。

f:id:alwei:20210124160630p:plain

片方側の要素でMake Arrayで配列を一度作成し、その配列からContainsノードで要素が存在するかをBooleanで受け取ります。これでどんな型にも対応できる等価比較ノードの出来上がりです。実際に使ってみると以下のような具合です。

f:id:alwei:20210124160830p:plain

全て同じノードであらゆる型のピンに対応が可能です。中身はそれぞれ同じ値を設定しているので結果も全てtrueになります。

f:id:alwei:20210124160944p:plain

ちょっとした工夫ですが、こういうハック的なことができるのはブループリントの面白いところかもしれません。非等価比較も条件を逆にすれば簡単に作成できますね。当然ながら内部で配列を作成する必要があるので、通常の等価比較よりも重たくなることは注意が必要です。

以上、ワイルドカードを使った簡単な等価比較ノードの作り方でした。