メガ Unity ユーザーミート
     アップ 2012


 Unity Technologies Japan様開催
         2012/12/21 (金)
メガ Unity ユーザーミートアップっ
           て?


• Unityユーザーが集まり、実用的な講演を
  聞く
• ユーザーがミートアップする
• Unityグッズをふんだくる

       という会合です


                 あんまりミートアップする空気じゃなかった気がする
                 私がシャイなだけか
講演内容
Unity4移行ガイド



• Unity3.5系からUnity4で一部仕様変更等が
  あった
• 移行するうえでの留意点を解説
3.5との併用
• Macの場合
 – 既存のUnity3.5をリネームしよう


• Windowsの場合
 – インストール時に別名を指定しよう


• プロジェクトの保存場所は変えよう
 – アップグレードすると戻せない・・・
 – 混在すると混乱する・・・
ライセンスの返却


• Unity4からライセンスの返却ができるよう
  になった!
 – ManageLicenseからReturnLicenseを選択する
 – 今までのメールでお願いしなくてもよくなっ
   たよ!
activeの扱いが変わった
• 今までは.activeプロパティは親子関係を無視
  していた
 – 4から親がactiveでない時は子もactiveでなくなる

• activeプロパティが3つに分化
 – setActive
    activeを切り替え
 – activeSelf
    アクティブ状態の取得
 – activeInHierarchy
    親子関係を含めたアクティブ状態の取得
SetActiveRecursivityは必要なくなった!
                 たぶん
モバイル向け機能追加
• 影がモバイルでも可能に!
 – 処理はそこそこ重たい
 – Pro限定


• システムフォントが使用可能に!
 – フォントの設定をnoneにするだけ
 – リッチテキストも使用可能
Eclipse出力が正式対応
• 今まで非公式機能だったEclipse出力がつい
  に正式対応
 – 使い方は簡単でBuildSettingsでCreate Eclipse
   Project Layoutを選ぶだけ
 – Activityは毎回生成されて、上書きされるの気
   を付ける

• 細かいところは以下のサイトで!
 – https://gist.github.com/4326092
Meshも変わった
• 新たにRead/Writeスイッチが増えた
 – 指定することで大幅にメモリ削減が可能に!
   1万頂点で400~500KBが数十KBへ
 – 制限もある
   • Nouniformなメッシュでは使えない
     X軸のみやY軸のみなどの拡大縮小の事
   • スキニングできない
   • 頂点情報を実行中に変更できない
• Optimizeのアルゴリズムが変更
 – メッシュの順番をアテにしていると不具合の
   原因に
AssetのPostprocessが変わった
• 今まで動いていたものが動かなくなる可
  能性が・・・
Assetに追加                       コンバート                 Temporary


                               まだメモリ上
          OnPreprocess
                                            OnPostprocess
                                         以前は不具合でここ
                                         でPrefabに保存するこ
      OnPostprocessAllAssets               とができていた
     ここで保存するといいか
               も

AssetDataBase
                                 実際に保存
   に登録
ほかにも
• ProjectViewが1ペインから2ペインに
    –   一部では使いにくいのでは?という声も
    –   アイコンサイズを変更できるよ
    –   今までの1ペインも設定で可能に
    –   1ペインと2ペインを使い分けてもいいよ
• WWW#LoadFromCacheOrDownloadの第3引数にCRCチェックが
  追加
    – 今までのちょっと残念なバージョンチェックが改善されるか
      も!
• ライトマップ
    – 部分焼きに正式対応した!
         長大な背景へライトを焼く時間を大幅短縮!できるかも
• アニメーション
    – Mecanimが追加されたけど旧式もまだ使える
         モデルのインスペクターのRIGタブからAnimationTypeをレガシーに変更
• トポロジー
    – メッシュの描画にQuads、Lines、Pointsなど指定ができるMeshTopology
      が追加
• 詳しくはhttp://unity3d.com/unity/whats-new/unity-4.0#upgrade
ライトニングトーク #1
 猫でも分かる LWF
Unityは2Dが弱い?
• 昔はとても貧弱だった
 – NGUIなどの高機能なアセットが出てかなり改
   善された



   今回はLightweightSwfをプレゼン
LightweightSwf?
• グリー様製のUnity/HTML5向けFlash利用環境
• Flashを変換してUnityやHTML5で使用できる
• FlashのシンボルをGameObjectとして扱う事が
  できる
