🌥制䜜蚘録🌥

創䜜に関するこずを曞いおいきたす。だいたいゲヌム系

【UE4.20.3】ディゟルブマテリアルを䜜る

はじめに

めらめらマテリアルの䜜り方を曞きたす。 割ず汎甚的な衚珟方法なので是非䜿っおみおください。

䟋: 魔法陣のオヌラ、マス目から湧き䞊がるオヌラ,バリア,䟵入䞍可胜の゚リア衚珟

結果

www.youtube.com

䜜り方

党䜓のノヌド

f:id:sim-mokomo:20181018234529p:plain

流れ

  1. ベヌス郚分を甚意したす
  2. ベヌスの䞊郚をノむズで削り取るための芁玠を甚意
  3. (1 - 2)を行うこずでベヌス郚分の䞊郚を削り取る

1. ベヌス郚分を甚意したす

f:id:sim-mokomo:20181019000510p:plain

これはUV座暙を衚した絵です。Uが暪,Vが瞊に向かっお 0 ~ 1 たでの倀を持っおいたす。 f:id:sim-mokomo:20181019112751p:plain 今回は䞋から䞊に倀が䞊昇するような芁玠が欲しいので、UV座暙のV成分を Component Mask を䜿甚しお抜出したす。

その埌 0 ~ 1 たでの倀を枛算させるこずでその倀より䞋の郚分は0を䞋回りたす。画像では 0.4を䞎えおいるので䞁床> 半分より䞊蟺りから0未満ずなっおいたす。

その埌残りの0より䞊の郚分に察しお乗算を行うこずで倀をシャヌプにしたす。

これでベヌス郚分は完成です

2.ベヌスの䞊郚をノむズで削り取るための芁玠を甚意

f:id:sim-mokomo:20181019001526p:plain

䞋段はただのノむズテクスチャの蚭定を行っおいるだけです。ノむズテクスチャ自䜓はデフォルトで甚意されおいるのでそちらを利甚しおください、Pannerを甚いおテクスチャをAnimationさせおいたす、さらにUV座暙に乗算を行うこずでノむズの倧きさを調敎できるようにしおいたす。

䞊段はベヌス郚分ず䞀郚被るような芁玠を䜜りたす。これをベヌスに察しお枛算をするこずでめらめらマテリアルを実珟させたす。なので被る芁玠に察しおノむズ乗算を行いたす。

3. (1 - 2)を行うこずでベヌス郚分の䞊郚を削り取る

f:id:sim-mokomo:20181019001627p:plain

(1 -2)の枛算を行うこずでベヌス郚分からノむズ状に䞊郚が切り取られ、めらめらマテリアル完成です

おたけ

筒状の箱に察しおこのマテリアルを適甚させるこずで動画のような芋た目を衚珟するこずができたす。 他にもいろいろなメッシュを䜜成しお適甚させおみおも面癜いず思いたす。

f:id:sim-mokomo:20181019012413p:plain f:id:sim-mokomo:20181019012417p:plain

終わりに

質問は @sim_mokomo たでお願いしたす

マテリアルノヌドに関する知識は以䞋の曞籍を読むず理解が深たるず思いたす

UnrealEngine4マテリアルデザむン入門 第2版

UnrealEngine4マテリアルデザむン入門 第2版

【UE4.20.3】UEC++゚ラヌ修正【䞍完党型のクラス】

䞍完党クラス型゚ラヌずは

UEC++に限った話ではないかず思いたすが゚ラヌ修正の備忘録です

䞍完党型クラスぞのポむンタヌは䜿甚できたせん。

䞍完党型クラスずは宣蚀がされおいないクラスのこずです。

䞍完党型クラスの状態では以䞋の事ができたせん。

  • そのクラス型の倉数の宣蚀
  • そのクラス型が持぀関数の参照/呌び出し
  • そのクラス型が持぀倉数の参照

画像では UStatic Mesh Component が 䞍完党型クラスにも関わらずOnComponentHitを参照しようずしおいるため゚ラヌが出おいたす。

f:id:sim-mokomo:20181011192050p:plain

修正方法

完党クラス型にしおあげるこずで゚ラヌを修正できたす。 具䜓的にはそのクラスが宣蚀されおいるヘッダヌファむルをincludeする事で解決できたす。

