Skip to the content
soy-software

ソイソフトウェアではゲームやアプリを作ってます!

Unite2018に参加してきたので、聴講したセッションとかの感想を書いていきます。

↓基調講演についてはこちら。

Unite2018基調講演に行ったのによくわかんなかったから帰って録画を観た

2日目、最初のセッションは、

9:40〜10:30 『崩壊3rd』開発者が語るアニメ風レンダリングの極意

[フレーム]

↑スライド公開されてたんですが、いったん取り下げられたみたいです。

Unityの標準機能じゃなくて自前で色んなエフェクトを実装してて、モバイルゲームでここまで凝る必要があるのか...と驚きました。

最近はネイティブソシャゲもグラフィックスのクオリティが天井知らずに上がっていってて大変そうですね。

崩壊3rdは公式からすんごいクオリティ高い動画が上がってたりします。

[フレーム]

10:50〜11:20 トヨタのVR/HoloLens活用事例ご紹介

これは資料が公開されない講演ですね。
というわけで講演メモです↓

データ活用の武器は、車両の3DCADデータ。

1996年にV-Comm導入

初期は隙間の大きさを計る機能もなく、CADのなかで定規を作って計ってた

最近ではオーストラリアの店頭やCM、イベントで活用

Riftを被って自動車の内部構造を見れるデモ

Unityで作られたデモ。部品の組み立て工程をゲーム感覚で学べるもの。車両点検項目を確認できるものも

車両がなくてもトレーニングできる。トレーニング結果のデータもとれる

学生の就職支援に使えないかという話も

