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

67
メメ Unity メメメメメメメメメメ 2012 Unity Technologies Japan メ メメ 2012/12/21 ( メ )

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

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

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

Unity Technologies Japan 様開催2012/12/21 ( 金 )

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

メガ Unity ユーザーミートアップって?

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

あんまりミートアップする空気じゃなかった気がする・・・私がシャイなだけか

という会合です

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

講演内容

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

Unity4 移行ガイド

• Unity3.5 系から Unity4 で一部仕様変更等があった

• 移行するうえでの留意点を解説

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

3.5 との併用• Mac の場合– 既存の Unity3.5 をリネームしよう

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

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

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

ライセンスの返却

• Unity4 からライセンスの返却ができるようになった!– ManageLicense から ReturnLicense を選択する– 今までのメールでお願いしなくてもよくなっ

たよ!

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

active の扱いが変わった

• 今までは .active プロパティは親子関係を無視していた– 4 から親が active でない時は子も active でなくなる

• active プロパティが 3 つに分化– setActive

active を切り替え– activeSelf

アクティブ状態の取得– activeInHierarchy

親子関係を含めたアクティブ状態の取得

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

SetActiveRecursivity は必要なくなった!たぶん

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

モバイル向け機能追加• 影がモバイルでも可能に!– 処理はそこそこ重たい– Pro 限定

• システムフォントが使用可能に!– フォントの設定を none にするだけ– リッチテキストも使用可能

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

Eclipse 出力が正式対応• 今まで非公式機能だった Eclipse 出力がつ

いに正式対応– 使い方は簡単で BuildSettings で Create Eclipse

Project Layout を選ぶだけ– Activity は毎回生成されて、上書きされるの気

を付ける

• 細かいところは以下のサイトで!– https://gist.github.com/4326092

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

Mesh も変わった• 新たに Read/Write スイッチが増えた– 指定することで大幅にメモリ削減が可能に!

1 万頂点で 400 ~ 500KB が数十 KB へ– 制限もある• Nouniform なメッシュでは使えない

X 軸のみや Y 軸のみなどの拡大縮小の事• スキニングできない• 頂点情報を実行中に変更できない

• Optimize のアルゴリズムが変更– メッシュの順番をアテにしていると不具合の

原因に

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

まだメモリ上

Asset の Postprocess が変わった• 今まで動いていたものが動かなくなる可

能性が・・・コンバート Temporary

実際に保存AssetDataBaseに登録

Asset に追加

OnPreprocess

OnPostprocess以前は不具合でここで Prefab に保存する

ことができていたOnPostprocessAllAssetsここで保存するといいか

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

ほかにも• 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

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

ライトニングトーク #1猫でも分かる LWF

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

Unity は 2D が弱い?• 昔はとても貧弱だった– NGUI などの高機能なアセットが出てかなり改

善された

今回は LightweightSwf をプレゼン

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

LightweightSwf ?• グリー様製の Unity/HTML5 向け Flash利用環境• Flash を変換して Unity や HTML5 で使用できる• Flash のシンボルを GameObject として扱う事ができ

る• Flash で UI を作成してインポートも可能• タッチなどのイベントもばっちり• ドローコールも節約している• NGUI との連携もできちゃう• lwfs を使用して簡単変換ができるように• ライセンスは BSD スタイル (ZLIB)

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

ライトニングトーク #2実行時のためにエディタースクリプティングを極めよう

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

• 実行時にパースとかするのはムダ• そんなのしてたら遅い• データミスがあっても実行時までわからな

い• ワークフロー大丈夫?

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

目標

• 使いやすい• 管理が楽

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

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

それには

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

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

.assets

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

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

OnPostprosessAllAsset

• Assets に追加したり、変更したりしたときに呼ばれる

• AddObjectToAsset を使って中身を追加できる

• 最後に SaveAssets したら完了だよ

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

AddObjectToAsset注意点

• データの更新は面倒でも取り出して更新– 削除して再度登録はダメ

GameObject から参照されてると missing になる• クラスは ScriptableObject を継承して作る– ScriptableObject#CreateInstance でクラス生成す

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

ライトニングトーク #3GitHub と Git と Jenkins で幸せになるドキュメント管理

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

Unity日本語ドキュメントオープン

• 原文が高頻度で更新されて翻訳が間に合わなかった・・・–翻訳中のところが更新されたり・・・

ツールを導入してこの問題を解決した!

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

• Github–ご存知 git のホスティングサービス

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

• Jenkins–ご存知継続的インテグレーション

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

ツール導入して出来上がったフロー

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

• Jenkins効果で差分がわかりやすく• 原文の変更がチケットでわかるように

なった– チケットが0になると翻訳全完了!

• git のおかげで複数人でも触りやすい• ブランチは https://

github.com/unity3d-jp/unity-docにあるよ

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

本家 Unity DocWiki HTML ページ

開発者が書く

コンバート

Jenkins日本語Wiki

アップロード

コンバート

日本語HTML ペー

アップロード

Github

原文 PUSH差分を

チケット追加 フィード

バックチケット追

翻訳者

アサインPULL

PUSH

PULL してWiki へ

ダウンロード

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

閑話休題

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

SkypeBot と Jenkins

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

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

