テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

【Unity】新しいステルス系チュートリアル「John Lemon's Haunted Jaunt(ジョン・レモンのお化け屋敷)」

f:id:tsubaki_t1:20190413222752p:plain

ステルスゲーム系の新しいチュートリアル「John Lemon's Haunted Jaunt」が追加されました。

Unity Learnにて公開しています。

John Lemon's Haunted Jauntというゲーム

John Lemon's Haunted Jauntは、簡単に言えば脱出ゲームです。

ルールは非常に単純です。

  • ジョンはお化け屋敷にいる
  • お化け(動き回るタイプと、周辺を見るだけのタイプが居る)の視点を回避する
  • ゴールに到達するとゲームクリア
  • お化けに見つかるとゲームオーバー

Stealthであったような「アイテム回収」や「NavMeshで敵が追跡してくる」といったアクションはオミットされ、単純に巡回するお化けを回避するだけのゲームです。

f:id:tsubaki_t1:20190413223132j:plain

チュートリアル

チュートリアルは下のページから確認出来ます。英語なので、翻訳すると良いです。

learn.unity.com

f:id:tsubaki_t1:20190413223828j:plain

チュートリアルの内容は「セットアップ済みのプロジェクトをどうやって構築するか」といった内容で、オブジェクトの配置やセットアップといった項目、ステージ作成やゲーム構築といった諸々の部分が排除された、この手順通り作ったら動かせるといった内容でした。

Unityの操作方法を理解するといった点では分かりやすいかなという印象です。ただ、このチュートリアルを通しても自分のゲームは作れないかもしれません。

タイトル 内容
Setting up 3D Beginner Unityの概要です。UnityEditorのインターフェースについての説明が含まれます
The Player Character: Part 1 キャラクターの配置やアニメーションの設定、あとPrefabについてです
The Player Character: Part 2 キャラクターをスクリプトで動かす方法の紹介です
The Environment ステージのライティング設定とNavMeshの設定についてです
The Camera CinemachineとPostProcessingStackの説明です
Ending the Game ゲームクリア処理と、UIについての説明です
Enemies, Part 1: Static Observers 動かない敵(ガーゴイル)の作り方です。キャラクターの発見処理等とゲームオーバーが含まれます
Enemies, Part 2: Dynamic Observers 動き回る敵(ゴースト)の作り方です。NavmeshとWaypointによる移動についてです
Audio 音楽や歩行時の足音の再生方法、影響範囲等についての紹介です。
Build, Run, Distribute ゲームのビルド手順についての紹介です。

スクリーンショット

主人公のJohn君。意外と表情が豊かです。ToonShaderを使用しています。

John君はGeneric Avatarを使用している上にRootMotoinを使用した移動なので、モデルをサクッと差し替えられない点に注意です。

f:id:tsubaki_t1:20190413230619j:plain
主人公のJohn君。ビビリ

動き回るゴーストは、半透明のエッジのも表示シェーダーを使用しています。

f:id:tsubaki_t1:20190413230918j:plain
動き回るゴースト

ガーゴイル君、意外とモーションが可愛い。

f:id:tsubaki_t1:20190413230951j:plain
自宅警備員ガーゴイル

出口は明るく表示されています。

f:id:tsubaki_t1:20190413231046j:plain
出口

ステージはパーツごとに分割されており、並べ替えがやりやすくなっています。ただフロアは完全にメッシュを持ってきているので、フロアのレイアウトだけは変更出来ません。やるならProBuilderで作るとか色々する必要があります。

f:id:tsubaki_t1:20190413232111j:plain
ステージの並べ替え

f:id:tsubaki_t1:20190413232304j:plain
ステージのレイアウト

館の周辺はボリュームフォグっぽい表現で塗られています。ゲームからは見ることは出来ません。

f:id:tsubaki_t1:20190413232222j:plain
ボリュームフォグっぽい表現

【Unity】GDC 2019のセッション動画が公開

GDCで行われたUnityのセッション動画の幾つかが公開されました。

Keynote

Keynoteです。

www.youtube.com

2時間見るのが面倒くさいという場合は、下の記事が凄い分かりやすいです。

www.famitsu.com

またGDCの映像の裏で雑談放送もやってました。

www.youtube.com

セッション一覧

www.youtube.com

動画が間違ってる奴や、今後増えそうな感じなのでとりあえず一覧ページのみ

【Unity】Unityのリアルタイムレイトレーシング用ビルドが公開

f:id:tsubaki_t1:20190406230819p:plain

UnityでRTXを試せるビルドが公開されました。

デモ

下のデモでは、リアルタイムレイトレースと実際の車を交互に表示しています。殆ど見分けが付きません。

動かせるオブジェクトで間接光や反射といった表現が出来るのは面白いですね

www.youtube.com

カスタムエディター

現状、パッケージとしてではなくUnityエディターのカスタムビルド…しかもUnityエディターを丸ごとGithubに配置するという漢らしい雑さっぷりです。

https://github.com/Unity-Technologies/Unity-Experimental-DXRgithub.com

