mattak's blog

気の向くままに書く

Unite 2015 Day1 めも

KeyNote

David

John Riquid Tailer Talk about push way.

  • Incredible Graphics
  • Feature rich & high flexible editor
  • Industory leading multiplatform support
  • Unmatched efficiency boosted by the Cloud
  • Tools for more efficent developing

Professional Edition

  • Team LIcence
  • Unity Cloud build Pro .. task
  • もういちどね
  • Access to Betas / Previews
  • Unity Analytics Pro
  • Game Performance Reporting ( crush report / performance …)
  • Unity Asset Store Level 11 Deals
  • Same Price as Unity 4

Personal Edition

  • Unity 5 engine with all feature
  • Physics based Shading , Enlighten , reflection probes...

Incredible Graphis

  • PBR
  • Global Illumination with Enlighten
  • Reflection probes

PV

  • html5 っぽいロゴ
  • 剣士と呪術師が戦う

REPUBLIQUE demo

  • hide and seek
  • 2年前のunite japan.
  • 発売前のプロダクト紹介した
  • 少人数での開発
  • モバイル、PCので開発ができる
  • 2月に発売したゲームはunity5 の全機能をつかった
  • PV
  • Criware
  • エピソード販売形式
  • facial captureをつかっている
  • iOS Apple Featuresもらった. ひょうばん上々
  • unity 4 -> 5: PBR
  • 3月にunity.comにどうやって移行したかの内容をupした
  • 次のプロジェクト camouflaj
  • ゲームのクオリティよりも課金に集中していてがっかり
  • 高級なエンタメ. 小説や映画のような経験を提供したい
  • 感情表現が豊かにできる
  • FF15 / Bladbone / MGS など楽しみ. そんな名作をもっと作ろう
  • unity3d.comに無料のプロジェクトファイルをアップした => やばい

