Let's Enjoy Unreal Engine

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

UE4 非同期セーブロードプラグインを公開します

とある事情で作ったゲームのセーブデータのセーブとロードをブループリントで非同期に扱うことが可能なプラグインをIndie-us GamesのGitHub上で公開しました。

github.com

非同期なので、セーブデータのセーブとロードの完了を持たずにゲームのバックグラウンドで処理が行われます。このプラグインを利用することで、とあるプラットフォーム上でセーブとロードがブロックされてしまい、ゲームが数秒以上停止してしまい、プレイに支障がでてしまうというケースに有効です。

ちなみにPCではセーブもロードも高速でほぼ一瞬で終わりますので、このプラグインの出番はほぼないと思います。

簡単な使い方を以下で解説します。

続きを読む

UE4 誰でもわかるアウトライン入門

この記事はUnreal Engine 4(UE4) #2 Advent Calendar 2019の5日目の投稿記事です。

qiita.com

前回の記事でセルシェーダー入門を書きました。

unrealengine.hatenablog.com

こちらはセルシェーダーのみで、いわゆるアニメ絵で必須と言われているアウトライン表示は行っていません。今回はアウトライン作成に焦点を当てていきます。

今回もあくまでもシェーダー初心者に対しての軽いネタなので高度なネタを期待されている方は改めて読む必要はないかもしれませんので、あしからず。

続きを読む

UE4 誰でもわかるセルシェーダー入門

この記事はUnreal Engine 4(UE4) Advent Calendar 2019の1日目の投稿記事です。

qiita.com

さて、今年のAdvent Calendar 1発目のネタはみんな大好きなセルシェーダーについてです。と、言っても今更なネタでもありますので、普段仕事でも散々NPR系のシェーダーを作っており、本当は高度なネタも沢山知っていますが、今回はシェーダー初心者に向けたセルシェーダーの原理についての解説です。タイトルにもある通り誰でもわかる程度の内容を想定しています。

もう散々解説されているネタではありますが、意外なくらい原理を解説しているくらい記事は見かけないので、今回はあくまでもその原理を解説するという趣旨です。

続きを読む

UE4 UMG等で日本語フォントが4.23以降で文字化けするのを何とかする

UE4.23以降で、日本語フォントをUMGのText Widgetなどで表示しようとすると文字化けが発生してしまいます。これは最初バグなのかと思っていましたが、4.23のリリースノートには以下のような文章があります。

docs.unrealengine.com

Deprecated: Legacy localized fonts are now disabled by default.
These have been "soft" deprecated since 2014, were formally deprecated (emitting a warning if used) in 4.22, and will be removed in 4.24.
They can be temporarily enabled again by setting Slate.EnableLegacyLocalizedFallbackFont to 1.
You should instead ensure that your font assets are set-up correctly by using this overview.

従来のLegacy localized fontsと呼ばれるものが、非推奨になり、デフォルトでオフになりました。4.23の時点ではまだ、"Slate.EnableLegacyLocalizedFallbackFont"を1に設定することで旧来のフォントも利用できますが、どの道4.24で完全に削除されることになります。代わりにフォントアセットを自前で用意、設定してくださいとのことですが、日本語を表示するために態々フォントを用意するのも手間です。

非推奨になったものは仕方がないので、別のやり方でなんとかしてみましょう。

続きを読む

UE4 BPとC++のパフォーマンス比較検証

今年のUnreal Fest East 2019では様々なセッションがありましたが、その中でもよく話題になっていた以下のセッション。

www.famitsu.com

途中でブループリントとC++のパフォーマンスについての話があります。ブループリントの速度がC++に比べても遅いのは当然ですが、さすがにいくらなんでも差がありすぎるだろうと思って、実際に比較検証をしてみました。

『ForLoopがマクロなのでハンデになっている』という説明があるので、BPが極力不利にならないようにその部分は意地でもマクロを使わずに実装を行います。

なるべく計算量が多くなるようなアルゴリズムを採用し、わかりやすい結果がでるように最も有名なソートアルゴリズムのひとつ、"バブルソート"をC++とBP両方でやります。実際のコードとノードは以下に載せていますので、参考に。

バブルソート参考

qiita.com

続きを読む

UE4 Disaster Recoveryでエディタークラッシュ時の作業を修復する

UE4.23の新機能でDisaster Recovery(災害時回復)というものが追加されました。これまでもオートセーブ機能によりクラッシュした際に作業を以前の状態に戻したり出来ましたが、Disaster Recoveryはもっと強力なリカバリー機能です。4.23時点ではあくまでもExperimental(実験的機能)という事を念に置いて使ってみます。

ちなみに4.23のリリースノートは以下から。
docs.unrealengine.com

続きを読む

UE4 SSGI スクリーンスペースグローバルイルミネーションについて

現在Preview 8までリリースされているUE4.23から新機能としてSSGI(Screen Space Global Illumination)が導入されます。

これは4.23段階では実験的機能(Experimental)なものとして提供されており、まだ正式に使える状態ではありませんが、かなり綺麗に動いている状態です。

今回追加されたSSGIは全てリアルタイムに処理され、焼き付けられたライトマップの上に動的光源を追加することができます。UE4には既に他のGI機能がありますが、それらとも別物となります。

使い方は以下のコマンドをコンソール上で入力するだけです。

r.SSGI.Quality x

x には"1~4"の数値を入力します。0がデフォルトでこの状態ではSSGIが効いていないので、1以上の値を設定します。4が一番描画品質が高い分、描画負荷も高くなります。

ではここから実際に使ってみた画像を載せてみます。

続きを読む