Let's Enjoy Unreal Engine

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

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

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

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

UE4 セルシェーディング系アセットレビュー!

この記事はUnreal Engine 4 (UE4) Advent Calendar 2020 その1日、25日目の記事となります。

qiita.com

今年は技術記事ではありませんが、UE4マーケットプレイスで販売しているセルシェーディング系アセットについて、私が所持しているものを徹底レビューします!

思えばマケプレにもかなりの数のNPR系のアセットが増えましたが、なかなか購入までは至らず、中身が気になっている人もそれなりにいるでしょう。少しでも購入の際の参考になればよいかと思います。

今回レビューするアセットは主にポストプロセスを未使用のものを中心に紹介しています。ポストプロセス系はお手軽ですが、どうしても表現力で一歩落ちるのと数が多いので今回は省くことにしました。その分ひとつひとつのアセットを濃い内容で解説しています。レビューは★の数で評価していますが、最大は★5つとしています。

レビューをするアセットは以下となっておりますので、気になるアセットがあればぜひ購入してみてください。

  • JIFFYCREW CEL SHADING
  • Advanced Cel Shader Essentials
  • Anime Toon Shading
  • Cel-Shader & Outline
  • Cel Shading +
  • Cartoon Cel Shader
  • まとめ
続きを読む

UE4.26 Enhanced Inputについて

そろそろ正式版がリリースされそうですが、今回もUE4.26ネタです。

UE4.26 Previewの概要については以下から。
forums.unrealengine.com

今回は数ある4.26の新機能であるEnhanced Inputについてを解説します。Enhanced Inputはその名前の通り、強化された入力のシステムです。既存の入力システムでは微妙に届きづらなかった部分にもアクセスが可能になっています。

では早速使い方を解説していきましょう。

続きを読む

UE4.26 Water Systemを使ってみる

UE4.26 Preview 4が絶賛公開中ですが、新機能を少しずつ触っています。詳しい情報はある程度フォーラムにまとまっています。完全なリリースノートは正式版が公開次第でてくるでしょう。

forums.unrealengine.com

Chaos標準化、Fullbody IK、Mobile Deferred Renderer、GPU Lightmassなどなど、多くの新機能が搭載されていますが、今回はその中でも色々と面白そうなWater Systemについて触れたいと思います。

Water Systemはフォートナイトで既に実用化されており、既にある程度実用性の高いものとなっています、現状ではまだExperimental(実験段階)となっているので注意が必要です。

続きを読む

UE4 Cheat Managerを活用しよう

UE4.26のPreviewがでました。ちょっと新機能がてんこ盛りですが、調べるほどの時間がないので、今日は小ネタでいきたいと思います。

今回解説するのはUE4の隠れた便利機能である、Cheat Managerについてです。Cheat ManagerはUE4からの機能ではなく、UE3時代からあるUnreal Engineの由緒正しい機能のひとつです。名前だけを直訳すると、ずるい管理者という意味で、チートというのは基本的にゲームでは叩かれる行為です。

ただし、UE4のCheat Managerは開発を楽にし、デバッグをより効率的にするための機能なので、活用しない手はありません。Cheat ManagerはC++を使うことで本領を発揮する機能ですが、実はブループリントからでも活用可能です。今回はC++に頼らずに出来る範囲でCheat Managerを活用してみるという内容です。

実際のC++とBPのAPI一覧は以下にあります。

docs.unrealengine.com

docs.unrealengine.com

Cheat Managerの補足として、Player Controllerに紐付いており、Player Controllerを経由して利用します。またCheat ManagerはDevelopmentビルドでは利用可能ですが、Shippingでは全体の効果が無効化されますのであくまでも開発時専用の機能だと思ってください。

それでは早速実際に使ってみてどのような効果のノードがあるのかを解説していきます。

続きを読む

UE4 C++ Hot Reloadプラグインを使ってみる

今回も前回同じプラグイン関連の記事となります。

個人的に以前から少し気になっていたプラグインがあったので、検証してみました。

f:id:alwei:20200830113051p:plain

www.unrealengine.com

このプラグインUE4標準のC++をホットリロードする機能とは別にホットリロードの機能を提供するプラグインです。

説明だけを読むと、とても素晴らしいことが書いているので気になっていました。以下は英語の説明。

Ultra-fast reload of source code no matter how big is your project, C++ Hot Reload only reloads your modified files creating micro-dlls, which allow you to change the whole class structure of your header files and see the changes reflected in your BPs and Editor properties in seconds.

Stop wasting time doing full builds, using LiveCoding or thinking in buy a new machine. Check out the reviews of developers that are using this plugin. Whatever the doubt; visit Discord, you will not regret to buying this plugin.

標準のホットリロードや、Liveコーディングよりも高速でかつ、すべてをリロードし、大幅にビルド時間を短縮してくれるそうです。「このプラグインを購入することは後悔しません」とまで書かれています。

そこまで言うのなら検証してみようということで早速マケプレで購入して検証してみました。値段が非常に高いプラグインなので、購入を迷っている人に少しでも参考になればと思います。

続きを読む