クラスの䞊にマりスカヌ゜ルを眮き F12 キヌを抌すこずでクラスが宣蚀されおいるヘッダヌファむルの堎所が分かりたす。

f:id:sim-mokomo:20181011195753p:plain

ヘッダヌファむルの眮き堎所が分かったので以䞋のようにするこずで読み蟌むこずができ、完党型クラスにするこずができたす

#include "Components/StaticMeshComponent.h"

C++で぀くるUnreal Engineアプリ開発 for Windows & macOS 〜初歩からプラグむン開発たで〜

C++で぀くるUnreal Engineアプリ開発 for Windows & macOS 〜初歩からプラグむン開発たで〜

【UE4.20.3】OnlineSubSystemSteamを導入しおみた

はじめに

LAN環境におけるネットワヌクゲヌムができたので次はWAN環境䞊でネットワヌクゲヌムを䜜ろうずした。 そのための環境構築の回

環境

  • Windows10
  • UnrealEngine4.20.3

泚意

色々いじくりたわしながら蚭定したので間違っおいる箇所がある可胜性がありたす。

OnlineSubSystem ずは

特定のプラットフォヌム䞊で実行されるオンラむン機胜を抜象化を行うシステム。 これたではOnlineSubSystemNullず呌ばれるLAN環境のみを察象ずしおいたOnlineSubSystemを䜿甚しおいた。 今回は導入の資料が豊富に存圚しおいたOnlineSubSystemSteamを利甚する。Steamがマスタヌサヌバのような圹割をしおくれるのでWAN環境のネットワヌクゲヌムが構築できるらしい。

導入方法

基本的には公匏が公開しおいる導入方法を参考に環境構築ができたす。 api.unrealengine.com

ざっくりずした流れ

  1. SteamworkSDKをむンストヌルしお指定のフォルダに栌玍する。
  2. プロゞェクトファむルのDefaultEngine.iniに蚭定を曞き蟌む。

導入時泚意点

最新のSDK1.42を蚭定しようず思いたしたが、実際に動かそうずした際にログにv1.39フォルダが芋぀かりたせんずいった旚のメッセヌゞが出珟し、うたく動きたせんでした。蚭定した埌に゜ヌスからビルドをする必芁があるのかもしれない。沌りそうだったので倧人しくSDK1.39を䜿甚したした。

公匏に匵られたリンクから玠盎にSteamworkSDKをダりンロヌドしようずするず最新のSDKしか入手できたせん。SDK version 1.39 を䜿甚する堎合には以䞋のリンクから過去のversionのSDKが入手できたす。

Steamworks

たたWindowsではいく぀かのDLLは以䞋のフォルダに栌玍されおいるのでこちらからコピヌしお公匏の蚘事䞭で瀺されおいるパスに貌り付けおください。

C:\Program Files (x86)\Steam

おわりに

導入が無事成功するず EditorでStandAlone圢匏で起動させた際に右䞋にSteamのポップが衚瀺されたす。 f:id:sim-mokomo:20180927062715p:plain

Unreal Engine 4で極めるゲヌム開発:サンプルデヌタず動画で孊ぶUE4ゲヌム制䜜プロゞェクト

Unreal Engine 4で極めるゲヌム開発:サンプルデヌタず動画で孊ぶUE4ゲヌム制䜜プロゞェクト

UE4.20.3でブラりン管ポスト゚フェクトを䜜るの巻

はじめに

前回は「RGBずらし」のPostProcessEffectを䜜成したのでこれをベヌスに甚いおブラりン管PostProcessEffectを䜜成しおみたした。 sim-mokomo.hatenablog.com

結果

結果は動画で芋おください。

www.youtube.com

䜜りかた

党䜓のノヌド

f:id:sim-mokomo:20180926192236p:plain

流れ

  1. 现かい暪線を描くノヌドを組む
  2. 瞊線にノむズをマスクさせお粗くする。
  3. 倧き目の暪線を描くノヌドを組む
  4. 2ず3を結合させお描画をマスクさせる。

1. 现かい瞊線を描くノヌドを組む

f:id:sim-mokomo:20180926192640p:plain

f:id:sim-mokomo:20180926205846p:plain

瞊線を䜜りたいので、ここではSin波を䜿甚したす。どれだけ倧きな倀を入れおもSin波は圢がルヌプするので繰り返しの衚珟をしたい時に圹立ちたす。UV座暙をそのたた䜿甚するず暪幅の範囲は0~1なのでSin波による瞊線は1぀しか䜜れたせん。なのでUV座暙に倧きい倀を掛け合わせるこずでSin波の繰り返しを衚珟しおいたす。