Skype Skype Bot Jenkins

命令命令

開始しました開始しまし

結果結果

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

Sykpeボットを使う理由• 対話型• ボットなら大概の事は許せてしまう• VPN もファイアウォールも越えれる ( か

も )• セキュリティもバッチリ (Skype が大丈夫

なら )• なんでもできる!

(google検索とかもできちゃう・・・ )

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

• AppBankGames 様がダンジョンズ&ゴルフを作った際に引っかかった罠や行った最適化などなど

– Unity の基本で引っかかった–弾道計算–NGUI

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

ライトニングトーク #4AppBank Games 流 Unity 最適化の手引き

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

Unity の基本で引っかかった

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

iPhone4S で 5FPS しか出ない!

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

アプローチ• BlobShadowProjector

– やめてボールは丸影、プレイヤは独自の処理へ• バッチしてなかった

– バッチした• それでも木がバッチされない

– nouniform だとバッチされなかったので等倍で使用• 頂点が多い

– 削った。 15 万頂点のクラブとボールは数千ポリゴンに・・・• シェーダ

– 使用シェーダを一覧できる管理ツールを作った• 初歩的なミスが多い

– 勉強会へ積極的に参加した

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

弾道計算結論

• Unity の物理演算はモバイルではまだ重たくて使いにくい

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

弾道計算が重たい• リアルに近い挙動を目指したが重たい・・・• 風の計算等でレイキャストが増大・・・– Physics#Raycast を削減!

Collider#Raycast を活用• OnCollisonStay/FixedUpdate でボールの計算

をしていたが重たい・・・–ボールの State の Update で計算するように変

更した

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

対策

• NGUI をしょうがなく書き換えた– LateUpdate はアニメーション中のみ呼ぶよう

に• そもそも NGUI を使わない箇所も– ネイティブの UI表示機能を使用

ただ、やはり調整等とても難しかった

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

NGUI

• ゴルフゲームは UI が多い– NGUI を使って UI を作っていくことに

• NGUI を使ってるととても重たい事が・・・– UIPanel の LateUpdate が 30%占有している

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

NGUI結論

• Unity3.5 の UI は弱いので 4 以降に期待したい

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

ライトニングトーク #5Unity と BTS を統合してみた

お酒入りました!

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

Redmine ?

• Redmine は有名なバグトラッキングシステム– BTS はバグの追跡を軸にしたプロジェクト管

理ツール– バグ等をチケットという単位で管理する

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

• Redmine には REST API が用意されている• Unity側は Redmin.NET API を使用– JSON と XML に対応している• しかし、そのままでは使えず JSON 部分を取り除く

事に

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

Redmine.NET API

• RedmineManager を使う– CreateObject に Issue を追加できる– NameValueCollection に条件を指定して Issue を

取得できる– 取り出した Issue は UpdateObject で更新でき

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

利点は?• テスターの手間が減る!かも• ユーザーにバグレポートをさせることが

できる!かも• ほかいろいろ可能性秘めてる!かも

ゲームと BTS を統合することでできることがたくさんある!

かも

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

ライトニングトーク #6同人ゲームを Unity で作る

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

Unity を使う理由

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

やすい

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

使用環境

• NGUI• BishamonPersonal–国産のエフェクトツール

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

使ってみたメリット

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

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

工夫

• PG とデザイナーで使用するスクリプトを変えた– デザイナーには比較的制約が少ない JavaScript

を使用してもらった

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

課題• モデルインポートからのフローが確立で

きなかった• コリジョンのカスタマイズができなかっ

た• パッチ処理が難しい

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

ブートキャンプを行った

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

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

ブートキャンプ結果

• PG よりデザイナーの方がミニゲームの出来が良かった

• 情報量が多いので調べれば何とかなった• 個人でも十分作れる

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

ゲーム制作の部分に注力できる

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

ゲーム以外での利用

• ワンフェスの展示物を作った–早くて手軽に作れるの便利

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

ライトニングトーク #7DstAlpha で広がる表現の世界

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

Unity Technologies Japan 様に寄せられたお便り

• 目が髪の毛で隠れないようにしてほしい・・・

• 部分的にモザイクをかけたい・・・

DstAlphaBlend でみんな解決!

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

こんな合成ができる

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

DstAlphaBlend の使い道• いわゆるステンシルのような使い方がで

きるのではないか?

• 参考 URL:https://github.com/keijiro/unity-facecensor

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

ライトニングトーク #8実在の地形データを Unity で利用する

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

実在の地図情報を使う!

• 実在の地図情報を使うと面白いのでは?• ゼンリン等の地図情報を使うのは難しそ

う・・・• 国土地理院というところからお借りする

ことに– 非公開個人・教育等が目的なら自由に使える–商用では審査があり、有料– 非商用でも公開時は審査がある

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

使ってみる

• 地図データをグレースケールの高さのデータとしてコンバートする

• HeightMapFromTexture を使用して Terrineへ

• 適当にテクスチャを貼り付けて完成!

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

考察

• Skypeボットが面白くてこちらに手が回らなかった・・・

• 木や車の生成や AR の使用等で面白くなるのでは?

• Skypeボットが面白かった

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

宣伝

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

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

終わり

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