• FlashでUIを作成してインポートも可能
• タッチなどのイベントもばっちり
• ドローコールも節約している
• NGUIとの連携もできちゃう
• lwfsを使用して簡単変換ができるように
• ライセンスはBSDスタイル(ZLIB)
ライトニングトーク #2
実行時のためにエディタースクリ
  プティングを極めよう
• 実行時にパースとかするのはムダ
• そんなのしてたら遅い
• データミスがあっても実行時までわから
  ない
• ワークフロー大丈夫?
目標


• 使いやすい
• 管理が楽
エディタースクリプト
• 実行時に必要な理想のものを事前に作る
• 実行時に動的にデータ変更も可能


        それには

   スクリプトから.assetsを作る
.assets

•   シリアライズされたコンテナ
•   Prefabの親戚
•   AssetDataBaseから作成
•   なんでも入れれる
•   中身も実行時に見れる
OnPostprosessAllAsset


• Assetsに追加したり、変更したりしたとき
  に呼ばれる
• AddObjectToAssetを使って中身を追加でき
  る
• 最後にSaveAssetsしたら完了だよ
AddObjectToAsset注意点

• データの更新は面倒でも取り出して更新
 – 削除して再度登録はダメ
   GameObjectから参照されてるとmissingになる
• クラスはScriptableObjectを継承して作る
 – ScriptableObject#CreateInstanceでクラス生成す
   る
ライトニングトーク #3
GitHub と Git と Jenkins で幸せにな
       るドキュメント管理
Unity日本語ドキュメントオープ
         ン
• 原文が高頻度で更新されて翻訳が間に合
  わなかった・・・
 – 翻訳中のところが更新されたり・・・


ツールを導入してこの問題を解決した!
• Github
  – ご存知gitのホスティングサービス


• Git
  – ご存知分散型バージョン管理


• Jenkins
  – ご存知継続的インテグレーション
ツール導入して出来上がったフ
      ロー
• Jenkins効果で差分がわかりやすく
• 原文の変更がチケットでわかるように
  なった
  – チケットが0になると翻訳全完了!
• gitのおかげで複数人でも触りやすい
• ブランチはhttps://github.com/unity3d-
  jp/unity-docにあるよ
コンバート

本家Unity          DocWiki                     HTMLページ
                                     ダウンロー
   開発者が書                               ド
     く
                                     アップロー
          アップロー                        ド
            ド
                                                   日本語
    日本語Wiki                Jenkins
                                                 HTMLページ

                                        原文PUSH
          コンバート                          差分を
                                        チケット追
                                          加           フィード
  アサイン            PULLして                               バック
   PULL            Wikiへ                             チケット追
                                                        加

 翻訳者                       Github


          PUSH
閑話休題
SkypeBotとJenkins




SkypeボットにJenkinsの処理を命令できない
か?
Skype           Skype Bot           Jenkins


         命令
                            命令




                            開始しまし
        開始しまし                 た
          た


                              結果
         結果
Sykpeボットを使う理由
• 対話型
• ボットなら大概の事は許せてしまう
• VPNもファイアウォールも越えれる(かも)
• セキュリティもバッチリ(Skypeが大丈夫な
  ら)
• なんでもできる!
    (google検索とかもできちゃう・・・)
• AppBankGames様がダンジョンズ&ゴルフ
  を作った際に引っかかった罠や行った最
  適化などなど

 – Unityの基本で引っかかった
 – 弾道計算
 – NGUI
ライトニングトーク #4
AppBank Games 流 Unity 最適化の手
             引き
Unityの基本で引っかかった

• 重たい・・・計測してみると
 – 3000ドローコールされていた
 – 30万頂点も書いていた
 – シェーダが超リッチだった


  iPhone4Sで5FPSしか出ない!
アプローチ
• BlobShadowProjector
  – やめてボールは丸影、プレイヤは独自の処理へ
• バッチしてなかった
  – バッチした
• それでも木がバッチされない
  – nouniformだとバッチされなかったので等倍で使用
• 頂点が多い
  – 削った。15万頂点のクラブとボールは数千ポリゴン
    に・・・
• シェーダ
  – 使用シェーダを一覧できる管理ツールを作った
• 初歩的なミスが多い
  – 勉強会へ積極的に参加した
弾道計算結論



• Unityの物理演算はモバイルではまだ重た
  くて使いにくい
弾道計算が重たい
• リアルに近い挙動を目指したが重た
  い・・・
• 風の計算等でレイキャストが増大・・・
  – Physics#Raycastを削減!
    Collider#Raycastを活用
• OnCollisonStay/FixedUpdateでボールの計算
  をしていたが重たい・・・
  – ボールのStateのUpdateで計算するように変更
    した
