メガ 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 が変わった• 今まで動いていたものが動かなくなる可
能性が・・・コンバート Temporary
実際に保存AssetDataBaseに登録
Asset に追加
OnPreprocess
OnPostprocess以前は不具合でここで Prefab に保存する
ことができていたOnPostprocessAllAssetsここで保存するといいか
も
ほかにも• 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 でクラス生成す
る
ライトニングトーク #3GitHub と Git と Jenkins で幸せになるドキュメント管理
Unity日本語ドキュメントオープン
• 原文が高頻度で更新されて翻訳が間に合わなかった・・・–翻訳中のところが更新されたり・・・
ツールを導入してこの問題を解決した!
• Github–ご存知 git のホスティングサービス
• Git–ご存知分散型バージョン管理
• Jenkins–ご存知継続的インテグレーション
ツール導入して出来上がったフロー
• Jenkins効果で差分がわかりやすく• 原文の変更がチケットでわかるように
なった– チケットが0になると翻訳全完了!
• git のおかげで複数人でも触りやすい• ブランチは https://
github.com/unity3d-jp/unity-docにあるよ
本家 Unity DocWiki HTML ページ
開発者が書く
コンバート
Jenkins日本語Wiki
アップロード
コンバート
日本語HTML ペー
ジ
アップロード
Github
原文 PUSH差分を
チケット追加 フィード
バックチケット追
加
翻訳者
アサインPULL
PUSH
PULL してWiki へ
ダウンロード
閑話休題
SkypeBot と Jenkins
Skypeボットに Jenkins の処理を命令できないか?
Skype Skype Bot Jenkins
命令命令
開始しました開始しまし
た
結果結果
Sykpeボットを使う理由• 対話型• ボットなら大概の事は許せてしまう• VPN もファイアウォールも越えれる ( か
も )• セキュリティもバッチリ (Skype が大丈夫
なら )• なんでもできる!
(google検索とかもできちゃう・・・ )
• AppBankGames 様がダンジョンズ&ゴルフを作った際に引っかかった罠や行った最適化などなど
– Unity の基本で引っかかった–弾道計算–NGUI
ライトニングトーク #4AppBank 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 以降に期待したい
ライトニングトーク #5Unity と 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 よりデザイナーの方がミニゲームの出来が良かった
• 情報量が多いので調べれば何とかなった• 個人でも十分作れる
ゲーム制作の部分に注力できる
ゲーム以外での利用
• ワンフェスの展示物を作った–早くて手軽に作れるの便利
ライトニングトーク #7DstAlpha で広がる表現の世界
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