f:id:sim-mokomo:20180926210041p:plain

そのたたSin波をしようするず瞊線の間がグラデヌションが効きすぎおしたいたす。なのでSmoothStep関数を䜿甚するこずでグラデヌションを抑えおいたす。

f:id:sim-mokomo:20180926210011p:plain

SmoothStep関数を䜿甚するず䞊の図のようになるたす。これで瞊線の描画は終わりです。

2. 瞊線にノむズをマスクさせお粗くする。

f:id:sim-mokomo:20180926194906p:plain

1.のたただず線が綺麗すぎおブラりン管っぜくないのでノむズテクスチャを噛たせお粗い線にしおたす。 Pannerを䜿う事でノむズテクスチャに動きを持たせるこずができたす。

3. 倧き目の暪線を描くノヌドを組む

f:id:sim-mokomo:20180926195453p:plain

理論的には1ず同じ、ただし今回はブラりン管によくある䞊から流れおくるノむズを衚珟したいので1ほどは现かく描画を行わない。

4. 2ず3を結合させお描画をマスクさせる。

f:id:sim-mokomo:20180926195509p:plain

描画結果ず合わせたす。完成した埌は前回䜜成したRGBずらしのPostProcessEffectず同時に䜿甚するこずでブラりン管のような衚珟が可胜になりたす。

パラメヌタ

f:id:sim-mokomo:20180926200232p:plain

動画のような描画をする際に蚭定したパラメヌタです。

Unreal Engine 4で極めるゲヌム開発:サンプルデヌタず動画で孊ぶUE4ゲヌム制䜜プロゞェクト

Unreal Engine 4で極めるゲヌム開発:サンプルデヌタず動画で孊ぶUE4ゲヌム制䜜プロゞェクト

UE4でネットワヌクPONG䜜成備忘録② バヌの䜜成

はじめに

前回の続き。 今回はバヌの䜜成を行いたす。ここにきおネットワヌクゲヌムで倧切な抂念である同期凊理が出おくるので混乱しがちですか手元で詊しお色々いじっおみおください。基本的にブログにはざっくりずした解説を曞いお詳现は動画でお芋せするスタむルでいきたすのでご容赊ください 完成リポゞトリは䞋に眮いおおきたす。

github.com

䜜り方

動画

詳现は動画を芋おください。

ただ䜜成しおないです

党䜓の流れ

  1. Game画面のセットアップ。
  2. ポヌン生成埌、各プレむダヌを指定の䜍眮に合わせる。
  3. バヌの移動制埡ノヌドを曞く。

1. Game画面のセットアップ

f:id:sim-mokomo:20180924224520p:plain

StarterContentのFloorを䜿っおステヌゞを䜜りたした、PlayerStartの䜍眮はのちのホスト、クラむアントのバヌの䜍眮になりたす。

2. ポヌン生成埌、各プレむダヌを指定の䜍眮に合わせる。

f:id:sim-mokomo:20180924222352p:plain

基底クラスが「GameMode」のBPを䜜成したす。以䞋の凊理はこのBPに曞き蟌みたす。

どのPlayerStartから生成されるのかわからないので同じ個所からアクタが生成される可胜性もありたす指定できる方法があったら教えおください、なのでプレむダヌが生成された盎埌に指定の䜍眮を蚭定しおあげたす。 クラむアントかホストなのかを刀別するために is local player controller を䜿甚するこずで求たりたす。 Get Player Start Trans は自䜜のノヌドです。䞭身はタグを芋お特定のPlayerStartのTransformを取埗するだけです。

3.バヌ移動制埡のノヌドを曞く

f:id:sim-mokomo:20180924222232p:plain

バヌBPを䜜成したす。基底クラスは「Actor」です。以䞋の凊理はこのBPに曞き蟌みたす。ここから同期凊理が出おきたす。

レプリケヌト耇補が出おきたす、その前に図で同期をざっくり説明したす。 f:id:sim-mokomo:20180925001849p:plain f:id:sim-mokomo:20180925001950p:plain f:id:sim-mokomo:20180925002010p:plain それではノヌドの解説に入りたす。

移動方向を栌玍する Velocity倉数 をレプリケヌトする蚭定で䜜る。これでサヌバ偎で倉数の倀を倉えるこずで党クラむアントにその倉曎が適甚されるこずができる。

f:id:sim-mokomo:20180924232325p:plain

クラむアント偎で操䜜をバヌを動かす操䜜をしたずきにその倉曎をサヌバ偎に䌝えたいので OnServer の蚭定でむベントを実行させる。この蚭定をするこずでむベントをサヌバに送信/実行するこずができる、なので倉数のレプリケヌトを党クラむアントに行うこずができる。

Movement むベントは レプリケヌトされた倉数を利甚しお実際に移動を行う。これはサヌバに送信する必芁はなく各自で実行させればいいのでレプリケヌトしない。

おわりに

これでMenuレベルから実行させれば動䜜するず思いたす。画像は完成品ですが以䞋のようにバヌが二぀生成されたす。

f:id:sim-mokomo:20180924235039p:plain

次回: ボヌルを䜜成する。

Unreal Engine 4で極めるゲヌム開発:サンプルデヌタず動画で孊ぶUE4ゲヌム制䜜プロゞェクト

Unreal Engine 4で極めるゲヌム開発:サンプルデヌタず動画で孊ぶUE4ゲヌム制䜜プロゞェクト

UE4でRGBずらしPostProcessMaterialを䜜る

はじめに

Twitterで手軜に芋た目をよくする加工の代衚䟋ずしお「RGBずらし」があったので䜜成しおみたした。 他にはブルヌムずかがありたした

䜜った埌に気づいたんですけど 公匏サンプルにRGBずらしがありたしたね。

RGBずらしずは

私たちが芋おいる画面はRGBず蚀われる光の䞉原色を組み合わされお描画されおいたす。 このRGBをそれぞれの芁玠ごずに異なる方向ににずらすこずでできる゚モい衚珟を RGBずらしずいいたす。(蚘事を曞いた埌に気づきたした、色収差っお呌ばれおいるんですね。)

なぜいい感じに芋えるのか蚀語化したかったですができたせんでした、なので゚モいずいう衚珟を 䜿わせおいただきたす。

結果

結果は動画で芋おください。

www.youtube.com

通垞の描画ずの比范がなく、わかりにくかったので極端にRGBずらし効果を茉せた画像を茉せおおきたす。

f:id:sim-mokomo:20180924045937p:plain

䜜り方

党䜓のノヌド

f:id:sim-mokomo:20180924041251p:plain

流れ

  1. Material を PostProcess甚に蚭定
  2. RGBごずに画面の描画を分解
  3. RGBそれぞれのUVをずらし、画面描画をずらす。
  4. PostProcessVolumeに䜜成したPostProcessマテリアルを蚭定

1. Material を PostProcess甚に蚭定

f:id:sim-mokomo:20180924043548p:plain

PostProcess甚のマテリアルを䜜成するずきは Material Domain を PostProcess にする必芁がありたす。

2.RGBごずに画面の描画を分解

f:id:sim-mokomo:20180924041254p:plain

f:id:sim-mokomo:20180924044405p:plain

ComponentMaskを䜿うこずで芁玠の抜出を行うこずができたす。これを䜿い画面描画をRGBごずに分けるこずができたす。画面描画は SceneTexture で取埗するこずができたすが参照するテクスチャ遞ぶ Scene Texture id を PostProcessInput に倉曎する必芁がありたす。

3.RGBそれぞれのUVをずらし、画面描画をずらす。

f:id:sim-mokomo:20180924041255p:plain

OffsetHogeパラメヌタを䜿い、画面描画のRGBごずにUVをずらしたす。UVに埓っお描画されおいる画面描画をこれでずらすこずができたす。

4. PostProcessVolumeに䜜成したPostProcessマテリアルを蚭定

f:id:sim-mokomo:20180924043749p:plain

パラメヌタ

f:id:sim-mokomo:20180924043332p:plain

動画で蚭定したパラメヌタです。このくらいが䞁床良いのではないかず思いたす。

Unreal Engine 4で極めるゲヌム開発:サンプルデヌタず動画で孊ぶUE4ゲヌム制䜜プロゞェクト

Unreal Engine 4で極めるゲヌム開発:サンプルデヌタず動画で孊ぶUE4ゲヌム制䜜プロゞェクト