マニュアルはこちら

https://github.com/Unity-Technologies/Unity-Experimental-DXR/blob/master/documentation/The%20Experimental%20DXR%20project%20manual.pdfgithub.com

質問や議論はコチラ

Unity - Unity Experimental HDRP DXR - Unity Forum

試したかった

色々と試した結果、我が家のGeForce GTX 950Mでは無理だった事を思い出しました。( ˘ω˘)スヤァ…

当然ですが、RTXが可能なグラボが必要です。

そろそろ新しいのに買い替えたい所はありますが、以前にコレがあったので正直何処のメーカーの何を買えば良いのか分からんっていう。

tsubakit1.hateblo.jp

静音性が高くてコンパクト…は無理ですよねぇ

関連

以前のUniteでの講演は結構面白い

www.youtube.com

【Unity】Visual Effect Graph(VFX Graph)をLWRPで使用する

f:id:tsubaki_t1:20190403232154j:plain

Visual Effect GraphがLWRPに対応したので、その設定方法と、対応方法についてです。

Visual Effect Graph

Visual Effect Graphはノードベースのエフェクト生成ツールです。

パーティクルの後継機という扱いですが、機能が非常に柔軟で単純なエフェクト以外にもマップ的な表現など、様々な応用が効く感じです。動きについては、下の動画がテンション上がります。

www.youtube.com

www.youtube.com

Visual Effect GraphがLWRPに対応

Visual Effect Graphは以前はHDRPのみ対応でしたが、ver 5.8.0 より LWRPにも対応しました 。これでVRやモバイルなどHDRPではしんどい環境でも動作することが期待出来ます。

なお前提としてVisual Effect GraphはCompute Shaderを使用するので、Compute Shaderに対応していない環境では動作しません またAndroidの、特にOpenGLES3系だとComputeShaderが非常に不安定という話をよく聞きます(Vulkanだと割と動くという話も)。使用する場合、ターゲット端末上で動作するのかはちゃんと確認するのが良さそうです。*1

f:id:tsubaki_t1:20190403220649j:plain

ちなみにVisual Effect Graphは、各粒子(パーティクル)の生成タイミングや位置をCompute Shaderで、実際の描画は通常のShaderで行うシステムです。このシステムの面白い所はパーティクルの座標の動きを生成するCompute Shaderをノードから生成出来るという点にあります。

この「粒子の動き」は別のパイプラインでも同じ物が使えるため、描画の部分さえ差し替えてやれば他のパイプラインでも使える事が予想出来ます。つまりLWRPでVisual Effect Graphを使用するには 最終的な描画用シェーダーのテンプレートをLWRPの物に差し替えれば良いという訳です。

(描画部分はoutputノードと一致する感じです)

f:id:tsubaki_t1:20190403223736j:plain

f:id:tsubaki_t1:20190403230726j:plain

LWRP対応の手順

Visual Effect Graphは、描画機能を差し替えるのを割と簡単に実現出来るようになっています(現在は)。なので描画に使用するテンプレートを差し替えてやります。

LWRP用のテンプレートフォルダは、 Packages/visual effect graph/Shaders/RenderPipeline/LWRP にあります。

なので Project Settings > VFXRender Pipeline Settings Path を、 Packages/com.unity.visualeffectgraph/Shaders/RenderPipeline/LWRP に変更してやります。

f:id:tsubaki_t1:20190403231401j:plain

f:id:tsubaki_t1:20190403231424j:plain

あとはVisual Effect Graphのエディターを開き、Compleボタンを押します。

これでLWRP対応のシェーダーが生成されて、LWRPでもVisual Effect Graphが使用出来ます。

f:id:tsubaki_t1:20190403231602p:plain

f:id:tsubaki_t1:20190403234205g:plain
LWRP対応のセットアップ手順

おまけ:Legacy Render Pipelineの対応

LWRPとHDRPの違いは概ね「描画用のシェーダー」…なら、実は通常のれんだーパイプラインでも使えるんじゃね? という発想ですが、実は使えます。

Render Pipeline Settings Path を、 Packages/com.unity.visualeffectgraph/Shaders/RenderPipeline/Legacyとすれば、VFX-Graph ver 5.10現状では使用する事が出来ました。

f:id:tsubaki_t1:20190403231824j:plain

ただし、これは正式対応という訳ではなく「以前にレガシーパイプラインで作ってたから、公開した方が良いと思って公開した。メンテはしない」という立ち位置で、バージョンが上がると使えなくなる可能性がある項目でもあります。Mesh等に対応したい場合は、他のパイプラインのテンプレートを参考に、自分でテンプレートを記述する必要がありそうです。

https://t.co/JNgk1Q1s4P

とは言え、現状Scriptable Render Pipeline系に全面的に移行出来ないというケースもあるので、結構ありがたいと思う自分が居ます。

感想

GPUパーティクル楽しいですね。量を増やしてもCPUが増えない辺り。

関連

blogs.unity3d.com

*1:みんなiPhoneになぁ~れ☆