Top > Unite 2016 Tokyo

#contents

----
* 概要 [#yc52e720]
http://japan.unity3d.com/unite/unite2016/

* 資料 [#g611ed72]
- http://japan.unity3d.com/unite/unite2016/schedule
- Toggeter: http://togetter.com/li/959271
- "THE GIFT" (created using "MARZA Movie Pipeline for Unity") 本編
https://www.youtube.com/watch?v=FQhlnsbgrL0
- Unity GDC demo - Adam - Part I
https://www.youtube.com/watch?v=44M7JsKqwow

* Visual Studio 2015 & Graphics Design Tool [#p6728b30]
Visual studioで絵を描く

** Visual Studio [#c68bc724]
*** Image Editor [#qc871399]
新規作成→ファイル→グラフィクス→bmpとか

- dds保存して開くと、mipmapを生成して見ることが出来る。加工もできる。

*** Model Editor [#v7cda238]
モデルを編集して保存すれば、Unity側にリアルタイム反映できる。
法線がおかしいとかは直せないので、その点では確認ツール。


** Shader Designer [#t07921b9]
ノードベースでシェーダー作成

* Unityグラフィクス最新機能ガイド [#j65d3321]
** Multithreading Rendering [#f8e0bc08]
5.4で最適化した。
Double Wide Rendering対応。(VRの両目同時レンダリング)
Multithread Render Loop。
CPUで最適化している。

** テクニカルデモの右腕の布を破ったところ。 [#k4682d5e]
Alembic使った。マーズさんのThe GIFTのスライドにツールある

** Cinematic Image Effects [#g02d0078]
BitBucketへのリンクがスライドに入ってる
- SSR
- AO
- BLOOM
- DOF
- ToneMap
- Vignette
- AA


** Progressive Light Mapper [#sdde9685]
(LightmassのProbe計算)
Imagination Tec.と連携

シーンビューの見えている所から順次リアルタイムにベイクしていく。
ライトを動かすと、その時点からベイクが開始される。


** Roadmap [#c4ce8b34]
Cinematic Image Effectを一纏めにパッケージングしたい




* 実践!Oculus Rift - VR開発テクニック [#bc3357dc]

** Unityによる開発 [#w05b71c1]
SDK 1.3
*** 非同期タイムワープ対応 [#b616e2e7]
FPSが落ちても、HMDのトラッキングだけは維持する。
処理落ち発生しても、頭のトラッキングは滑らか
ロード中でも滑らかに。ただ万全ではない。
Unityだと特に何もしなくても反映される


*** PlatgototmSDK [#a3515621]
- フレンド
- リーダーボード
- アチーブメント
- マッチメイク
- アプリ内課金
- P2P通信
- エンタイトルメントチェック
→ アプリの使用権限チェック
申請に必須。

Platformの機能を使うにはAppIDの申請が必要


*** リモコン [#qf0b1971]
- 4方向のデジタルボタン
- 決定
- バック

*** アプリライフサイクル [#h8d1345c]
- アプリからホームやユニバーサルメニューを呼び出す仕組み
- Unityだと自動で処理される
- オンラインマルチプレイは注意。レンダリングは止めて、ロジックだけは回さないといけない。

** Oculus Store配信手順 [#jf532b16]
- アプリ申請→品質チェック→配信
-- チェック内容
--- SDKバージョン
--- クラッシュしないか
--- 推奨PCで動くか
--- 快適性
--- アプリライフサイクルへの対応
--- エンタイトルメントへの対応

開発者サイトのガイドラインを参考に


+ 開発者向けダッシュボード
-- 組織の登録。個人でも。
+ アプリ登録
+ ビルドをアップロード。PC版はzipで。
-- ビルドチャンネルを設定して、テストユーザーだけに配信とかもできる。
+ 情報の登録
-- デバイス、ジャンル、レーティング
+ アイコンの登録
+ 価格設定
-- 現在はUSドルのみ
+ ストア担当からOKが出れば、リリース時期どうするか等の連絡が来る

* ハードウェア性能を引き出して60fpsを実現するプログラミング・テクニック [#zbb0aec6]
- Unityで最大パフォーマンスを引き出す実装をPSVITAでデモした「AnotherThread」
https://github.com/unity3d-jp/AnotherThread

* Unity x PlayStation VR コンテンツを作ってリリースするまでのお話し [#ka706917]
** PSVR * Unity [#t2f79bd3]
*** UnityでPSVRを開発するまで [#bf6d2dcd]
+ SIEと契約
+ 開発機材を入手。開発機が少なくなってきているので、具体的な企画ある所に優先的になっている
+ Unityで作成
++ Project設定をPS4にしてビルドするだけでPS4で動かせる
++ DisplayBufferをVR用の設定
++ VR SupportをON
++ オーディオ3DをON(AudioOut3d, Virtual Speaker)
++ カメラ構成をチェック「Target Eye」が「Both」か
++ スクリプトでVRSettingsに対してPSVRの設定3つ。
でPSVRで再生できる。
+ 次、UIがぷるぷるする。
-- Reprojectionによる影響
Post Reprojectionにて解決。
--- UI以外を描画。Reprojectionする
--- UIのみを描画
上記2つを合成する。

*** Social Screen機能を使ってみよう [#d9dab50b]
- PSVRで見ている画面を、TVに移す機能
-- Separate Screen

- PSVR側とTV側で違う画面を表示する

- UnityでSeparateする
++ [Social Screen Support]をON
++ 別のカメラを用意。「Target Eye」を「None(Main Display)」に
++ VRSettings.showDeviceView = false;
++ これでSeparate Screenできる。 


** UnityコンテンツをPlaystation Storeで販売しよう [#kc95572c]
契約締結後、SDKと機材を入手してコンテンツ製作開始。
- 契約→エントリーは「日本に法人登録されている会社」のみ
- 法人登録していない人。
-- インディパブリッシャーを通してコンテンツの販売。
--- Playism、mebius、Flyhigh Works等
--- ツテがない人。いとぅあきなり氏に連絡取ると、インディーパブリッシャーさんと受け渡ししてもらえる。


*** 納品まで [#ib992a15]
+ Unityでゲームパッケージ作成
+ データ納品
+ QAチームによるチェック、デバッグ

- 酔いが起こりづらいコンテンツ製作の為に
-- 60FPS以上
-- リプロジェクションを入れる。
-- レイテンシーを低く 

- VRコンサルテーションサービスを提供する。日本でもアジアでも。
-- どうやって提供もらえるのかは、契約の後で。

** New お知らせ! [#g45881df]
- Cygames x SIE
VRコンテンツ Made With Unity
PSVRゲームコンテスト開催!
詳細は後日



* 『ファイナルファンタジーグランドマスターズ』開発の裏側、そのリアルタイム通信を支えるPhotonの実例 [#td886d7e]
** Photonの紹介 [#x52b4e68]
- サーバークライアント型
一度Photonサーバーに繋ぎに行ってから開始する。

- Photon Cloue
クラウド型サービス。
-- Realtime : 汎用的
-- TurnBased : ターン制ゲーム
-- Unity Networking : Unity向け
-- Chat
-- Voice
- Photon Server
ライセンス型サービス。ミドルウェアで提供。

- サーバーはRealtimeがベース基本。トラフィック量が少ないならTurnbasedに。
- 自社運用が必要、ロビーのカスタマイズ等が必要ならPhoton Server。

- UnityならPUNを無料でダウンロードできる。
- サーバーが必要になってもwebhookやpluginを使ってみるのも。

- Photon Enterpise Cloud
Photon Cloudの上位サービス。

** 採用の経緯 [#xf73c656]
- 低レイテンシ
- 扱うデータ量が多いので、大量のクライアントを裁ける


** ネットワーク構成 [#j803b007]

 [           web server &DB          ]   <->   [プラットフォーマー、外部サービス]
 ↑                               ↑
 ↓                               ↓
 [リアルタイム通信サーバー]   [Photon Server]



 Photon Name Server → Photon Master Server
                          ↓
                     Photon Game Server

** 実際の通信フロー [#gcf6d97c]
+ Name ServerからMasterサーバーの場所を教えてもらう
+ MasterサーバーでRoomにJoinしてGameServerへ

** 実装例 [#j65e5ce9]
- ポインティング移動方式
目標座標だけ通信。

- 敵シンボル
プレイヤーと同じ。サーバー側で移動計算する。

- バトルの判定
全てサーバー側で。
完全に同期していない。一定のタイミングで同期している。
稀に時が飛んだり、巻き戻ったりする。

- Pingの可視化。通信状況を表示する。画面に表示。
低 < 50ms < 中 < 100ms < 高

- サーバーのメインループ。
ルーム毎にループ作ってる。

** 最後に [#j173c441]
通信が切れたとかはPhotonに任せてる。


* VR分野でのUnity総括 [#n9b97edf]
- 疲労を考慮
Cardboardもバンドが無いのは定期的に休ませるため(?)
目も披露する。寄ったり離れたり


* ホンモノ志向のVR空間づくり [#v3ee741a]
** Room Scale VR [#sa95c5ad]
- 美の科学

- PART1
右目左目が重複する140度が人間の視界
- PART2
目が一つしかない場合も奥行きは分かる。学んで覚える。子供の頃は立体的に見えない。
その物体の知識(知っている物)があるので立体感を得られる。
交通標識を知っているので、写真の中でどれくらいの距離にあるかが理解できる。
片目でも分かるのは遠近法があるから。

- PART3
動き。
-- Teleportation。落としてみてください。
移動が1.5秒以内なら気持ち悪くならない。


- SHAPES&SPACE
フィボナッチ数列
黄金比
三分割法

- Perspective
-- ベルサイユ宮殿。水が入っているところは台形になっていて、目で見ると逆の遠近法でまっすぐになるように
-- パルテノン神殿。目で見て正しくなるように。実際は床は湾曲してるし、柱の間隔も一緒ではない。上部が先細り。端が傾いている。
-- 陰についての知識が人間にはあるので、それで立体的に見える。
建築物の柱に溝を掘って影を付けて立体感を出していたりする。。
-- 安藤忠雄の作品。(多分この人:https://ja.wikipedia.org/wiki/%E5%AE%89%E8%97%A4%E5%BF%A0%E9%9B%84
影をうまく使って立体的に。


** Unity VR: Light - Shadow [#k1f5aa33]
- Light Baking
- GI
- AO

** 1point advice [#la37469c]
VRを片目だけでチェックする。空間を認識できない場合は、再度考慮する。
片目だけでみえるとVRでよりよい。



* 映像制作のゲームチェンジャー:メイキング オブ ”THE GIFT” [#xfcc24b5]
** プロジェクトの課題 [#af50ed14]

** ワークフロー/パイプライン&ツールの紹介 [#r39dd0c4]

** シェーダー [#t1d27441]
*** Standard [#c16614b0]
UityStandardShaderの拡張
*** Fur [#n06548c2]
Shell構成。50パス。
FlowMapで毛の流れ
*** Skin [#hef50f1f]
ScreenSpace SubsurfaceScattering
*** Eye [#gf85605f]
パララックスマッピング

*** hair [#of4e010e]
Kajiya Shadeing model
*** Grass [#f3e2ff72]
TessellationGrassからの拡張
HeightMapとか
*** Mask Shader [#h7244218]
諸々のマスクを行う


** 大波エフェクト作成方法 [#l0fb7621]
*** Work Flow [#pa3e5587]
Houdini -> Maya -> houdini -> Unity -> Nuke

*** ColorBall [#vb502e0e]
32億ポリゴン
Pseudo-Instancing
+ Alembicのポイント情報をテクスチャに格納。
+ 頂点シェーダーでテクスチャ参照して配置。

- ポリゴンが角ばる
カメラに水平な面に球を投影、ポリゴンとの差分部分はDiscard

* Unityを使った個人ゲーム開発における「収益化」の現状と未来 [#l95b999c]
- Back in 1995で使用しているUnityを使ったPS1風描画について
http://ttwco.blogspot.jp/2016/04/back-in-1995unityps1.html?m=1


* Making of The Modern Zombie Taxi Co. [#v32e7a94]
** VRに存在する新しいゲーム [#l3a24534]
*** HUD。 [#b7353dd0]
- 低解像度なので、大きくテキストを表示しないといけない。
現実世界にあるものを利用した。
-- ポスター、TVなど。
プレイヤーから寄ってくる。
プレイヤーに注視させる。選択するまでTVが踊ってる。近寄ったら止まる。

*** メニュー画面 [#wf1215de]
細かい情報は使えない。
- Look At Button。Gazing。
ゲームオブジェクトを視線で選択する。
スクリプトで追加すると、LookAtoButtonのオブジェクトになるようにした。

-- ゲーム内でも使用している。
-- ボタン同士の距離は遠ざけた方が良い。
近いとプレイヤーが眼だけ動かしてしまうので。

** メッセージ [#k19c29bf]
テキストはオブジェクトに張り付けた方が良い。
そのオブジェクトがゲームとして意味があるように
ゲームスクリーンに直接貼り付けない方が良い。

** ゲーム内のUI [#a85efdca]
- ダッシュボード(車)に表示した。
-- 複雑すぎる。
-- 新規VRユーザーを混乱させる。
-- 情報が多いとノイズ情報となる。

- シンプルにした。
中心にあるダッシュボードテレビに重要な情報を纏めた。
重要でない情報は小さく。

文字/言葉の必要ないデザイン


** 目的地矢印 [#p88d238e]
看板で配置。
ゴール地点にバルーン。常に視野に入るように

** チュートリアル [#rb954199]
- 初めてVRを遊ぶ人。
自由に動けること、自由に見回せることを理解できていない。

- 一つ一つボタンをチュートリアルする
+ パッドのボタンを押させる
+ 右の方向を見させる

- シンプル過ぎる事はない
- プレーテストが重要

- 全てを教えない。
 -> 1度にすべてを覚えれない
-- バックやUターンを教えない
-- ゲーム的なメカニクスを教えない

- 特徴的なビジュアルを配置すると、記憶しやすい

- 同じ要素を使う。同じ情報を複数表示。


** QA [#f849936b]
- プレイテストどれくらいした?
ゲーム開発者の人で、見つかったら順次やってもらった。海外から来た人など。酔うまで。


    ホーム 一覧 単語検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS