SlideShare a Scribd company logo
ハレとケ展
-現場のUnity-
ハレとケ展 現場のUnity
ハレとケ展
東北の伝統行事をモチーフにした体験型アート作品
ここで動画を再生
システム構成(1ブロック)
Kinect x 2
WindowsPC x 2
単焦点PJ x 1
ハレとケ展 現場のUnity
開発環境(描画マシン)
Windows 10 pro 64bit
Unity 5.4.2f2
Visual Studio 2015
Max MSP (サウンド用)
開発環境(センシング)
Windows 10 pro 64bit
Openframeworks 0.9.8
Visual Studio 2015
バージョン管理
git でローカルLANにリポジトリ
シーンのマージにはUnity Smart Merge(後述)
フロントエンドにSourceTree
少人数・短期間のため、
多少データが大きいが、リソースも気にせずすべてコミット
現場のUnity
メリット
・とにかくすぐ動く
・パラメータを変えてのテストが一瞬でできる
・超高速イテレーション
・CGデザイナーが直接修正可能。フレンズによって、得意なこと違うから!
・アセットストアでめっちゃいい出来合いのアセットがたくさんある
・シーンビューの自由度が高く、制作・デバッグ共に捗る
現場のUnity
デメリット
・微妙な問題(メモリリークや拡張アセットの不安定性)は普通にある
・Unityの分厚い抽象レイヤーの中でおこるバグを回避するのが大変
・シーン同士マージが不安定でややコラボレーションに問題
・ガベージコレクションのスパイクが結構うざい
特に便利だったアセット
・Alembic Importer (https://github.com/unity3d-jp/AlembicImporter)
  Unity上での実装が難しい複雑なポリゴンアニメーションを読み込む
・Pixel Perfect Game Window (https://www.assetstore.unity3d.com/jp/#!/content/25045)
  UnityのGameウィンドウを完全にフルスクリーンにする
・Dynamic Bone (https://www.assetstore.unity3d.com/jp/#!/content/16743)
  揺れもの系の制御
・PostProcessing(https://github.com/Unity-Technologies/PostProcessing)
  言わずと知れたポスプロアセット
・UnityOSC(https://github.com/jorgegarcia/UnityOSC)
  センシングアプリとの通信など
Kinect Studio
Kinectの情報を録画して、Kinectを刺さなくても
再生やデバッグに使うことが可能
アプリ側は何もしなくてもキネクトが刺さっている
かのようにふるまう(ここ重要)
開発中に起こった問題
Unityでも色々起こる・・・
AlembicImporterメッシュをInstantiateするとマテリアルがはずれる。
マテリアルを設定するスクリプトを作ればいいのだが、
マテリアル操作が煩雑になり、管理が面倒・・・
AlembicImporterメッシュをInstantiateするとメモリが増えつづける
大量にInstanticateするシーンは1時間で10GB持って行かれた
さらになぜがUnityのガベージコレクションにも悪影響があり、GCが走る
たびにひどいスパイクが発生。
原因を探ったが修正が困難だと判断して、大量に使う部分は連番メッ
シュに修正して解決。最終的には変身のみAlembicを使用。
GC.Collectのスパイク
Unityの資料にしたがって、定期実行していたが、特に効果的でもなく頻
繁なスパイクの原因になったので結局やらないことに。
Materialなどのリソースメモリリーク
Materialなど、Unityリソースはガベージコレクションでは回収されない。
なのでガンガンメモリが増えていく。
Resources.UnloadUnusedAssets
を定期実行で対応
ただキャッシュまでクリアされてしまうので、状況によっては使えない方法
かも
また、そもそも毎フレームのリソースアロケーションに注意
Materialなどのリソースメモリリーク
プロファイラーできっちりチェック
SmartMarge
Unityシーンがバージョン管理ツールでマージできる!!!
設定 YamlMergeのパスを通す
C:Program FilesUnityEditorDataToolsUnityYAMLMerge.exe or C:Program Files
(x86)UnityEditorDataToolsUnityYAMLMerge.exe
.git/config に登録する
[merge]
tool = unityyamlmerge
[mergetool "unityyamlmerge"]
trustExitCode = false
cmd = 'UnityYAMLMerge.exe' merge -p "$BASE" "$REMOTE" "$LOCAL" "$MERGED"
C:Program FilesUnityEditorDataToolsmergespecfile.txt を編集する
unity use "%programs%Perforcep4merge.exe" "%b" "%l" "%r" "%d"
prefab use "%programs%/p4merge.app/Contents/Resources/launchp4merge" "%b" "%l" "%r" "%d"
P4Merge(https://www.perforce.com/downloads/helix#product-10)のHELIX P4V: VISUAL CLIENTを入れれば完了
SmartMarge問題
大きなシーンだとクラッシュすることがあった
マージに失敗すると、結局手動マージになってしまうので、
後半は失敗が怖くて結局シーンはマージしなければならない状況をそも
そも回避するようにした。
みんなマージどうやってるの・・・?
.unitypackage 問題
プロジェクトファイル間のデータ移動に便利だが、
基本的にデータ上書きなので、うっかりするとファイルが先祖返りする
上書きマーク
これで5時間は無駄にした
なるべくgitで対応するか、細
心の注意で使う
Graphics Quality問題
Unityには複数のスペックの違う実行環境に対応するために、
処理を分ける仕組みがある
 Edit/Project Settings/Quality を選択
通常はビルドしたアプリ実行時に設
定ウィンドウが出現して、
そこから選ぶ。
Graphics Quality問題
ただ、今回のアプリの場合、最初の設定画面をスキッ
プしていた。
別なマシンに持っていった時に、設定が変わってし
まった。
・アンチエイリアスが効かなくなる
・特定のオブジェクトが描画されなくなる
・影が出なくなる
などの形で表面化して原因特定に時間がかかった
Graphics Quality問題
結局一つだけ設定を活かしてほか
はすべて非アクティブに設定で解決
した。
フルスクリーン問題
解像度を指定して設定しているのに、なぜか起
動時にフルスクリーンにならない
コマンドライン引数で設定を強制上書きで解決
-screen-fullscreen 1
-screen-width 1920
-screen-height 1080
透過シェーダー問題(1)
シェーダーを書き換えて対応できるものは対応
透過に標準では対応していないシェーダーで透過したい
透過シェーダー問題(2)
透過シェーダーが影をレシーブできない
描画順などの問題で、根本的解決が難しいと判断
透過が始まる瞬間にシェーダー(マテリアル)を切り替えて対応。
案外目立たなかった。
雪玉が気持ちよく投げれない問題
仕様
手で雪玉を投げられる。
それがキャラクターや他の雪
玉、地面にぶつかると砕け
る。
雪玉が気持ちよく投げれない問題
空間が狭く、
投げる瞬間に結構すでにぶつかっ
てしまっている・・・
単純に距離をとる方法もあった
が、なるべく現実にリンクした距離
感にしたかった
雪玉が気持ちよく投げれない問題
投げる前にぶつかっているコライダーや、自分のキャラクターのコライダーを、
Physics.IgnoreCollision(a, b);
で投げる前にコリジョンを無効化してしまう
https://docs.unity3d.com/jp/540/ScriptReference/Physics.IgnoreCollision.html
アプリクラッシュ問題(なまはげシーン)
アプリクラッシュ問題(なまはげシーン)
明確な原因不明。発覚時は3時間
に1回程度しかおきないくらいだっ
た
そもそもPC版ビルドは、
スクリプトで例外やぬるぽがあって
もクラッシュまでいかないはず 。
ともかくその後検証で偶然3分程
度で再現する方法がわかり、検
証。
スタックトレースログから
GameObjectのSetActive周りが怪
しい・・・?
アプリクラッシュ問題(なまはげシーン)
バグ探しの基本は二分探索
半分くらいずつオブジェクトを試しに消してみつつ、
バグの範囲を絞っていく。
結果メインキャラクターのボーン付きモデルのSetActiveメソッドを呼ぶ
のが良くないところまで特定したので、そのかわりにRendererのenable
をfalseにすることで対応。
直接的な原因は闇の中。
Unityエディタ上でも再現したので100%Unityのバグ
エディタ拡張
あまり使わなかったが、ContextMenuだけは最強に便利
1行追加するだけでエディタから直接メソッドが呼べる
[ContextMenu("ThrowTest")]
public void ThrowTest()
{
SetupReference();
Throw(Vector3.up * 4.0f, null);
}
まとめ
・Unityでも当然だがいろいろ問題は発生する
・うまく使えば開発速度は爆速
・地雷は踏み抜いていくもの
・ツールのバグもうまく回避すべし
Thank you!

More Related Content

PDF
今だから聞きたい!Unity2017/18ユーザーのためのUnity2019 LTS基礎知識
PDF
Virtual Tsukuba Challenge on Unity のアップデートについて
PDF
【CEDEC2018】開発計画に役に立つUnityロードマップ
PPTX
Introducing to algyan jet bot ai robot kit
PDF
Virtual Tsukuba Challenge on Unity について
PDF
UnityのクラッシュをBacktraceでデバッグしよう!
PDF
【Unity道場 名古屋SP】Unityのグラフィックス表現の進化とソリューションでの活用
PDF
5分でわかる Sensor SDK
今だから聞きたい!Unity2017/18ユーザーのためのUnity2019 LTS基礎知識
Virtual Tsukuba Challenge on Unity のアップデートについて
【CEDEC2018】開発計画に役に立つUnityロードマップ
Introducing to algyan jet bot ai robot kit
Virtual Tsukuba Challenge on Unity について
UnityのクラッシュをBacktraceでデバッグしよう!
【Unity道場 名古屋SP】Unityのグラフィックス表現の進化とソリューションでの活用
5分でわかる Sensor SDK

What's hot (11)

PDF
【Unite Tokyo 2019】2DアーティストのためのGPU入門
PDF
Unite Tokyo 2019参加者が評価した、すごい講演 TOP 10
PDF
Webカメラ画像のリアルタイム識別 / Web Cam Image Recognition with Inception V3
PDF
PlasticSCMの活用テクニックをハンズオンで一緒に学ぼう!
PDF
UnityのMultiplayサービスの得意な事
PDF
Jetson Xavier NX クラウドネイティブをエッジに
PDF
VTC on Unity の 進捗について
PDF
Photogrammetry Meetup 20190810 - LT資料
PDF
RICOH THETAの全天球画像でペーパークラフト作成
PDF
2015年度GPGPU実践プログラミング 第2回 GPUのアーキテクチャとプログラム構造
PDF
NGC でインフラ環境整備の時間短縮!素早く始めるディープラーニング
【Unite Tokyo 2019】2DアーティストのためのGPU入門
Unite Tokyo 2019参加者が評価した、すごい講演 TOP 10
Webカメラ画像のリアルタイム識別 / Web Cam Image Recognition with Inception V3
PlasticSCMの活用テクニックをハンズオンで一緒に学ぼう!
UnityのMultiplayサービスの得意な事
Jetson Xavier NX クラウドネイティブをエッジに
VTC on Unity の 進捗について
Photogrammetry Meetup 20190810 - LT資料
RICOH THETAの全天球画像でペーパークラフト作成
2015年度GPGPU実践プログラミング 第2回 GPUのアーキテクチャとプログラム構造
NGC でインフラ環境整備の時間短縮!素早く始めるディープラーニング
Ad

Viewers also liked (20)

PPTX
Boutiqe Roma
PDF
いろいろ迷子のレンダラー Lost Child Render
PPTX
Aparato cardiorespiratorio julliet chacon
PDF
VentureWell Open conference presentation March 25 2017 v2 bill copy
PDF
Photo mosaic 検証
PDF
Plan de mejoramiento matemática grado primero
PPTX
Obelis semprún
PDF
Metal Fluid Simulation
DOCX
Banco Central de Venezuela nuevas tasas de interés operaciones tdc
PDF
Final project copy
PPTX
【UnityFukuoka13】エディタ拡張をし易くするエディタ拡張
PDF
Lt cocoa
PDF
静的リンクライブラリ
PDF
Blur based Weber–Fechner law
PDF
Real timeimageprocessing
PPT
La espiral de la tercera ley de kepler. Astronomía, Sistema Solar, Tierra
PDF
Programmer @jc-21 2014/03/29
PDF
SWWDC2012_11_17
PDF
2013-07-12 (金) レッツゴーデベロッパー変真 前夜祭
DOC
Painting Materials list (oil)
Boutiqe Roma
いろいろ迷子のレンダラー Lost Child Render
Aparato cardiorespiratorio julliet chacon
VentureWell Open conference presentation March 25 2017 v2 bill copy
Photo mosaic 検証
Plan de mejoramiento matemática grado primero
Obelis semprún
Metal Fluid Simulation
Banco Central de Venezuela nuevas tasas de interés operaciones tdc
Final project copy
【UnityFukuoka13】エディタ拡張をし易くするエディタ拡張
Lt cocoa
静的リンクライブラリ
Blur based Weber–Fechner law
Real timeimageprocessing
La espiral de la tercera ley de kepler. Astronomía, Sistema Solar, Tierra
Programmer @jc-21 2014/03/29
SWWDC2012_11_17
2013-07-12 (金) レッツゴーデベロッパー変真 前夜祭
Painting Materials list (oil)
Ad

Similar to ハレとケ展 現場のUnity (17)

PDF
20160221-UnityAassetTouchAndTry-in-FukuokaUnity
PPTX
HoloLens 開発環境構築
PDF
MRTK V2.3 Spatial Awareness
PDF
20160306-UnityAassetTouchAndTry-in-HimeUni
PDF
UnityによるAR/VR/MR 開発体験講座
PPTX
DeNA TechCon2019 How to implement live streaming client using Unity
PDF
HoloLensハンズオン:AirTap & SpatialMapping編
PDF
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
PDF
2016年02月13日アセットタッチアンドトライ(有料アセットの無料お試し会)アセット一覧
PDF
HoloLensハンズオン@ももち浜TECHカフェ vol.1
PDF
SMCN05 - AR! AR! AR!
PPTX
Cstコース発表2021
PPTX
Unite 16' LAで発表されたあれこれとゲームアプリのマネタイズベストプラクティス
PDF
HoloLensハンズオン(セットアップ)
PPTX
HoloLens開発環境構築(2018/1版)
PPTX
メガ Unity ユーザーミートアップ 2012
PDF
ノンプログラミングで始めようHoloLensコンテンツ開発
20160221-UnityAassetTouchAndTry-in-FukuokaUnity
HoloLens 開発環境構築
MRTK V2.3 Spatial Awareness
20160306-UnityAassetTouchAndTry-in-HimeUni
UnityによるAR/VR/MR 開発体験講座
DeNA TechCon2019 How to implement live streaming client using Unity
HoloLensハンズオン:AirTap & SpatialMapping編
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
2016年02月13日アセットタッチアンドトライ(有料アセットの無料お試し会)アセット一覧
HoloLensハンズオン@ももち浜TECHカフェ vol.1
SMCN05 - AR! AR! AR!
Cstコース発表2021
Unite 16' LAで発表されたあれこれとゲームアプリのマネタイズベストプラクティス
HoloLensハンズオン(セットアップ)
HoloLens開発環境構築(2018/1版)
メガ Unity ユーザーミートアップ 2012
ノンプログラミングで始めようHoloLensコンテンツ開発

ハレとケ展 現場のUnity