GDC2016報告会に参加しました
Uniteトレーニングデイの前日に GDC2016報告会(4/2) – 国際ゲーム開発者協会日本 に参加してきましたので雑メモ。GDCの報告会は初参加でした。
VRの基本的な考え方とインディ開発におけるソーシャルゲームの思想など、学ぶこと多かった。
▼資料は順次公開されています
GDC2016スライド公開が始まりました – 国際ゲーム開発者協会日本
- GDC2016概要&IGDAアップデート
- 自動化ーニバルだよ!GDC16にみる自動化技術とテストのトレンド
- 人工知能の行方 -ゲームエンジンとVRの間で-
- 生産性と繁栄を
- 世界を変えるかもしれない!?インディ開発者が挑戦するゲームを通した社会変革
- GDCラウンドテーブル2016
- 被って試した。VRシステムビッグ3体感比較+α
- VR… そこは最後のフロンティア
GDC2016概要&IGDAアップデート
GDC2016概要
- 参加者: 2万7000人 (過去最大)
- 規模感
- Vulkanの発表
- DirectX12のようなグラフィック向けAPI
- http://www.4gamer.net/games/293/G029343/20160217055/
- 展示エリアの拡大
- AWARDにみるナラティブゲーム旋風
- THE WITCHER 3 / LIFE IS STRANGE / HER STORY
- 参加者によるオーディエンスアワード (web上で投票)
- MOPPIN登壇
- downwell
- GDCAノミネート
- 勢いのある若手の登場
自動化ーニバルだよ!GDC16にみる自動化技術とテストのトレンド
Docker
- RiotGamesのLoL開発環境にDockerを導入した話
- PBEサーバでバランス変更、新キャラクタの先行テスト = > FB => リリース
- ユーザには価値をないとしてイテレーション速度を上げたい
- デリバリー速度を阻害するもの
- 自動化環境の構築コスト: 2スプリントくらい待って
- 各種ネットワークやハードウェアの申請、設定コス
- Dockerの旨味
- 複数の開発者の環境で差が発生しない
- 低オーバヘッドの環境を短時間構築
- テスト環境をワンボタンで構築、用が済んだら直ぐに廃棄
- (一般的に言われる Docker の問題)
- コンテナ数爆発
- コンテナ管理、複数コンテナの連携、ホストとネットワーク環境構築、死活監視
- まとめ
Rocking On: Harmonix, QA and 'RockBand4'
Effective Testgin of F2P Games
- KONGREGATEのF2Pゲームに置ける効果的なテスト手法
- プレイテストに関するメリット、デメリット、シチュエーションに寄る使い分け、メトリクスに基づくテスト計画等
- Geo-Locked Mobile Test Markets!
- 特定の地域で先行テストしてからワールドワイド展開
- テスト計画
- テスト計画を全て直列に実施出来たら理想
- タイトルの規模予算特徴に合わせて、省いたり平行したりする
- 過去のメトリクス分析結果
- 段階に分けて継続率とフォーカスポイントを設定
- Stability: CrashRate < 5%
- FTUE, PVE, PVP D14 (14日後のユーザ継続率) > 10%
- 達成したら次の段階に行こう
- 各ゴール設定に関して予算も概算する
- なんかゲーフィミケーションを感じる
- 段階に分けて継続率とフォーカスポイントを設定
テスト関連セッションのまとめ
- テスト計画を練る際には全体の予算/スケジュール/リリース地域を視野に入れる
- QAが開発の初期段階からジョインするケースが良い
人工知能の行方 -ゲームエンジンとVRの間で-
THE DIVISION
- オンラインAI: 周囲検出システムとコンバットシステム
- 隠れるポイントがあらかじめあって、それを評価する
- オブジェクトに埋め込んである形の自動生成
- 隠れるポイントに高さ、深さ、コーナーか、などの属性で重み付け
- 地形解析
- NPCは最後に見たプレイヤーの位置を覚えているくらい
- 周囲の状況から脅威を計算する
- AIをレベルか成業するスクリプト
- VisualScripting
- ノードグラフを核
- デザイナーがエンジニアの助け無しでAI設計
- そのポイント平家、ポジションを狙え
- VisualScripting
- BehaibiorTreeで命令順序管理
- サンドボックスステージで試す
- BehaibiorTreeノードの巻き戻しも可能
- アイトラッキングサポート
- tobii eyeX
- ターゲットを視線選択
- 見ている領域の拡大等
- 見ているターゲットを自動抽出
Dragon Age
- Frostbite Engine / NavPower
- ビジュアルノード: 評価式とビジュアルエディタ
- デザイナーだけでチューニング
- 戦闘開始の条件は厳しい制限
- プレイヤーに主導権
- フィルタリング
- 特技毎の評価式
- ノードの中でどれを使うかを決定する
- 反射 > サポート > 攻撃 > 基本 > 受動みたいな順序
- レベルからの制御
- 演出等
FallOut4
- http://www.slideshare.net/JoelBurgess/gdc-2016-modular-level-design-of-fallout-4
- まず部品を作って、出来た後に組み合わせてレベルを作る
- 巨大なオープンワールドはこういうやり方じゃないと作りにくい
VR
HALO5
- エンジンの中にデータ収集領域
- 死亡箇所等のヒートマップ
- 絶対やられるみたいな場所はあっては行けない
- 負荷等のプロファイリング結果も収集
- モニタリングしながら開発出来る環境を構築
音楽自動生成
- EVE ONLINE音楽生成
- 10年間同じ音楽を聴かせたくない
- アルゴリズムを使って楽譜を変形したい
- Calmus = サーバにメロディを上げると作曲してくれる
- 2000年の現代音楽賞
- キャラ毎に個性を変えたい
- 音楽ステートマシン
- 階層型音楽ステートマシン
まとめ
- ゲームAIの成熟化、大型ゲームへの対応
- スケールが大きいと問題が出てきやすいがそれに対するアプローチが進んでる
- VR空間に置けるAI / アニメーションは亜技術理論を再構築する必要がある
- 過剰な演出やキャラクターに存在感があるので認知を最適議する
- ゲームエンジンは最終ブラッシュアップ
- データ解析分野はまだ余地あり
生産性と繁栄を
生産性について
- 生産年齢人口が減って来ている
- 人口が減る以上、ものが作れる量が減ってくる
- 1人辺りの生産性を上げていかなきゃ
- 日本の労働生産性は低い
- 改善の余地があり?
生産性の改善
- 生産性の高い人材に教育する
- 生産性の高いチームを作る
- 生産性のアシスト
生産性の高いチームを作る
- 各セッションから関係ありそうなエッセンスの抜き出し
- The Game Outcomes Project
- ゲーム開発の成果についてまとめた
- 成果を見るにあたっての相関
- 関連要素の統計解析
- 生産性と残業をグラフ化
- https://www.youtube.com/watch?v=MckqTuVJNaw
- 週60時間業務するグループ / 40時間業務するグループ
- 繰り返して行くと、40時間やってる人は安定している
- 4週間後に生産性が落ちる
- プロジェクトのメンバー数
- コーヒーを飲む/飲まない
- 生産性には関係ない
- 結構海外の大手企業から集計している
- Google: プロジェクトアリストテレス
- 会社でも本来の自分でいられる職場を目指して
- 多くの人に取って会社にいる時間の方が長い
- 健全なチーム維持が最終的には生産性が高いチームに繋がる
生産性のアシスト(ツール)
- より効率的な人 = 少人数を必要とする
- より効率的な人 = より多くのものを作り出す
- より効率的な人
- 仕事を分解する
- 自分しか出来ない仕事/自分以外でもできる仕事
- 適材適所へ仕事配分 (最小人数) / およびツールへの置き換え
- コンテンツの自動生成
- コンピュータに置き換えられる仕事はコンピュータに置き換えよう
- 音楽の自動生成
- 文章作成
- CityEngine
- AIアシストはTOOLの未来である
- 効率的な開発は更に履歴を産む
- TensorFlow: マシンラーニング
- AlphaGo
- ルーチンワーク
- ルーチンワークをしている人は仕事が減ってくる(自動車産業)
世界を変えるかもしれない!?インディ開発者が挑戦するゲームを通した社会変革
の一歩
Game Education Summit
- ゲームを勉強に活用する
- この分野に置いて日本は凄い遅れている
- 学校にゲームデザイナーさんが常駐していてゲーム会社と連携して作っているのがアメリカでも基本的
your games will change the world! it's your choice how.
- 一番感動したセッション
- Michael Block / Culture Shock Games
- WE ARE CHICAGO
- このゲームは一般的なゲームではない
- 南シカゴに住む10代の生活を1週間体験するゲーム
- ギャング/暴力/人種差別/高い失業率/低品質な教育/高い犯罪 ...
- ナラティブドリブンなアドベンチャーゲーム
- インタビューに寄って集めた実際の体験に基づいているのが異色
- 非営利団体を支援している
- 現実について人々に知ってもらい教育することが目的
- ソーシャルチェンジ
- このゲームを通して現実世界の社会に変化をもたらすことが目的
ソーシャルゲームをもたらすには?
良い表現(感想)をたくさん集める
- PAX PRIM等で20min程度のデモを体験してもらう
- ゲームを遊んでもらった後に感想を聞く
- WATCH DOGやGTAについてはどう思う?
経緯を持つ表現や奨励について議論
- 人種/経済的機会/暴力表現を持つゲームに付いて議論
- 同じことが現実でも発生していないか考える
ゲームを遊んだ人の感想
- 人種差別的なジョークやコメントが多かった
- なんで貴方は黒人のゲームを作ったのですか?
- 黒人が中心のゲームを作るだけでもそういうコメントがあるのがとても残念だと思った
違いを知り、共有すること
- ゲームを遊んだ後にフィードバックを得るが大事
- ゲームを通して体験したお互いの違いをすること
- 感じたことをお互いに共有すること
国際機関からゲームの影響について
- ビデオゲームは正負の両方の効果を持つ、優れた教師
- 暴力的な内容はより影響する様に人々を誘導する
- 内社会的な内容は対称的に協力的で親切な方へ影響する様に人々を導くこと可能
ゲーム開発者として何を意味するのか
- 差別的なテーマに挑戦することは重要
- 同時にプレイヤーが何を感じたか、心に残る部分が大事
- ゲームを通して様々人を巻き込んでこういうテーマに挑戦する
- 独自のバイアスや先入観をぶっこわすには異なる背景や人生経験、世界を見て他人との違いを共有し合うこと
- ゲームはインタラクティブなものだけではない
- 子供達は強かったりリワードを貰ったり、現実世界には無い不公平な環境でばかりゲームを遊んでいる
- インディーズならではで出来るゲームを俺たちで作ろうよ
GDCラウンドテーブル2016
- 小林太郎/ポリゴンマジック(PMG)
ラウンドテーブルとは
- 机を囲んで話すテーマを決めてディスカッション
- 1時間を3日間実施
- 現場のトップレベルのディスカッション
- ジューシーな情報やトラブルシューター的な話
- 学生さんや転職活動をしている人もオススメ
Visual Effects RoundTable
40人〜
- 50% VFXArtists / 30% VFXProgrammerts
- 30% VR興味あり
- 30% Unity / 30% UnrealEngine
- VR開発者が多数!!
使えるリソース
- keijiro takahashi (Unity)
- UnityのBitbucket上にあがってるやつ
VFX Bootcamp が2017年に開催
- テクニカルサイド / アーティストサイド
- 日本のゲームエフェクトWORKSメイキング見たい!
Art Director & Leadership
- 去年とあまり無いよう変わらなかった
- http://www.slideshare.net/tarokobayashit/gdc-2015-vfx-technical-artist-art-director-leadership-at-gdc-2015
Riot Game式 RoundTable
- Production Roundtable Seris by Riot Games
- 少人数性+進行に寄るプチラウンドテーブル
- 自己紹介
- マインドマップを作成
- ベストな回答を各グループで発表し密度の高い回答を得る
- どういう振る舞いやプロセス/行動でチームは良くなるか
被って試した。VRシステムビッグ3体感比較+α
3大VR雑感
- PSVR
- 表示パネルが一番出来がいい
- 装着時の容易さ、快適さも
- メガネ併用時にはキツい
- 一番話題になった
- vive
- Rift
- トータルバランスが良い
- セッションではRiftの話が多かった
- 長く使われて来た実績が大きい
VR酔いを防ぐ新たなテクニック
- Eagle Flight
- 鷲になってパリ上空を飛び回るVRゲーム
- 実際にやってみると酔わない!
- ベクションマスク(勝手に命名)
- 画面の視野をわざと狭めているぞ
- VR酔いの原因になるのはベクション
- 視覚誘導性自己移動感覚
- 映像の動きに寄って引き起こされる
- 特に動きの速い近景
- ベクションを起こしやすい部分を見せなきゃいい
- 近接マスク
- 動きが激しい近接する建物に対してマスクを掛ける
- やってると気付かない
- 旋回マスク
- 新しい風景の入り口を防ぐ
- 原理的には「操縦席ゲーが酔いにくい」というのが近い
- 迫力はちょっとだけ落ちるかも
- マスクしないモードも欲しいかも
VRコントローラー
Manus
- グローブ型ハンドプレゼンスでバイス
- 各指の動きを検出、制度はそこそこよい
- vive の contorller で腕の動きを現在使用 (腕輪を開発中)
- 薄手、装着感よい
- ゲームコントローラーと併用出来そう
- VR内でピアノ弾くみたいなことが出来る
STEM System
UnlimitedHand
- 腕輪型筋電デバイス
- 指の動きをLEDセンサーで検出
- 電気を流すことでハプティクスを与える
- 筋肉が無理矢理動かされる感じ、ピリッとなる
- 精度が上がれば応用できそう
VR… そこは最後のフロンティア
I EXPECT YOU TO DIE
プレゼンス
- VRの存在感はとても壊れやすい
- ゲームプレイより注意するべき
プレゼンスブレイカー
- VR酔い
- 60FPS
- 水平の維持
- 加速/減速注意
- 操作方法の混乱
- ちょろい反応
- オブジェクトの反応が適当だと興ざめする
- ナイフもドライバーの代わりになる、現実でやれることやれないと覚める
- やりすぎな演出は避ける
- 非現実的なサウンド
- 固有重要感覚との断絶
- リアルな姿勢とVRの姿勢が違いすぎると混乱する
- 直感的でない操作と反応
- ハンドプレゼンスデバイスで回避する
- VR酔い
開発事例の紹介
- Whitebox
- ポリゴンの箱を置いて操作性等を検証
- ステージ面白くない/難しい
- Brownboxing
- 現実世界に段ボールで作ってみる!
- 半分ネタ/半分本気
- Whitebox
Game Design at the Frontier
- FANTASTIC CONTRAPTION
- vive向けコンテンツ
- VR向けの良いゲームデザインとは?
- VRがあなたをゲームの中に立たせます
- 基本的なゲームデザインはまだ通用する
- VRで少しだけどう違うかを考えなければいけない
- 今までのゲームセオリーも通用する
- プレイヤーの振る舞いと協調して決まる (が予測不能)
- VR酔い
- 不快感はゲームデザインの問題
- VRの問題ではない
- デザインプロセス
- 場所作る => 体験定義 => 一貫性 => 説明 => 観察 => 成長を許す
- 基本的なゲームでも一緒
- 原則: プレイヤーにNoを言わない
- 観察して学ぶ
- テストプレイ
- すぐにテストプレイを始めよう
- プレイヤーの観察は早い段階から必要
- プレイヤーがあなたのVR空間をどう解釈するかが大事
- 口出したくなるけど我慢して!
- 規模
- ルームスケール
- スタンディングスケール
- シーティングスケール
- 障害物は考慮しましょう
- 視角範囲より行動範囲が狭いと問題が起こる
- メニューはオブジェクトに混ぜちゃえ
- 体に触るショートカット
- 成長の余地を許す
- 遊ぶ中で気付いて欲しい
- プレイヤーはデベロッパーのことを信頼している
- ちゃんと空間を作れば人々はそこでうまくやる
Unite2016Tokyoに参加しました(Day2)
- ざっくり自分用メモ
- ほぼ全ての講演は以下のURLから資料公開されています
Unity - Unite 2016 Tokyo 講演ガイド
- 1日目はこちら
- Unity5を使った「いけにえと雪のセツナ」の雪世界の作り方
- 映像制作のゲームチェンジャー:メイキング オブ ”THE GIFT”
- ビルディング・2Dワールド in Unity ~2D機能のあれやこれや~
- FGOにおけるディライトワークス流Unity活用術
- マルチシーン編集の使い方
- Unityとアセットツールで学ぶ絵作りの基礎
- このアセットがすごい2016
- 講演以外の感想
1日目はこちら
Unity5を使った「いけにえと雪のセツナ」の雪世界の作り方
- shader等の描画周り、知識疎いので学習機会持ちたい…
いけにえと雪のセツナ
- 1年半ぐらいの開発期間(2014年後半~2016年1月中旬)
マルチプラットフォーム考慮した描画
雪世界の表現のために
雪面凹み
- 歩いた跡の表現
- 徐々に回復する(跡が消える)
- VTF(頂点テクスチャフェッチ)を活用して実現
DOF(被写体深度)パーティクル
- 近い雪だとぼやっとしている
- 低コストで実現したい
- 単純な処理で逆方向MIPMAPで対応
- MIPMAPによる前後の解像度の表現を入れ替えた
- 普通は近いほど鮮明で、遠い程ぼやけるが、これを逆にする
ビルド最適化
- 最適化したいがアーティストの作業に支障はきたしたくない
- Jenkinsでビルド時に最適化を行う
Rendererマージ
- 主に不透明を中心にRendererをまとめる
- GameObject等が明らかに減る
- 最適化前: GameObject数 9427
- 最適化後: GameObject数 192
頂点ライトマップ
- ライトマップテクスチャがメモリを圧迫
- テクスチャ枚数が多くて、VRAMに負荷
- ビルド時にライトマップテクスチャの情報をUV1/UV2…にRGBを移す
- 頂点にライトマップカラーの埋め込みを行って対応
映像制作のゲームチェンジャー:メイキング オブ ”THE GIFT”
- 半年で完成までいたったのホントに凄い
ワークフロー/パイプライン/ツール紹介
- 映像制作パイプラインにUnityを組み込む形
- LookDevLightingのフェーズ
エフェクト作成手法
カラーボールレンダリング
- 32億ポリゴン(triangles)
- 疑似インスタンシングで対応
- スムージング
- アップだと球体のポリゴンが荒い
- 一回り小さいスフィアとしてクリッピングして対応
ビルディング・2Dワールド in Unity ~2D機能のあれやこれや~
- 個人的ベストはコレ
- デモを見せなら機能説明するのとてもワクワクした良い
マップの量産
- 1つスプライトを置いて、DrawModeをTiledにして反復させる
- あまりストレッチさせたくない場合はFullTileをContinuesuに
- 9スライスをSpriteEditorで設定
- コーナを変えずに中の部分をストレッチさせることが可能
タイルマップ
- Gridコンポーネント
- cellのSize/Gap/layoutの設定可能
- CellSizzleで様々な方向からタイルマップを設定出来る
- タイルアセットに関して色やtransformを設定可能
- 複数のSpriteを事前に作る必要が無い
- Layerに対しても移動したり回転したり色を変更することも可能
- 工夫することで影を作るLayerを作ることも可能
- layerに対してPolygonColliderを設定することで当たり判定を設定
- SpriteAnimationも可能
- TileMapのAnimationFramerateを設定可能
- プログラマブルタイル
- 配置時の自動結合判定などが書ける
マスク
- SpriteMask
- SpriteRendererer
- MaskInteractionを有効に
- トランジション等で使いやすそう
Physics
- CapsuleCollider2D
- 人間のキャラクターに適応しやすい良い形状
- EdgeCollider2D
- EdgeRadiusの設定を可能に
FGOにおけるディライトワークス流Unity活用術
- 主にデザイン面の話
- キャラ毎にリソース用意してアニメーション組むの大変そうだ…
デザイン編
動画ベースでの修正
- バトル実装にはPlayMaker/uSequencer
- 慣れればプランナーでも十分
- 3DCG制作スキル/Unity経験があってもアニメ制作経験のある人は居ない
- アニメ制作経験のある人がハードルを意識せずノウハウ投入出来るフローが必要
- 出来上がったモーションを一度動画にして、遷移や作画チェックを行う
- ビルボードで表現する
- リミテッドアニメの手法で動きを付ける
- ためを意識、ヌルヌルさせすぎない
モーションの非共通化
- ロンチ当初: できるだけ共通点を持たせて武器対応別に動きは記号化して行きたい
- 運営して行くに釣れ、遊んでくれる人とキャラへの想いが想定以上だった
- 今後登場して行くサーヴァンとは出来るだけ動きを共通化させない
実装編
バトルキャラ(サーヴァント)編
- 初期段階でSpineは不採用に
- 3D空間で派手な動きをさせづらい
- 特に横方向にヤリを振り回すキャラ
- Maya
- Maya扱えるエンジニアを抱えていた
- 3D空間上でのダイナミックアクション
- メッシュを重ねて平面っぽく作っている(2D)
- ただし横の動きをする物に関しては3Dモデルを使用している
- エクスポートしたfbxをそのまま使っている
- インビジブルエア問題
- Mayaのみでは表現が不可能
- 各部位にノードを埋め込んでPrefabにてパーティクル出す
- データを増やさず見た目を変えたい
- 1テクスチャの中で詰め込んでプログラムで切り替え
- ボーンは共通、ただし一部は進化毎に
- 動きについて
宝具編
- PlayMkaerで宝具は量産性に掛ける(特殊スキルが必要)
- uSequencerで作成
- いわゆるカットシーンエディタ
- テンプレートシーンにバトルキャラを置く
- 表示されるエフェクト/カットインを全部置く
- uSequencerに割り当てて、ひたすらタイミング通りに動かす
- デザイナーのみでガシガシ作れる
マルチシーン編集の使い方
- 基本的な説明と使用方法について
UnitySceneについて
- 複数のシーンを1回でロード可能
- 全てのアセットがメモリにロードされる
- 大きなシーンだとメモリを大きくなる
- 複数のシーンに分割する必要がある
マルチシーンエディタ
- 何故コレを使うべきか?
- 小さいシーンに分割することが出来る
- 違う人がシーンの部分毎にいじることが出来る
- Audio
- AI
- 一括して見ることも出来るし、分割した状態で見ることも出来る
- 複数シーンでいじることでコンフリクトを回避出来る
- edit中にメモリが足りなくなる問題も回避出来る
- よりシンプルなリソース管理
マルチシーンに合わせて対応したもの
- Lighting
- ここにBakeする必要があったが一緒にBakeすることが可能になった
- 各シーン毎には設定されているので、ここをUnloadしても問題ない
- NavMesh
- Lighting同様、各シーン共有の大きなNavMeshが生成される
- ActiveSceneのみ有効
Known Limitation
- クロスシーンリファレンスはサポートされていない
- シーンAのオブジェクトがシーンBのオブジェクトにリファレンスで着ない
- エディタ上では出来ないがランタイムであれば可能
- もしくは別のManagerクラスで相互にやりとり出来る様にする
- サポートしていない警告文が表示される
- アクティブシーンロード時に対称のシーンがロードされているとは限らないから
Unityとアセットツールで学ぶ絵作りの基礎
- ちょっと後半の実践は自分には難しかった…
絵作りとは何か
- 視覚的設計
- 魅力: 視覚的な興味や関心を引くテーマとなるような絵作り
- LookDev
- スタッフ全員で共有することで高度な画面設計が可能
絵画における質感を構成するもの
- 色 (材質/当たっている光の色の表現)
- 陰影 (立体表現)
- タッチ (材質の表面状態の表現)
同じことを3DCGで考える
- マテリアル (マップおよびシェーダー)
- ライト (直接光と間接光、ホワイトバランス、ソフトネス、アングル(どういう目的を持って照らしているか))
- カメラ (HDR、フォーカス、スクリーンスペースでのイメージエフェクト)
ライティングにおけるモチベーションと作為
- モチベーション: 光源
- 特にオフスクリーンスペースに存在する光源を考慮にいれる
- どういうストーリーを示すライティングかの意識が大事
- 作為(チーティング)
- 観客に違和感を感じさせない程度にモチベーションに意図的に細工する
- 恣意的に協調したり、影を無くしたり、特定のもののみ照らす等
このアセットがすごい2016
- 資料に説明含めて全部掲載されてる
- Script Inspector 3はオススメです!!
- http://japan.unity3d.com/unite/unite2016/files/DAY2_1900_Room1_ShimadaYuji.pdf
講演以外の感想
- 前日に引き続き、高速資料アップが素敵すぎでした
- プロダクトの中身見せてくださり(丁寧に対応してくださり)本当にありがとうございました!
- いけにえと雪のセツナ
- 1000mゾンビエスケープ
- 来年も何かしらの形で関わって行きたい
- 今年はトレーニングデイでTAやらせていただきました
- 成果物の発表、もしくはLTの参加目指すぞ!
- 運営/参加者の皆さん、2日間お疲れ様でした!
Unite2016Tokyoに参加しました(Day1)
- Unite2016とは
- 講演の資料
- 基調講演
- モバイル端末向けのUnityアプリケーションの最適化実践テクニック
- Unityグラフィックス最新機能ガイド
- Unityで音を制す2016
- Unity x PlayStation®VR コンテンツを作ってリリースするまでのお話
- 学校では教えてくれないアセットバンドルのしくみ
- unity上級者を目指すなら知っておくべきデバッグテクニック集
- 講演以外の感想
Unite2016とは
- 年に1度のUnityのお祭りです
講演の資料
- 殆どの資料が現時点で上がっている…だと…!?
- なので全部書かないで、主に印象に残った話をメモ程度に残すとかそういう感じ
基調講演
2016年のUnity
- 品質面では、安定/βバージョンと分割リリースすることで安定化を図る
- ローカライズにも力を入れる
- UnityEditorの日本語化
- ドキュメント/リファレンスにプロおよびレビューチームを設ける
Unity .NET Foundationへの加入
- Unityが.NET Foundationに参加 – Unity Blog
- UnityはこれまでC#3.0相当だったのだが、C#6.0/GC高速化等の対応を行った(行う)とのことで嬉しいニュース
UnityCollaborate
- Unity上で完結するプロジェクトの共有システム
- ディレクターやデザイナー、QA/テスターに最新の状態を共有するためのシステム
- エンジニア以外の人でも容易に更新掛けられるアドバンテージはありそう
- Git等は慣れれば何でもできるけどエンジニア以外の敷居は高そうなので、TPOに応じて使う場面ありそう
教育現場におけるUnity
- 500もの教育機関(専門学校/高専等)でUnityが使用されている
- ただ教育現場でUnityを教えられる人が居ないというのが現状とのこと
- 逆に生徒の方が詳しい現状は容易にあり得る
- UnityCettificationという検定試験、およびコースウェア(学習カリキュラム)
- 2016年6月から渋谷で受けられるとのこと
PSVR
- 44,980円 / 2016年10月発売
- プレゼンス(没入体験)の維持と技術等詳しくない人でも直ぐに遊べる一般消費者向けの支店に力が入ってるのを感じた
- ディスプレイのセパレートモードの体験面白そう
- HMD付けてる人が怪獣役、他のプレイヤーはテレビを見つつコントローラーでプレイヤーを操作しその怪獣を退治する役
THE GIFT
- Unityを使ったピクサー風味のアニメーション
- Unityホントに何でも出来るようになっていくなぁ、と関心
- Unityを使う旨味としてマルチメディア展開の容易さにあるとのこと
- ゲーム/VR/アニメ…etc
モバイル端末向けのUnityアプリケーションの最適化実践テクニック
- 中々ディープなハックだった
プロファイリング
- なんだかんだでInstrumentsが一番優れてる
- Unity用のMemoryProfilerはBitbucketからダウンロード出来る様になっている
最適化
- テクスチャー圧縮しつつ出来るだけ小さめに
- Read/Writeでテクスチャのメモリ2倍になるので無効にする
- AssetPostprocessorを使うとファイルのインポートを検知して設定可能
- Textのperseに時間が掛かる
- Reflectionを使う場合の処理が重い
- Unity側で用意したJsonUtilityはパフォーマンス良い方
- 起動時に全てのReousrceフォルダのインデックスをロードする
- Reosurceから排除してAssetBandle側に映す
- 文字列のヒープ領域の確保に注意
- http://docs.unity3d.com/ja/current/Manual/UnderstandingAutomaticMemoryManagement.html
- Material / Animator / ShaderPropertiesに関してもクラスを作ってプロパティIDを管理し、stringを頻繁に呼び出さない
- foreachよりもfor使う
(個人の感想)
- 直ぐに使えそうなやつは実践しつつ、パフォーマンスに影響が出るようであれば細かいアプローチ掛けて行くのが健全っぽい
- 特に複数人のプロダクトにおいては、複雑なコードは処理に対する可読性を下げる
- パフォーマンスにどのくらい影響があるか常にプロファイリングしつつ、奥の手として知っておくのは有効だと感じた
Unityグラフィックス最新機能ガイド
- 主に上記の映像で使われている技術についての話
- 5.4ではマルチスレッド用に最適化
- TimelineProfilerを見ると全てスレッドが仕事してるのが分かる
- シネマティックイメージエフェクト
- プログレッシブライトマッパー
Unityで音を制す2016
ADX2
BEATWIZ
Unity x PlayStation®VR コンテンツを作ってリリースするまでのお話
実装の話
- UnityのチュートリアルプロダクトTankを置き換えて実践
- PS4向けにビルドするのであればビルド先をPS4に向けてビルドするだけ
- PSVR向けにビルドするだけであれば以下のフローでOK
- UIにまでReprojection掛かる対策
- UI専用のカメラを用意し合成する
販売までの話
- まず契約なのだが、法人登記していない場合はインディーズパブリッシャーに声掛けよう
- 契約後にPS4/PSVR/SDK等の開発に必要なものを入手可能
- 機材に限りがあるので面白い企画がある人は早めに声掛けて!
学校では教えてくれないアセットバンドルのしくみ
- LZ4ベース圧縮(ChunkCompressed)をUnity5.3から対応
- LZMAは伸張処理にファイル全体が必要で、ストリーミングでそのまま読み込めなず、展開状態で保持するしかない
- LZ4は圧縮早い一方、圧縮率では劣る
- しかしチャンクが揃ったオブジェクトから順次処理が可能なので伸張しつつアセットバンドルの生成が出来る
- WWWクラス
- WWW.bytes、manaed領域にバッファ確保してしまい、GCが起きやすい
- UnityWebRequestクラスを使おう
unity上級者を目指すなら知っておくべきデバッグテクニック集
Debug.Log
- console上のCollpaseを有効にして同一参照元のメッセージをまとめる
- Debug.Log(“hoge”, this)
- this指定により、consoleから参照しているオブジェクトのハイライト
- Debug.Log(“<color-red>hoge”)
- リッチテキストによる協調も可能
- Debug.Logger.logEnabled = false;
- 重い処理なのでリリース時等に非表示にしておくことを推奨
Assert
- Assert.IsNotNull(message) のような記載でconsoleに例外表示
- Assertはリリースビルドで取り除かれる
その他
- TestRunnnerでテスト書こう
- テストが実行されるのは現在開いているシーンのみ
- Inspectorに入力した後はソースコードより優先される
講演以外の感想
- Unite3回目くらいの参加だけど、Unityの勢い全然まだまだ衰えない感じ
- 今年はVRが一般流通するということもあり、企業展示はVR多めだった印象
- LT申し込み少なかったのかタイミング合わなかったのか、あまり聴けなかった
- S席3枚買ったけど、並ばないし、待機ゾーンで軽食食べれるの優雅で良い感じ
- 500円高いかなーと思ったけど、ほぼそれに見合った対価は得れたと思う
- 懇親会はコミュ障発揮し過ぎた、もっと適当などこかに顔を突っ込めば良かった
- Unity関連でもっとコネクションというか仲間が欲しい…
- そのためにも覚えてもらうためのタイトルを用意しないとアカン
- 無料UFOキャッチャーで無事にユニティちゃんフィギュアゲット出来た(会社に1つあるので2個目)
- お昼はアクアシティの5,6階のレストランが以外と空いててオススメ
- ローストビーフ丼御馳走様でした///