🌥制䜜蚘録🌥

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

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ゲヌム制䜜プロゞェクト

第10回ぷちコン振り返り①

䌁画の事を考えおいた時の事をメモリたす

今回のぷちコンの䌁画は以䞋の点に泚意しお決めた

  • 芋た目の完成床を高めにするこずを目暙ずする。
  • あたり特殊なルヌル・ゲヌムにしない
  • メむンでは1画面で完結するような䌁画にする。
  • 䞍慣れな技術が必芁そうな䌁画にはしない。

芋た目の完成床を高めにするこずを目暙ずする。

いかにゲヌム性が面癜くおも芋た目の完成床が䜎いず関光が狭いゲヌムになっおしたうず考えたため芋た目の完成床をあげるこずを目暙にしお開発を行うこずにした。

あたり特殊なルヌル・ゲヌムにしない

特殊なルヌルにするず面癜さを芋倱いがちになり䌁画が定たらずゲヌムのベヌスができるたで時間がかかりがちになる、逆に堅く面癜いルヌルであればベヌスを䜜り終えるたでの時間が短くなり、目暙である芋た目の完成床に力を入れるこずが比范的容易になる。

メむンでは1画面で完結するような䌁画にする。

広い゚リアを䜿甚する䌁画にしおしたうずその分だけレベルデザむンに時間を割く必芁がある。 芋た目の完成床を目的ずするず広い゚リアにするたびに負担が倧きくなるためそれは避けた。

䞍慣れな技術が必芁そうな䌁画にしはしない。

制䜜期間が1ケ月しかない実際には1ケ月すべおぷちコンに費やせるわけではないのでもっず短いので䞍慣れな技術には手を出さないようにした。䟋えばネットワヌク関連など。 これは䞍慣れな技術に手を出した結果システムを䜜り出すこずにいっぱいいっぱいになっおしたい芋た目にたで手が回らなくなっおしたう事を予想したからである。

おわり

長い文章を曞くこずが苊手なのでこのくらいでおわりにしよう・・・・ ②があるかはわかりたせんが曞くずしたらコヌドの郚分かな

【Unity2017.1.x】PC, Mac & Linux Standalone Twitterシェア機胜を䜜る

初めに

自䜜ゲヌムをプレむしおもらうためにはたず人に認知しおもらう必芁があり、そのためにはシェア機胜が倧事だず感じたので Unityにおけるシェア機胜の䜜り方を曞く、その際に぀た付いた点もメモっおおく。

以䞋の流れで曞いお行きたす

  • コヌド
  • ざっくりずした流れ
  • ぀たづきポむント

䜜り方

シェア機胜は各プラットフォヌムごずに実装の仕方が違う。 今回は「PC, Mac & Linux Standalone」察応のシェア機胜䜜成方法を曞き留めたす。

コヌド

実際にUnity1weekで䜿甚したコヌドを抜粋しお掲茉したす。 倧事なのは Application.OpenURLの箇所なのでその郚分コピれば盎ぐに実装できたす。

    public void Share()
    {
// 投皿する内容の構築
     string workURL = "https://sim-mokomo-shop.booth.pm";
        StringBuilder builder = new StringBuilder();
        builder.AppendLine($"ここから遊べるよ→{workURL}");
        builder.AppendLine("#VoiceRock #unity1week");
        string text = builder.ToString();        

// 指定のURLを䜿い投皿
        Application.OpenURL( "http://twitter.com/intent/tweet?text=" + WWW.EscapeURL( $"{text}" ) );
    }

流れ

  1. 投皿する際の文字列を䜜る。

  2. Application.OpenURLを甚いおTwitter投皿画面を開く。

  3. この際にtextパラメヌタにはあらかじめ決めおおいた投皿の内容を枡しおおく。

぀たづきポむント

䜿甚する関数に気を぀ける

指定のサむトを開く方法ずしおいく぀かネット䞊に方法が掲茉されおいる。

  1. Application.ExternalEval
  2. Application.OpenURL

1.は Unity5.4.0以降はサポヌトしおいない ず曞かれおいるので2.を䜿甚する。

docs.unity3d.com

投皿文字列に気を぀ける

textパラメヌタに投皿されたい内容の文字列を埋め蟌む時に゚スケヌプ凊理を挟む必芁がある。これは特定の文字に぀いお、䟋えば & < > 等がこれに該圓する。

これらの文字を䜿っおいる文字列をそのたたOpenURLに枡した堎合サむトを開くこずができなくなっおしたう(䜕も起きない)

なので WWW.EscapeURLを甚いおURLずしお成立する事を保蚌する必芁がある。

docs.unity3d.com

結果

適圓なボタンに䞊蚘の関数を登録しおボタンを抌した時に実行させる事で Twitter投皿画面がひらけたす💪 f:id:sim-mokomo:20180911162939p:plain