対策

• NGUIをしょうがなく書き換えた
 – LateUpdateはアニメーション中のみ呼ぶよう
   に
• そもそもNGUIを使わない箇所も
 – ネイティブのUI表示機能を使用
  ただ、やはり調整等とても難しかった
NGUI


• ゴルフゲームはUIが多い
 – NGUIを使ってUIを作っていくことに
• NGUIを使ってるととても重たい事
  が・・・
 – UIPanelのLateUpdateが30%占有している
NGUI結論



• Unity3.5のUIは弱いので4以降に期待したい
ライトニングトーク #5
Unity と BTS を統合してみた




       お酒入りました!
Redmine?


• Redmineは有名なバグトラッキングシステ
  ム
 – BTSはバグの追跡を軸にしたプロジェクト管理
   ツール
 – バグ等をチケットという単位で管理する
• RedmineにはREST APIが用意されている
• Unity側はRedmin.NET APIを使用
 – JSONとXMLに対応している
   • しかし、そのままでは使えずJSON部分を取り除く
     事に
Redmine.NET API

• RedmineManagerを使う
 – CreateObjectにIssueを追加できる
 – NameValueCollectionに条件を指定してIssueを
   取得できる
 – 取り出したIssueはUpdateObjectで更新できる
利点は?
• テスターの手間が減る!かも
• ユーザーにバグレポートをさせることが
  できる!かも
• ほかいろいろ可能性秘めてる!かも


 ゲームとBTSを統合することででき
   ることがたくさんある!
         かも
ライトニングトーク #6
同人ゲームを Unity で作る
Unityを使う理由


• 製作時間をカットできる
• フリーでも十分高機能
• 独自データもエディター拡張したりで使
  いやすい
使用環境


• NGUI
• BishamonPersonal
  – 国産のエフェクトツール
使ってみたメリット

•   画面(シーン)ができるのが早い
•   ビルドが早い
•   情報があふれている
•   製作時間が削減できた
•   Assetが多い
•   実行時にデータを変更して確認できる
工夫


• PGとデザイナーで使用するスクリプトを
  変えた
 – デザイナーには比較的制約が尐ないJavaScript
   を使用してもらった
課題
• モデルインポートからのフローが確立で
  きなかった
• コリジョンのカスタマイズができなかっ
  た
• パッチ処理が難しい
ブートキャンプを行った

• Unity習熟度を上げる
• 3.4→3.5への移行の検証
• ミニゲームを分担で作成した
 – 各人最低1シーン
 – もし完成しなくてもパージが簡単
 – シーン遷移等の複雑な場所をPGが担当
ブートキャンプ結果


• PGよりデザイナーの方がミニゲームの出
  来が良かった
• 情報量が多いので調べれば何とかなった
• 個人でも十分作れる
ゲーム制作の部分に注力できる
ゲーム以外での利用


• ワンフェスの展示物を作った
 – 早くて手軽に作れるの便利
ライトニングトーク #7
DstAlpha で広がる表現の世界
Unity Technologies Japan様に
       寄せられたお便り
• 目が髪の毛で隠れないようにしてほし
  い・・・
• 部分的にモザイクをかけたい・・・

  DstAlphaBlendでみんな解決!
こんな合成ができる
DstAlphaBlendの使い道
• いわゆるステンシルのような使い方がで
  きるのではないか?

• 参考URL:https://github.com/keijiro/unity-
  facecensor
ライトニングトーク #8
実在の地形データを Unity で利用す
        る
実在の地図情報を使う!

• 実在の地図情報を使うと面白いのでは?
• ゼンリン等の地図情報を使うのは難しそ
  う・・・
• 国土地理院というところからお借りする
  ことに
 – 非公開個人・教育等が目的なら自由に使える
 – 商用では審査があり、有料
 – 非商用でも公開時は審査がある
使ってみる


• 地図データをグレースケールの高さの
  データとしてコンバートする
• HeightMapFromTextureを使用してTerrineへ
• 適当にテクスチャを貼り付けて完成!
考察

• Skypeボットが面白くてこちらに手が回ら
  なかった・・・
• 木や車の生成やARの使用等で面白くなる
  のでは?
• Skypeボットが面白かった
宣伝

• 女性のためのUnityハンズオン勉強会開催
  予定
 – UnityマスターのUnity男子を募集中
 – Global Game Jamとかぶっちゃった・・・
終わり



• ニコニコ生放送
 – http://live.nicovideo.jp/watch/lv119675325

メガ Unity ユーザーミートアップ 2012