demo解説

  • ライティングwindow追加された
  • ambient intensity / indirect transfor (反射光
  • iraradienceを使うと環境光の影響のみを見ることができる
  • emissive material 蛍光灯素材のようなものも設定できる
  • metaric = 1 / smoozeness = 1 => 鏡
  • reflection probeで拾った影響をそのまま適用する => パフォーマンスよくしながらより良い影響
  • StateMachine Behavior
  • Mixierの方で3d選択が含まれる
  • スナップショットを切り替えるだけで、音量調整一発
  • duckingで他の音量を下げてる

Feature-rich & Highly Flexible Editor

  • 64bit editor
  • PhyscX 3.3 upgrade
  • Animation improvements
  • new audio tools
  • ...

Industry leading multiplatform support

  • AnyPlatform..

Unmatched efficiency boosted by the Cloud

  • WebGL
  • IL2CPP / .NEt Performance Test
  • Performance / arm64 0.64s -> Mono Armv7 5s
  • Amazing!!
  • IL2CPP : PS{3,4,Vita} Xbox WiiU
  • Massive R&D
  • 300 developers & hiring.
  • New NINTENDO 3DS support !!

VR

  • Palmer Lucky / Oculus Fouder
  • Indie game & professional games developer
  • Great consumer VR isimminent - and we are not alone.
  • Unity + Oculus: workflow improve 120fps multiple rendering, easy to target ...

5.1beta VR integration demo

  • player setting other: VR support

Unmatched efficiency boosted by the Cloud

  • Cloud Build - without your computer. 10 min
  • Alyways available . Ease of distribution
    1. source control
    1. Detect commits
    1. Build in the cloud
    1. Install & test
  • build.cloud.unity3d.com / FREE | Pro $25 /m| STUDIO $100/m | ENTERPRISE

Unity Ads

  • Helping developer make a living
  • 1500 games
  • 3 of TOP 10 iOS games
  • GREE / CyberAgent supports
  • 3.5 億 / 3month

Session1. ここが変わる!Unity 5のスマホ開発 ~アセットバンドル、ビルド、プラグイン~

Speaker

  • unity technologies japan. evanjelist 伊東周

Asset Bundle

  • Qiitaの記事

今まで

  • 複雑
  • ビルド時間かかる
  • 依存関係めんどい
  • 互換性がない

解決方針

  • シンプル (ランタイム、ビルド方法)
  • Incremental Build
  • 依存性はunityが解決
  • 互換性を保持
  • 新旧まぜるな危険

変更点

  • AssetBundleのビルド方式
  • ...

ビルド方式

  1. Asset / AssetBundleを結びつける
  2. ビルドスクリプト呼ぶ

拡張子 .unity3d でなくてもいい

名前付け

  • 小文字のみ、同名禁止、パス構成 / が有効に.
  • assetImporter.assetBundleName = assetPath しとけば一応名前付けずに使える

Buildスクリプト

  • 出力パス
  • BuildAssetBundleOptions (後述)
  • 出力ターゲット

BuildAssetBundleOptions

  • IgnoreTypeTreeChanges (オプション)
  • ソースコードが健康されても変更したとみなされない
  • DisableWriteTypeTree
  • タイプツリー自体を削除 (サイズ削除)?

AssetBundle Version

  • 5.1 -> 5.xで互換する. (5.0はバグあり)

依存

  • AssetBundleManifestで依存解決
  • Single Manifestファイル => 依存関係を解決できる. ランタイムに読んで使用
  • その他.manifestファイル => マテリアルごとに出力される
  • ふぉるだめいが親玉マニフェストファイルのベースネームに

Variantとは

  • Runtime時に読み込むAssetBundleを変更できる

新しいRuntime

  • files.unity3d.com/.../users_assetbundle-demo.zip : サンプルプロジェクト
  • AssetBundleManager.cs
  • BaseLoader.cs

1.基本のロードの仕組み : LoadAssetAsync 2. 依存関係解消: ABに依存するリソースを自動で取得 3. エディタエミュレーション GetAssetPathsFromAssetBundleAndAssetName 4. Variantsを使った切り替え => 最後の名前を付け替えてる makoto-unity/NewAssetBundleSample

マルチプロセスビルドHack

  • Projecct 複数コピー / symlink Assetsはフォルダの中身をリンク
  • Unityはバッチモード Unity -quit -batchmode -projectPath [] -executeMethod BuildScript.cs
  • スクリプト公開する
  • 運用は自己責任で

ビルド

IL2CPP

  • Before => Xcode -> Armv7
  • Current => (c++ =>) Xcode => Armv7 / Arm64 : armv7のサイズ若干大きい
  • Future => (c++ =>) Xcode => arm64

UnityEditor.iOS.Xcode

  • Before -> Xcode -> 手動で変更
  • Current -> Xcode -> 自動で変更
  • bit.ly/1CSDBYo

Plug-inの設定の変更

  • フォルダ内に入れなくても、チェックでOK
  • 依存するFrameworkを選択可能
  • コンパイルオプションを設定可能
  • 全部再設定しなくちゃダメ? => Plugins/iOS/に於けば自動で認識
  • 「がぞうはPluginとしてにんしきされない」 => Plug

NativePlugin

  • objc_getClass / objc_msgSend ( C# -> ObjC )
  • 引数使えない
  • tsubaki1.hatenablog.com/...

Session2. GLOBAL ILLUMINATION IN UNITY 5

PV

  • SHADOWOOD

AGENDA

  • What is Enlighten
  • How does Enlighten work?
  • Realtime Reflections
  • What’s next

ENLIGHTEN?

  • Middleware
  • Global Illumination 計算用
  • neon base のAndroidなど modern all platformでサポート

GI Output

  • precompute
  • realtime lightmaps
    • Realtime Light maps
    • Realtime cubemaps (5.xで入る予定)
  • baked lighted maps
  • based ..

間接照明しか無い 低周波 L1の表面関数

Based GI OUTPUTS

  • high resolution baked lightmaps
  • direct lighting / ao / indirect lighting... 比較的計算コストは安い
  • ほぼ静的なライト、モバイル向け

WHAT DOES REALTIME GI MEAN

  • 反射率. Shaderのカスタマイズ、オブジェクトの係数

WHAT CAN YOU DO WIth THIS?

  • 一日の表現
  • ものの光、ヘッドライト、フラッシュライト、爆発、ムードライト、発射時のライト
  • Blacksmith: 間接光の反射が表現できる

WHAT CAN YOU +NOT+ DO NOW

  • 動的にあジオメトリバンスライト
  • 動的なジオメトリでの発行ライト
  • 環境に関しては基本静止
  • SceneをStatic / Dynamicに分ける必要がある
  • 完全な生成型のライト環境はまだつくれない

SMOKE AND MIRRORS - THE TRICKS

HOW DOES ENLIGHTEN WORKS

  • レンダリング積分関数を最適にとく
  • エネルギー関数
  • radiosityは計算コスト高い.
  • pixel数を小さくしてnを小さくする
  • repackageする
  • Lightmaps are low res and tightly packed
  • Emittor / ReceiverをDecouplingする
  • clusterをtexcelで分割、より大きなクラスタから光を設定していく
  • texcelの16倍高速化
  • クラスタ改装を構築して、上方向にmergeしていく
  • treeのcutを明示的にしていく. (エリアの最小化. merge)
  • 突合していく
  • 定数k (budget)が シーンのリッチさにつながる

HOW DOES ENLIGHTEN WORK?

  • Phase1. Prime clusters with direct lighting
  • クラスタごとにてんセットを持つ
  • 直接光の評価
  • Phase2. 事前バウンスライト読み込む
  • UVをクラスタにassignする必要がある
  • radianceを
  • Phase3. Gather
  • 64-256 の間のクラスタ数で切る. 複数回足す
  • platformごとに最適化している
  • reframeが少ない、データ量が少ない
  • CPU側ですべて行われている

REALTIME REFLECTIONS

  • 反射に対して適切に行う
  • 球面反射を行う
  • Boxを作りその中の影響だけを適用する
  • 表面によって反射具合は変わる

SMOOTHNESSを使う - Cubeのmiplevelでスムーズさをカエルことができる

REALTIME REFL. PROBE CONCL.

  • GPU上で動く
  • シームレスmipmapを生成する

SCHEDULING

  • タイムスライスを行う
  • 複数のフレームを使って畳み込む

SCREEN SPACE REFLECtiONS

  • ImageEffect built-in deffered shading pipeline
  • レイマーチング
  • SSRで間接反射が表現できる

WHAT'S NEXT

  • FixBug : ユーザが使うworkflowとの差分がないか?
  • Documentation improve : video / web
  • Optimize the precompute / base phase
  • LAN Lighting Build : 同じネットワーク内の危機を使ってビルドする
  • Cloud Lighting Build : クラウドでビルドする
  • Level up iteration speed. PowerVRとインテグレートする: 何度も繰り返す処理を早く
  • Improve mixed realtime/baked shadows

Session3. Unity 5グラフィックス機能使いこなしガイド

  • 高橋啓治朗
  • 普段つかっている機能でちょっと使うと便利な機能とか紹介

TOPIC

  • Lightingの新機能
  • Realtime GI の基礎

  • Unity5 graphicsガイド実践編 => 後日配信

LIGHTING

AMBIENT LIGHT

  • 3方式に
  • Skybox
  • Gradient
  • Solid Color

Window -> Lighing Ambient Source

  • Skybox: ちょうべんり
  • Gradient : グラデーション 3上中下で設定できる
  • Solid: 単色

SKYBOX

  • PROCEDURAL Skybox : 生成型
  • Cubemap Skybox : パノラマ画像

material : Skybox/Procedual

  • Sunの設定: 太陽が自動ででる. 光源自動
  • Atmosphare Tickness : ゆうやけかん。水星線
  • sky tint 空の色味
  • exposure: 絞り

Skybox/Cubemap

  • panorama image
  • sidl archiveからDLしてきた / .hdr, .exrをDROPするだけ
  • Cubemap apply
  • 太陽の方向を合わせておくだけでちょっとクオリティアップ

CAST SHADOWS OPTIONS

  • Two Sided : 洞窟内とかきちんと影出る
  • Shadows Only : 影のみみえて見た目はきえる

PCF SOFT SHADOW きれいなソフトシャドーがでる

BAKED SOFT SHADOW

  • Baked Shadow Angle
  • 半影の部分. 0度 -> 8度

SHADOW BIAS

  • バイアスを掛けてアーティファクトを除去する
  • Bias: ちょっとさきにする
  • Normal Bias: 法線の逆方向に小さくする
  • アーティファクト: しましま
  • Normal Biasで遠ぽうからの影を消せる. Biasだとかげのしっぽが出る
  • かげの助が出るときには、NormalBiasを低く、Biasを高く

REALTIME GI

グローバルイルミネーションとは?

  • 光源から食せつ照らされている範囲のみだったが
  • Indirect Lighting: 間接光の表現ができるようになる

General GI

  • Indirect Intensity: 間接光の光源を適用
  • 光源が移動した時に間接光も変化

REALTIME GI

  • static フラグをつけると, Spotlightの間接照明
  • Diffuse materialのベイク処理を前計算する
  • 動き回るdynamicなobjectに影響与えるには、LightProbeGroupを置く必要がある
  • おくとprecompute
  • おいた地点に対して間接光. 最近店に対して間接光が当たる

Reflection probe

  • staticなobjectのspecularに間接光を適用する場合に利用する
  • これもおいた瞬間にprecompute

まとめ

  • DirectLightingはかなにもかんがえなくていい
  • Indirect Lighting (diffucse) は light probeないと動くものには反映されない
  • Indirect Lighting (specular) は reflection probeがないと動くものには適用されない

default specularはSkybox. Skyboxの内容が映り込む

  • specularが意図せず青白くなっていたらreflection probeを設定しわすれの疑い

間接光の法線マップが適用されない

  • directional light
  • Directional Mode -> Directionalを追加すると、どの方向から光が入っているか近似してくれる => 法線マップが適用される
  • Directional Specular Mode -> 追加情報をつけたして、シェーダの機能が引き出せるようになる
  • デメリット: 計算量。容量。表現が曖昧になる (代表的な光の方向1塔のみをつかうようになる)
  • このような場合は、reflection probeででかてか反射を表現するのがよい

Reflection Probe

  • つなぎは?
  • 多重反射は?
  • リアルタイム反射は?
  • BoxProjectionは?

Cubemapを行き違うときにぱりぱりっとなる

  • Reflecion probeを blend optionにする -> もやっとなる

多重反射

  • 逆のreflection probeを表示するときには真っ黒になる
  • reflection bouncesを回数増やせば、真っ黒領域減る -> 2ぐらいまではいいかなー
  • reflection probe type: bake -> reatime にする
  • fresh time: every time (動きがうつる)
  • Time slicing : Individual Faces がずれるがふかすくない
  • Time slicing : Noneで完全一致。ただ画質が落ちる

Box Projection

  • Classic Cube mapping => 近くを移すと不自然
  • Reflection probeのbox projectionオプションをつけるとリアル
  • 無限遠には程遠いならば、あり、
  • モバイルではつかえない、ちょっと重い
  • 立方体の環境

Session4. スケルトンを用いた2Dキャラクターアニメーション開発 虎の巻

Advanced 2D Charactor Animation

Veli - Pekka Kokkonen

  • 2D & animation tools @Unity
  • Used Unity 8y

2D Character Animation

  • wrorkshop styleで発表するよ
  • キャラクタの階層
  • 整列方法
  • poseを生成
  • アニメーションの記録
  • アニメーションイベント
  • Ragdoll

2D Character Animation

  • public APIで作成
  • bitbucketで利用可能. 最後のスライドでlinkを貼るよ

workshop

  • SpriteSheetw用意
  • SpriteEditorで領域指定
  • 最小領域を自動でとってくれるよ
  • pivot pointを指定する (間接に当たる)
  • Spriteの中のパーツになまえを付ける
  • partsをDR&DL
  • 親子階層をしっかり設定する
  • 階層の設定でpivot点に対して回転ができる

階層を作る

  • order in layerで設定
  • Add Compnent Sourting Group
  • Gruopないでオーダーを設定
  • Sorting Group (Script)
  • Sortting Mode Hieralchy : default -> 親が後ろのソーティングレイヤーになる

pose設定

  • objectを複製
  • sorting groupで次の動作を前に
  • あとは変更する

Invertse Kinematics

  • Inverse Kinematics 2D (Script)
  • 肘がうしろに曲がってしまう
  • 最大角度と最小角度を指定すると行ける
  • 3点: End Transformを指定することでそれ以上は曲がらないという指定が可能
  • Joints: 2
  • 小さな円が角度、大きな円が場所

アニメーションの記録

  • ポーズを整えて保管するだけ
  • アニメーションでソーティンググループをカエル

Animation Event

  • Override Animationにチェック
  • Cueをつくって設定するだけで追従

...

  • Polygon Collider 2D を追加
  • Hinge Joint 2D を追加. 間接のナビゲーションを追加できる
  • キャラクターの造形を保ったまま、当たり判定ができる

DL

Session5. Unity for New ニンテンドー3DS

Hiroki Omae @Unity technology

New ニンテンドー3DS

  • 他のハードとだいぶ違うので慎重に調査 (8ヶ月ぐらい)
  • iOS/Androidアプリをいくつか選んで移植可能性を検討した
  • 8割以上はそのまま移植で動作

New じゃないニンテンドー3DS

  • メモリ/CPUからUnityをつかって開発するのはかなり制限あり
  • iOS/Androidのアプリでは、3割くらいは可能性あり

リリースプラン

  • 2015 夏: 任天堂に提出可能なβ版をリリース予定 / 一部close になる可能性あり

トピック

  • 調査研究、考え方
  • 移植開発した話
  • 実機デモ

調査研究

  • モチベーション: みんなのゲームがどのくらい動くか?
  • 方法: 市場にでているアプリを調査. メモリ使用量やCPU使用率などチェック
  • ハードのパフォーマンスを比較検証
  • UnityGameJapanで扱ってるゲームを実際に移植

はじめ

  • BlueScreenにキューブを出す
  • テクスチャ貼ったQube
  • Scriptのサポート
  • ..

サンプルプロジェクトで検証

  • 2D/3Dのサンプルを移植 (platformerとか)
  • key入力とか、シュミレーション

Robot Invador

  • ねじ巻きナイト2
  • WiiU 版を Unity Games Japanで担当

3DSへのゲーム移植の課題

  • メモリ少なめ
  • シェーダ制限
  • 画面が2つ / 単眼3D
  • AOTのみのサポート (JITはつかえない. iOSとおなじ)
  • Unity5の自動アップデートでうまくいった

テクスチャの最適化と調整

  • 400x240 (3DS)では不要
  • 見た目の悪いテクスチャサイズをあげる
  • 50% - 60%のメモリ容量に

mandelbrot benchmark (CPU)

エンジンの最適化: Z-buffer on / off

  • pixel shaderの処理がない
  • z-buffer必要ないゲーム (2D/2.5D)はいい感じ
  • ちょい早

3画面: 上両眼 + 下画面 で 60fps

  • Profilerでチェック
  • 1位. Idol Threadでがら空き
  • IL2CPPがすごい

Programmable VertexShaderはあり. Programmable FragmentShaderはなし.

  • ShaderLabをつかった一般的な解決方法をチャレンジ中
  • 固定ピクセルシェーダーに変更

スクリプト

  • IL2CPPにのみ対応
  • IL2CPP = AOT
  • JSONのライブラリ: テンプレートで型を動的にとってきて動的にコード生成などJIT機能はつかえない
  • iOSと同様
  • IL2CPPすげぇ

スクリプト対応: ねじ巻きナイト2

  • if (UNITY_IOS) => #if (UNITY_IOS || UNITY_N3DS)

audio

エンジンの最適化

  • ゲーム自体は毎フレーム再描画が必要
  • UI描画は重いので、不要なときに特定の画面を描き直さないオプションの追加を検討

2D モードの改善 (今後)

  • 3D volume は off にできる
  • Anti-alias 処理など

まとめ

  • 2015夏頃にリリース予定 (ベータ版)
  • middle rangeのスマートフォンターゲットのゲームなら一考の価値あり
  • GameEngine は DogFoodingが必要なのでUGJでサポート

QA.

  1. Native Pluginはやる?

  2. IL2CPPなので、c++ソースコードをぶちこめば、一緒にビルドする

  3. Enlighten support?

  4. static light mapはsupport

  5. PBRはむり

  6. Network support?

  7. TCP only

  8. UDP is not
  9. UNet がサポート予定

  10. Local Network support? (adhoc networking)

  11. Native pluginでそのまま使え.

  12. betaはマイナー機能のサポートしない.

  13. Build time?

  14. IL2CPPが時間食う

  15. 5min

Session6. Asset Store マニアックス

  • FreeLance x2

Unity Asset Press

  • Asset紹介カタログ (本)
  • AssetStoreのオススメを多数紹介

アセットが超特価になるプラン Level11

デモゲームを交えたオススメ

縦シューティング

BIG Environment Pack [$50]

  • 地形とか、家とか、skyboxとか
  • 中世風

Origami Pack [$2]

  • 折り紙で作られたオブジェクト
  • 蝶、鶴...

Sky5X One [free]

  • skyboxに設定するテクスチャ
  • 朝夕、夜
  • よさそう

Elements [free]

  • 50 effect
  • 爆発、雷とか

Simple Particle Scaler [$2]

  • パーティクルの大きさを変更する

Free SciFi Fighter [free] HighRes Shuttle Class Starship [free]

  • 便利

iTween Visual Editor [free]

  • 2秒かけて250までみたいな.

Computer Font Pack [free]

  • 無料
  • fontがいっぱい

少まとめ

  • ゲームのモックとして作るにはいいのでは?

アセット事例

ホラーゲーム

フィールド: 3D建物

  • Church & Graveyard [$45]
  • ホラーテイストでいい感じ

Character

  • Unity-chan! model [free]

Cartoon Zombie [Sample][free]

  • animationつき
  • 走ったり徘徊したり

Female Walk Animset [$25]

  • 腰を利用した女性らしいモーション

TakeDown Animations [free]

  • CQC

Parkour & Acrobatics Animation Pack [$25]

  • Assasines creedっぽい

Footsteps SFX Ultimate Pack [$15]

  • 水たまり、鉄板、カーペット

Effect

Simple Torch [free]

  • クオリティ高い、火加減調整可能

MEGA 504+ Fire&Fog Magic...

  • 火とか霧...

debug log

Live Console [$15]

  • 多機能
  • ログの検索. 注釈など

カメラワーク

Camera Path Animator [$35]

  • カメラワーク設定アセット
  • パスをつなげていくだけで簡単にカメラワークが設定できる
  • べんりそう
  • パスにそってキャラの移動に合わせて移動とかも簡単

ImageEffect

Bloom, 魚眼レンズ...

Colorful - Image Effects [$40]

  • モバイルでもつかえる
  • アナログテレビ ー霜がついたエフェクト
  • heatmap
  • 水に入ったゆらぎ
  • ...
  • vintageで古めかしく

大手開発会社におけるAssetの活用

interview: Colopha / SQ

NGUI: [$95]

  • アニメーションがつけやすい
  • デザイナーがデザインつけやすい
  • LiveConsole [$15] (Colophla) / Editor Console Pro [$25] (SQUAREENIX)

AI for mecanim [$70] A* Path finding Project Pro [$100]

  • 企画の人がAIをいじったり

Effectたくさん買ってる

  • Shuriken Magic Effect Pack [$35]
  • 教材としてつかっている

Unity導入のメリット

  • 仕様書が不要に
  • 動く仕様書: programmerいらずでmockができる
  • DesignerもUnity上で作業

Assetに学ぶ

  • Effect Assetを購入して理想エフェクトの参考に
  • 完成プロジェクトからゲーム実装方法を学ぶ

Unity Asset Press本購入してね