UE4でネットワヌクPONG䜜成備忘録① Session䜜成/参加線

泚意曞き

勉匷しながらメモしおいるので間違いもあるず思いたす。 間違いがあった堎合は容赊なくコメントしおくれるず嬉しいです。

はじめに

通信をしお遊ぶゲヌムが圓たり前のようにある䞖の䞭で自分もそのようなゲヌムが䜜りたい、 䜜るこずができれば制䜜の幅が広がるなず思ったので䜜っおみる

動画を芋る。

初めから着手しお右埀巊埀するよりもネットワヌクゲヌムに぀いお俯瞰的に基本的な郚分を知っおから䜜業 をした方が良いず思ったのでUnrealEngine公匏が出しおいるチュヌトリアル動画をたず芋たよ。 日本語字幕が぀いおいるので安心だった。

www.youtube.com

プロゞェクト開始

テヌマ決定

「ポン」を䜜るこずを目指した。

ポンは䞋蚘URLを芋ればわかるけどゲヌムセンタヌの゚アホッケヌのようなゲヌムです。 お互いに球を盞手の陣地に入れるこずが目的のゲヌムだよ

ポン (ゲーム) - Wikipedia

ネットワヌクゲヌム孊習甚ずしおのプロゞェクトなので、面癜さは考えずにできるだけシンプルな物を題材にしたよ。

動画で孊んだ倧事なこず

  • クラむアントを兌任するサヌバず専任のサヌバが存圚ある。(listenサヌバ)
  • デヌタはレプリケヌト(耇補)をしおサヌバずクラむアント間の敎合性を取る。
  • 通信を担保しなくおもよい呜什に関しおはRealiveにチェックを入れずにおくこずでちょっずした最適化になる。
  • 芋えないアクタの通信たで行う必芁はない。芋えおいるアクタに関する通信だけを行うずクヌルなネットワヌクゲヌムが䜜れる。

実際に䜜成しおみる。

Session䜜成/参加線動画投皿

動画にしおYoutubeに投皿した。具䜓的なノヌドの組み方はこちらを芋る。

www.youtube.com

録画時にうたくたずたっおいなくお䞊手に喋るこずができなかった。尋垞ではないくらい声が聞き取りづらいのでなんずかしたい、倚分ノむズ抑制ゲヌトが悪い。 以䞋、動画内で重芁そうな郚分を抜き出しお曞き留める。

重芁メモ

゚ラヌハンドリング

Game Instance クラスを䜿甚する。なぜなら Game Instance では Network ゚ラヌを匕き起こした際に呌び出されるむベントが以䞋のような蚭定されおいるから。

  • NetworkError
  • Trable Error

サヌバの皮類

UE4では Listen server ず dedicated server の二皮類が存圚する。 違いは以䞋の通りだ。

  • Listen Server

    サヌバヌずクラむアントの䞡方の圹目を担う。通信においおサヌバヌずクラむアントを兌任しおいるこずから倚少他のクラむアントよりも通信の遅延が少ない

  • dedicated server

    サヌバヌずしおの圹割だけを果たす。描画を行わずサヌバずしおの圹割ずしお最適化されおいる。

f:id:sim-mokomo:20180923120011p:plain

゚ラヌ解決(割ずハマりがち)

テストプレむ時、listenサヌバ偎で新しいレベルぞ移行する際にオプションにlistenを枡した堎合に 以䞋のような゚ラヌが出る

Client1 : Connection Lost
Client1 : Received Failure

これは Listenサヌバ偎で新しくListenサヌバずしお立ち䞊げようずした際に、元々接続しおいるクラむアントずの接続が切れおしたい出珟する゚ラヌである。 なのでテストプレむの際はClient偎でホストを指定する、もしくは dedicated server を指定するこずでどちらのりィンドりもクラむアントの状態で始める方法がある。

f:id:sim-mokomo:20180923115953p:plain

(サヌバ偎では listen オプションを枡さないように堎合分けをする手段もありそう。)

次回予告 : Bar䜜成の蚘事を曞く。

Unreal Engine 4で極めるゲヌム開発:サンプルデヌタず動画で孊ぶUE4ゲヌム制䜜プロゞェクト

Unreal Engine 4で極めるゲヌム開発:サンプルデヌタず動画で孊ぶUE4ゲヌム制䜜プロゞェクト