安全教育のデモ。車の誘導時に正面に立つと危ない(轢かれる

Photonを使って複数人で空間共有するデモ

色々デモを作ってVRの有効性を調べている

ユニティちゃんが音声認識、音声発話でアテンドしてくれるデモ。機械学習を使っている

HoloLensを使ったデモ。MRで実際の車にスケルトンでオーバーレイして中身が透けて見える

3GBだった車のCADデータをPiXYZのインポータで数百MBまでサイズを減らして表示できるようにできた

トヨタのマテリアルライブラリ。物理スキャナで素材のデータを測定してマテリアル作成

UnityとXRは、可能性を実現化する!

トヨタさんでは手元にせっかく自動車の3DCADデータがあるんだからそれを使ってXRで色々な取り組みを試しているそうです。

組み立ての作業工程をゲーム風に学べるVRコンテンツなんてかなり未来感有りますね。その場に組み立て部品とかが無くても学習できるのが便利らしいです。

11:20〜11:50 CADデータからVRコンテンツを作るには

[フレーム]

こちらの講演ではUnityにCADデータをインポートできるPiXYZ Studioの紹介がされました。

PiXYZ StudioはCADデータを読み込んでポリゴンリダクションとか色々設定してゲームエンジンで読み込める形式にコンバートできるソフトで、PiXYZ Reviewはゲームエンジンを使うまでも無くCADデータをいい感じにVRで見れるソフトウェアです。Photonを使って他の人達と空間共有する事もできます。

ライセンスは年間20万円ほどだそうです。

この講演で思ったのはtoBにおいては誰が何をやりたがっているのか知ることが大事だなという事です。

私なんかはCADデータなんてMayaかなんかで編集してobjとかにすればいいじゃんとか思いますが、自動車や建築の会社の人がじゃあデータをコンバートするためにイチからMaya勉強するとなると大変です。

VRやりたい企業の手元にはCADデータしか無いという事を察して、ウチのPiXYZ Studioがあればこれだけで簡単操作でVR(ゲームエンジン)にCADデータ持っていけますよ!という売り込み方をするという。
なるほどですね。

そういえばSYMMETRYもCADデータ(skpファイル)の直接読み込みに対応してますね。
ビジネスにおいてはみんなが何をやりたがっているのかのニーズをリサーチして、それを"簡単に"実現できるソリューションを用意するのが重要なんですね。

12:40〜13:30 チームラボ ×ばつ Unity 〜Unityで制作するデジタルアートの世界〜

スライドはまだ上がってません

チームラボさんの例の格子状に3次元に大量に配置したLEDのインタラクティブ4DビジョンなんかもUnityで制御されてるそうです。
LEDハードの制御なんてUnityとあんま関係ない気がしますが、結局ビジュアル的なコンテンツ制御が必要なので、ビジュアルで管理するようなソフトはUnityで作るのが手っ取り早いって事ですね。

Unityの有効性はゲームに限らずビジュアルが必要なソフト全般に広がっているという事ですね。

インタラクティブ4DビジョンではUni×ばつ高さの数のピクセルを描き込んでそのピクセルの色をLEDに割り当てるみたいな実装だったと思います。

スライドが無いのでうろ覚えですが。

あと今度お台場にチームラボ ボーダレスというチームラボさんのコンテンツが色々楽しめる巨大なミュージアムができるそうです。

13:50〜14:40 パーティクル・マニアクス

この講演はデモだけだから資料公開無しだそうですが、そうだっけ?
スライドあったと思うんですけど。
動画は後日公開予定だそうです。

じゃあとりあえず以下に講演メモ↓

Unity2018.3でレガシーパーティクルシステム廃止

リングバッファーモード パーティクルの使い回しができる。パーティクル最大数を超えたら一番古いやつが使い回される

シェイプモジュール メッシュのエッジを辿っていくパーティクルが作れる

Force Field Component パーティクルに外力を与えるコンポーネント

Texture Sheet Animation Module

Line Renderer Editor エディタ上でお絵描きみたいにパスを描ける。サブディバイドもできる。メッシュとしてベイクもできる

UI Particle UGUI上でパーティクルが使える。だからマスキングとかができる

カスタムカリング 見えてるパーティクルだけ表示

パーティクルシステムをジョブシステムに統合する作業中。フレームレート2倍になる

パーティクルも新機能がどんどん増えて便利そうですね。

パーティクルシステムがジョブシステム化して高速化する機能を開発中だそうですが、これは期待大です。

15:00〜15:50 その最適化、本当に最適ですか!? 〜正しい最適化を行うためのテクニック〜

[フレーム]

スライドありますが一応iOSのメモリの種類について↓

メモリの種類について

1.物理メモリ →物理的なメモリ

2.仮想メモリ →iOSではアプリには仮想メモリが割り当てられる。これはアプリのプライベートアドレス空間。ページという単位(4KBまたは16KB)で分割されてる

3.常駐メモリ →アプリは最初仮想メモリを予約します。実際にメモリを使う時に予約した仮想メモリを物理メモリに実際にマップします。常駐メモリとは任意の時点でのアプリが使用してる物理メモリの総量です。

4.クリーンメモリとダーティメモリ →クリーンメモリとは常駐メモリの中の読み込み専用のページです。OSによって削除されたりリロードされたりします。ダーティメモリは常駐メモリの中のクリーンメモリ以外の部分です。複数のアプリでクリーンメモリは共有されます(フレームワークなど)

5.VRAM →iOSはユニファイドメモリアーキテクチャを採用してるので、VRAMとメインメモリは共通です。VRAMの大部分は常駐メモリでダーティメモリです。

6.Malloc Heap →アプリがmallocとcalloc関数で確保する仮想メモリの領域。Unityが必要に応じて確保する全てもメモリはこれです。最大サイズは不明ですが物理メモリの2倍までらしいです。

7.スワップメモリ →iOSにはページファイルの仕組みが無いので仮想メモリをディスクに退避する事は出来ません。しかし、代わりに圧縮して物理メモリの別の領域に退避します。これをSCMと呼びます。どういうアルゴリズムになってるかは公開されてませんが、iOSはできるだけメモリを圧縮しようとします。

8.ネイティブ(Unity)メモリ →Unityは.NETの仮想マシンを持つC++でできたエンジンです。ネイティブメモリはUnityが確保するMalloc Heap領域(仮想メモリ上)です。全てのアセットデータはネイティブメモリです。

9.ネイティブプラグイン →ネイティブプラグインはMalloc Heap領域に確保されます。これらのコードバイナリはクリーンメモリです。

10.Monoヒープ →ネイティブメモリの中で.NET仮想マシンが必要とする部分です。全てのマネージドC#での確保メモリが含まれます。これはガベージコレクタで管理されてます。

Monoヒープはイメージと違ってネイティブメモリの特定の領域をガッツリ確保しているというわけではありません。実際にはネイティブメモリ内にブロック断片として散らばって確保されています。確保されているものの、もう使われないブロックが発生した場合、8回ガベージコレクションがかかる間に使われなかった領域は開放されてシステムに返却されます。

よく使われるツール

・Unity Profiler

・Memory Profiler

BitBucketにあるよ。

・MemoryProfiler Extension

GitHubにあるよ。

・XCode Debug View

何の値が表示されてるのかよくわからない

たぶんダーティメモリ+スワップメモリ

・VM Tracker

バーチャルメモリの中身が見れる。

使い方についてはWWDCの動画を見るのがオススメ

Allocations Instrument メモリアロケートのスタックトレースが見れる

さすがADVANCEDセッションだけあって、かなり深掘りされた内容ですね。
正直普段のiOSアプリ開発ではここまで考えなくても大体いい感じに動いてくれます。

ゲーム会社での大型ゲーム開発みたいなパフォーマンスをシビアに追求したい時に役立ちそうですね。

さらにiOSのメモリについての詳細な資料はこちらに上がってます。↓

Understanding Memory on iOS

16:30〜17:20 エディター拡張マニアクス2018

[フレーム]

最近のエディタ拡張の新機能についての話でした。

1.Scripted Importer →Unityで対応してない拡張子のファイルをインポートした時に加工して読み込めるようにする機能

2.UI Elements →Unityのエディタ拡張は今までOnGUIで書く奴と同じ形式で書く感じでしたが、新しいスタイルで書くことができる機能です。HTMLみたいなの(UXML)にCSSみたいなの(USS)でスタイルを指定して、JQueryみたいなの(UQuery)でDOM操作する感じ(Visual Tree)で書けるそうです。今のところはEditorWindowしか作れないそうですが、2018.3以降でインスペクターもこれで書けるようになるそうです。ユーザーがまともに使えるようになるのは2019以降だそうです。

3.Graph View →シェーダグラフみたいなノードベースのシステムがエディタ拡張で作れるようになる機能だそうですが、まだ開発中との事。

4.Shortcut System →いい感じにエディタ拡張でキーボードショートカットが実装できるようになるシステムだそうです。今のところはグローバルかEditorWindowのみ対応

5.Presets →インスペクタのプロパティの設定値をアセットとして保存できるようになった機能。これによりアセットのインポート設定はエディタ拡張で書く必要が無くなった。

6.パッケージマネージャ →npmみたいな感じでUnityのモジュールを管理できるシステム。例えばこのプロジェクトではこのバージョンのUIモジュールを使って欲しいみたいな事を指定できる。今後アセットストアに対応すると、プロジェクトに必要なアセットを自動的に取って来てくれるみたいな事もできるようになるとか?

7.Unity C# Reference →UnityのC#側のソースコードが参考用にオープンソースで公開された。

チラッと書かれてた、USDForUnityが地味に興味深かったです。こんなすごそうなものがあったんですね。

USDファイルはpixerが開発したいい感じの3Dファイルフォーマットです。FBXの置き換えにもなるとか。

詳しくはこちら↓

[フレーム]

UnityプロジェクトをGitHubに上げる時にアセットストアのアセットを含められない問題がありましたが、パッケージマネージャでいい感じになるといいですね。

すでにこういう方法もあるみたいです↓

【Unity】指定のアセットがプロジェクト内に存在しない場合、不足アセット一覧とパッケージへのリンクを表示してくれる効果が発動するアセットを作成した

17:40〜18:30 Unity for ディープ・ラーニング:ツールキット『ML-Agents』のご紹介

[フレーム]

なぜUnityを使って機械学習するのか

・視覚的に複雑

・物理的に複雑

・知覚的に複雑

機械学習に適してるこの3つの環境が揃ってるから

しかく機械学習ワークフローの3つのステップ

1、環境を作る

2、トレーニングさせる

3、組み込む

しかく3つの概念

エージェント 人形のようなもの

ブレイン エージェントに指示を出す

アカデミー 学習する

しかく2つのトレーニング方法

・報酬で学習 →成功した時に報酬を与えてトライ&エラーで学習。早回しで学習させられる。エージェントはタスクに最適化する。

・模倣で学習 →人がやってる操作を学習。やってみせないといけないからリアルタイムでしか学習できない。エージェントは教師と同じように動くようになる。

しかく色んな学習パターン

・12のエージェント、一つのブレイン、それぞれの報酬 →ボールをラケットから落とさないようにするのを12体のエージェントが同時にこなすデモ。12倍の速さで学習できる。

・2つのエージェント、一つのブレイン、協力の報酬 →2つのエージェントが卓球のラリーを続けるようにするデモ。

・4つのエージェント、複数のブレイン、競争の報酬 →2on2でサッカーをさせるデモ。まず一つ目のブレインに相手のゴールにボールを入れるとプラスの報酬がもらえるように学習させる。次に二つ目のブレインに自分のゴールにボールが入れられるとマイナスの報酬がもらえるように学習させる。この二つのブレインを一緒に動かすといい感じにサッカーしてくれる。

しかくカリキュラムラーニング

これはよくわかりませんでしたが、簡単な課題から少しずつ難易度を上げる事で難しい課題をこなせるようにする学習法みたいです。

詳細はこちら↓

Introducing ML-Agents v0.2: Curriculum Learning, new environments, and more

しかく模倣で学習

人間のプレイを学習させるトレーニング方法。
レースゲームのデモで数分間遊んでる内にみるみるAIが学習してちゃんとコースを走れるようになっていってて凄かったです。

Unite2日目はこれで終わりです。私はUnity Partyには参加してません。

続いて3日目です。

9:40〜10:30 AniCast!東雲めぐちゃんの魔法ができるまで

こちらの講演はスライドはまだ公開されてませんが、4Gamerさんの記事が上がってます。↓

[Unite 2018]バーチャルYouTuberに魂を込め,"東雲めぐ"という魔法をかける。「AniCast!東雲めぐちゃんの魔法ができるまで」聴... https://t.co/5onlmc4wAu pic.twitter.com/Xk1rBQwQqm

— 4Gamer (@4GamerNews) May 9, 2018

Anicastというシステムでいかにして東雲めぐちゃんに魂を吹き込んだかという内容です。

瞳を動かす時は目の周りのまつ毛とかも一緒に動かしてるそうです。人間もそうなってるから、その方が人間らしく感じられるとの事。

はーすごい...魂きた... pic.twitter.com/bLY7596LnY

— あい かちゃん@めぐるーまー💐🐻⭐︎ (@aicayamazaki) May 9, 2018

リップシンクはアニメの3コマ口パクを意識してそのように見える感じにアニメーションカーブを調整してるとの事。

めぐちゃんの動きもアニメ意識でわざと1秒12コマまでFPSを落として動かしていて、背景は30FPS、プレイヤーのFPS自体は当然フルFPSになってるそうです。

4Gamerさんでも指摘されていますが、瞳についてはリアルを意識していてるのに、他の部分はアニメを意識してるのが不思議ですね。
まあ実際色々試してそれが一番見栄えが良かったという事かもしれません。

感情の輪という概念が紹介されて、心理的に近い表情は混ざり合って表現できるとの事。恐らく表情切り替えはスライドパッドやアナログスティックに割り当てられていて、中間値をデジタルじゃなくてアナログで補完して切り替えられるみたいな事だと思われます。面白い機能です。

ポストプロセスの絵作りについてはPostProsessingStuckV2のカラーグレーディングとブルームを使ってるとの事。詳しくは去年の講演を参考にとの事↓

[フレーム]

プレゼンスが崩れないように腕が体にめり込んだり骨折してるように見えたりしないようにかなり気を使ったそうです。

具体的には肘の動きをガチガチに制御してるそうです。ガチガチって言っても不自然に見えないように緩やかに止めてる。

手からのIKなので肘が変な動きになりがちですが、そこも抑えてる。

やってみたけどダメだったネタ

・音の大きさとかで感情を変化させる →音量だけだと怒って大声なのか喜んで大声なのか区別できないので不適切な感情が出てしまうかもしれない

・スティックで目線制御 →操作が結構難しい。間違えて変なタイミングで変な方向に目線が動かすと思い切り違和感が出てしまう

機材の話

機材は一人での配信でも扱えるか、Riftと干渉しないかどうかで選定されたとの事。

・ヘッドセットマイクはSHURE-WH-20。このマイクはTouchの操作音が入らない指向性マイク。Riftの内臓マイクもいいんだけど若干物足りない。

・ウェブキャスティングミキサーは YAMAHA AG03。コンプレッサーで音量を揃えて、イコライザーで低周波をカットして聞きやすくする。女性配信者用のプリセットがあるからそれで一発設定。

リップシンクの話

リップシンクはOVRLipSyncを改造したAniLipSync。

OVRLipSyncは遅延が400msもあって、これはvTuberとしては致命的に遅い。

一応OBSの同期オフセットという機能を使えば音声を指定時間遅らせる事ができるので合わせる事は可能。

AniLipSyncは遅延を250msまで縮めてる。

AniLipSyncはGitHubでMITライセンスで公開してる。↓

https://github.com/XVI/AniLipSync

Qiitaの記事も参考にとの事↓

Unityでのマイク録音3種盛り:レイテンシ比較

めぐちゃんは自宅で配信しているため、エクシヴィ側ではめぐちゃんの状況が把握できない。

だからGoogle Cloud Platformでログを取ってるとの事。
取ってるログはフレームレートやPCのCPU使用率、AnicastのCPU使用率など。デバッグログもアプリ終了時にGoogle Driveにアップされる。
エラーログはSlackに投げられる。

最後に東雲めぐちゃんの生配信質疑応答があって会場が沸きました。

キズナアイちゃんやシロちゃんは収録だったので、まあしょうがないですがな〜んだ、って感じがあったので、その分盛り上がりましたね。

AniCast の講演、感動しました。めぐちゃんとの双方向性がこれまでになく高まっていて...めぐちゃん側から視聴者の情報量がこんなに多い状態(今回は実写ビデオ)でコミュニケーションが取れるの、素晴らしすぎるでしょ...涙を流して聞いてました。 #UniteTokyo2018

— ゆーとIPD62mm@VRファイルマネージャー (@yutoVR) May 9, 2018

vTuber事業やる人にはかなり参考になる講演で良かったです。

10:50〜11:40 スクリプトによるTimelineがっつり拡張入門

この講演はスライドにアニメGIFとかを一杯使ってたのでSlideShareにはスライド上がってません。

こちらからスライドとサンプルデモ一式がダウンロードできるそうです↓

http://prt.nu/0/timeline

実際のところTimeline拡張はどういう時に必要なのかというと、

1.インタラクティブな要素が必要な時 →ファントムナレッジの一場面をジョイスティックで操作できるようにしたデモ

2.インスペクタにないパラメータを操作したい時 →ポストエフェクト、クオリティセッティング、スカイボックスのマテリアル

3.毎回アニメーショントラックを設定するのがめんどくさい時 →カスタムトラックを作る

4.連番画像をストリーミング処理したい →連番画像を全部プロジェクトにインポートすると時間がかかるし、アプリの起動も遅くなる。

スライドの解説とサンプルデモを観ればTimeline拡張のとっかかりになりそうですね。

サンプルデモでAfterEffctsをコンバートしてTimelineに変換するのが凄そうでした。具体的にはAE側からはJavascriptでJSONを吐いて、UnityでそのJSONをパースする感じだそうです。

12:40〜13:30 60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計

[フレーム]

Unityを使ってスマホでガッツリ弾幕シューティングを作るという事で、ガチガチのチューニングが必要になったみたいですね。

Unityの衝突判定はメインスレッドと別スレでやってるから厳密には観てる画面とヒット判定が一致しないのが気持ち悪いから自前で衝突判定書くみたいなこだわりが興味深いですね。

パーティクルシステムも別スレで動いてるから使ってもメインスレッドは圧迫しないそうです。

13:50〜14:40 マジで!?Unityだったの!?次世代エンターテイメントの裏側

このセッションは撮影禁止で内容のウェブ公開も禁止されてるので、特に書く事は無いです。

一応↓に公開されてる情報から感想を言ってみます。

【7/31】『超歌舞伎』・中国ボカロ『洛天依』のARライブを生んだ技術プロデューサーのトークイベントに参加すべし!

ラテンセイルさんは超歌舞伎や中国の洛天依ARライブを手掛けてたんですね。知りませんでした。

vTuberのDDくんもラテンセイルさんだそうです。

15:00〜15:30 SDユニティちゃんを使った人形劇風CGアニメのメイキング

[フレーム]

今回のUniteでは各セッション前にユニティちゃんとボルカちゃんの寸劇が流されたんですが、その人形劇風アニメを制作されたボルカさんのセッションです。

ボルカさんではゲームエンジンを使って省力化、高速化した映像制作を目指してるとの事。
私としても昨今のUnityを使って映像を作る流れが気になってたので聴講しました。

まず脚本を書いた後にもう動画コンテをUnity上で作ってしまってあとはそれを作り込むという制作ワークフローが興味深いです。
普通のアニメだと間に合わなくて万策尽きてしまう事がまれによくありますが、最初に動画コンテを作ってそれをブラッシュアップし続けるだけならとにかく時間いっぱい作ってできたとこまでで提出すれば、クオリティはともかく作品を落としてしまう事は無いですよね。

とにかくUnityを使えばそれなりに綺麗なグラフィックがリアルタイムレンダリングで表示出来て、CGソフトみたいにレンダリング待ちしなくていいというのが便利です。
UnityにTimeline機能が入った事により、さらに映像制作がし易くなりました。
今月号のCGWORLDでもUnityが特集されています。

hall B5の書籍販売ブースで先行販売されている、Unity 2018特集の「CGWORLD」最新号。残り在庫わずかです。特別価格で販売中なのでぜひブースへ。当社の大前・高橋・石橋によるレア鼎談も収録しています! #unitetokyo2018 pic.twitter.com/nabN2Wikyo

— ユニティ・テクノロジーズ・ジャパン (@unity_japan) May 9, 2018

実際問題vTuberが実現したのもゲームエンジンでのリアルタイムレンダリング制作で毎日動画アップできるようになるくらいCG動画制作速度がブレイクスルーしたのが要因の一つだと思います。
ボルカさんではViveを使ってキャラを演じるシステムも今後やっていきたいとの事。まさにvTuber技術で映像制作をしようとしてる感じですよね。

ゲームエンジンのパワーで映像業界の常識を覆すイノベーションがたった今起きつつあると思います。

この界隈は要チェックですね。

とにかく映像を作りたい人
→迷わずゲームエンジンで作りましょう

まじ?!ポジキャンし過ぎに聴こえてやや不安になるw#unitetokyo2018 pic.twitter.com/f9gulbuJaV

— アズマゴロ―@ReRotation/カードゲームRPG (@azumagoro) May 9, 2018

16:30〜17:20 スクリプタブルレンダーパイプライン入門

[フレーム]

スクリプタブルレンダーパイプラインはUnityのレンダーパイプラインを自分でカスタマイズできるシステムです。
とは言え、今までのレンダーパイプラインシステムはいずれ廃止されて、この新しいスクリプタブルレンダーパイプラインに置き換えられるそうです。

ニュアンスとしてはもはや一つのレンダーパイプラインでハイエンドとモバイルのどっちもやるのに無理が出てきていて、LWRPというモバイル向けの軽量パイプラインとHDRPというハイエンド向けのリッチなパイプラインの2つに分かれるという感じみたいです。

私は「え、今までのシステム廃止でなんか新しいスクリプトで書く難しそうなシステム使わなきゃあかんの?」とビビりましたが、一般ユーザーは2つのパイプラインから使いたい方を使えばいいだけみたいです。
LWRPにHDRPのデカール機能だけ欲しい!みたいな人は必要に応じてスクリプトでLWRPをちょろっと改造したりもできるという感じ。

カスタムレンダーパイプラインの例としてkeijiroさんのRetro3DPipelineが紹介されてました↓

https://github.com/keijiro/Retro3DPipeline

17:40〜18:30 そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説

[フレーム]

Addressable Assetsという新しいアセットバンドルのシステムで、Resourcesのアセットを使うのと同じノリでアセットバンドルが使えるようになるみたいです。
これは便利そう!

スクリプト側ではアセットがStreaming Assetsにあるのか、サーバにあるのか意識せずに書ける。

参照カウント機能が付いてて、アセットのロード、アンロードをマネージャにお任せできるみたいです。

非常に便利そうで、非常に素晴らしい!!

Addressable Assets、ロードの抽象化に加えプロファイラとか速度制限のシミュレートとかグループ管理とか必要なもの一通り入ってて良さそう。 #UniteTokyo2018

— こりん@VR (@k0rin) May 9, 2018

18:50〜19:40 Unityにおける疎結合設計 〜UIへの適用事例から学ぶ、テクニックとメリット〜

[フレーム]

このセッションでは、要するにシーンを分割するとインスペクタの参照が切れるから困るよねというのが問題になってます。

そもそも何故シーンを分割したいかというと、複数人で寄ってたかってシーンを編集するとコンフリクトしてしまうから、UIを別シーンに分ければUIデザイナはUIの方のシーンを、レベルデザイナはレベルのシーンを同時に編集できるようになって便利だからです。

全部同じシーンだとUIデザイナがシーンを編集してる間はレベルデザイナは待ちになっちゃったりして時間の無駄です。

こういう誰かが作業している間別の人が待ちになっちゃう状態の事を、ワークフローの密結合と呼ぶそうです。

ワークフローの密結合の原因は、データが密結合になってる事です。つまり、シーンが全部くっ付いちゃってる状態の事です。

データが密結合になってるのは、コードが密結合になってるせいです。

とにかく全部疎結合にするのがいいとの事。

さて、切れちゃった参照をどうするかですが、セッションではメッセージ・バスを使おう!というアイデアが語られました。

残念ながらメッセージ・バスとやらの具体的なコードは語られませんでしたが、詳しく知りたい方はGDC2017のセッションがオススメとの事。

そのGDC2017のセッションはこちらですね↓
https://www.gdcvault.com/play/1024453/Data-Binding-Architectures-for-Rapid

メッセージ・バスパターンについてよくわからないのでググッたらでてきた記事など↓

https://github.com/franciscotufro/message-bus-pattern

Fixing Unity’s tendency to object coupling: The MessageBus

抽象化して依存性解決のためにシングルトンかますの、サービスロケーターパターンっていう結構危ないパターンだゾ #unitetokyo2018

— とり(torisoup) (@toRisouP) May 9, 2018

サービスロケーターパターンは抽象化しようとしてるのに、逆にシングルトンへの依存という余計にきつい密結合を生み出すゾ #unitetokyo2018

— とり(torisoup) (@toRisouP) May 9, 2018

シーン間のコンポーネント結合、たぶんZenjectでやるのが1番ラクじゃないかな(パフォーマンスはそれほどよろしくはないけど) #unitetokyo2018

— とり(torisoup) (@toRisouP) May 9, 2018

メインシーンとUIシーンを分割したらUIシーンのオブジェクトの参照が切れた問題、ぶっちゃけStartでFindObjectOfTypeとかすればいいような気がしますが、それだとダサいというのが問題になってます。

どうしてもFindせずに参照を解決したいなら、Zenjectを使う手もあります。

シーンを追加読み込みする時のデータバインドはScene Parentingを使う必要があります。こちらの記事を参照↓

Zenjectとマルチシーン

おわり

私は初めてUniteに参加しましたが、疲れました。

セッションが終わるたびに民族大移動みたいな大移動が発生して歩いて下の階に移動してしばらく立ちっぱなしみたいな感じで、移動が忙しすぎてセッションの合間に知り合いに話しかけたり展示デモを遊んだりする余裕も無かったですね。

なんか通信回線が混雑してるのか、会場でネットに繋がらなくなってた人がいっぱいいたみたいです。私はau回線のMVNOだったからか別に大丈夫でした。

それに人気のあるセッションばかり選んでしまっていたのかなんなのか、毎回立ち見or床座り見になってたり、椅子に座れても前の人の頭が邪魔でスライドがよく見えなかったりしました。

ちなみにRoom2の配信はtwitchで生配信されてました。アーカイブもあります。

[フレーム]unityjpのUnite Tokyo 2018 Day1 基調講演をwww.twitch.tvから視聴する

[フレーム]unityjpのUnite Tokyo 2018 Day2をwww.twitch.tvから視聴する

[フレーム]unityjpのUnite Tokyo 2018 Day3をwww.twitch.tvから視聴する

ぶっちゃけ家でtwitch視聴組が勝ち組なんじゃないか説も浮上しないでも無かったですね。
しかしライブ動画を丸一日視聴するのも集中力続かないので、やっぱり現地行けばぶっ続けでセッション見ざるを得ないのでこれはこれで価値があると思います。

東雲めぐちゃんが生で登場する所なんかはライブ感ありましたね。

国際フォーラムってお昼ごはんどうすりゃええねん?と最初悩みましたが、友楽町駅の南側に行くとカレーショップC&Cとか吉野家とかあるので大丈夫です。
万世拉麺のパーコー麺もオススメ。

聴講したセッション全体を観返して思うのは、やれvTuberだ、CG映像作品だ、VRでCADデータを見るだ、それからARライブとかデジタルアートだのと、みんな全然Unityをゲーム作るのに使ってねえじゃん!

たまげましたね...

今となってはUnityはゲームだけにとどまらず、ビジュアルが要求されるソフトウェア全てに必要とされてるんだなと実感しました。

今度はWeb広告までUnityで作る時代だそうですよ。

今までもたまたまUnityやってたおかげで食いっぱぐれなかった感がありますが、これからもどんどんUnity使える人のニーズが高まってUnityやってれば全然食いっぱぐれない感じしますね。

でも今では猫も杓子もUnityだから、普通にUnity使えるだけじゃあんまり目立てないかもしれないですね。
サーバと組み合わせるとか、Iotと組み合わせるとか、なにか一芸を加えるとスキルの掛け算でより貴重な人材になれるかもしれないですね。

Unityもいつか時代遅れになって別のゲームエンジンに取って代わられちゃうのかな...?なんて思ってた頃もありましたが、今でもドシドシ革新的な機能が実装されて、モダンであり続けてる感じしますね。

私はUnity3の頃から触ってますが、当時と比較すると涙が出るほど便利になりましたし、しかも値段までタダで全機能使えるようになっちゃったという、本当に泣けるほどありがたい存在になりました。

Unityに感謝。

展示コンテンツも面白かった

IVRがUniteTokyo2018に出展。ILLUSIONエイプリルフール2018のネタ「ブイカツ!」が実現!さらにハプティクススーツで実際につんつんされてしまう「つんつんVR」や「Summer V | VR18 https://t.co/fAafnmWxuE #アダルトVR

— VR18/アダルトVR情報 (@VR18jp) May 8, 2018

VR空間の中のキャラにつんつんされてきた。触感ベスト。#unitetokyo2018 #IVR pic.twitter.com/w412GqdqjK

— せきぐちあいみ@VR (@sekiguchiaimi) May 8, 2018

他の人達のUnite2018レポート

【Unity】Unite2018Tokyoへ行ってきました。1

[フレーム]

UniteTokyo20182日目参加してきて楽しかった&刺激を受けたというメモを漫画形式にしてみました。
Synamonさんのブースでちょろっとお手伝いさせて頂いてますがほんとすごいの...
明日も朝から行くつもりです!学ぶぞ〜!そしてその足でメイドプログラミングへ向かいます!Unity漬け!#unitetokyo2018 pic.twitter.com/WphXffXgaU

— ふわり (@Fuwari_mimf) May 8, 2018

Unite2018に行ってきた! | https://t.co/lDtymu1OXy @CST_negiさんから
書きました!主にUnite2018で見てきた各講演の感想とかダイジェストを書いてます。

— Negipoyoc (@CST_negi) May 11, 2018

Comments are closed.

Text widget

These widgets are displayed because you haven't added any widgets of your own yet. You can do so at Appearance> Widgets in the WordPress settings.

アーカイブ

© 2025 soy-software — Powered by WordPress

Theme by Anders NorenUp ↑

AltStyle によって変換されたページ (->オリジナル) /