ぷらこあ

ゆるふわゲームクリエイター / イベントオーガナイザーを目指してます

まべ☆てっくvol.3 Unityのお道具箱 に参加しました

概要

marv-tech.connpass.com

togetter.com

  • 参加しました(ˊ꒳ˋ*)
  • 株式会社マーベラスさん主催の勉強会です!
  • 会社独自でやってる取り組みや仕組みオープンにしてくださるのとても嬉しい…!!

うちではこうやってます!UI構築ルールとPlaymakerを使った画面遷移

資料

www.slideshare.net

目的

  • 人数増加を見越して悩まずに画面/機能を量産可能な仕組みである
  • 導入時にルールが少なく説明しやすい
  • 実装時に他の実装から真似でき、担当者が入れ替わってもパッと分かる

Playmaker + uGUI を使用した画面遷移

  • Playmaker
  • ページ構成
    • Scene入れ替え方式
    • ただし1つのSceneに対し1つのGameObjectのみを配置
      • HomeSequenceというGameObjectにてステート管理を行う
      • PlaymakerFSM + シーケンスマネージャ
  • Playmakerを使ったステート管理
    • グラフィカルなステートマシンとして利用
      • ステートの配色でグルーピングを行う等工夫
    • Playmaker上で使用するアクションは基本CallMethodのみ
  • 各ステートで行うこと
    • シーケンスマネージャに用意したメソッドをCallMethodで呼ぶ
    • UIPrefabのInstantiateや状態管理など
  • UIPrefab
    • UI要素はPrefabに格納した状態で用意する
    • UIHome / UIMenu / UIHeader … etc
  • 画面内で発火したイベントの処理について
    • 子から親にイベントを伝搬し、その結果から子に指示/

作業フロー

  • 仕様書: 企画
  • 仕様確認: 全員
  • UIPrefabの作成: デザイナ
    • UIPrefab作成用のシーンを用意し、解像度などの設定をCanvasに適応しておく
  • UIPrefab修正 : エンジニア
  • スクリプト開発: エンジニア
  • FSM開発: エンジニア

Unityパッケージ管理について本気出して考えてみた

株式会社キッズスター / もんりぃさん

導入

  • 新規プロジェクトを作る際に自作のライブラリ入れる
  • でもUniRxとTexturePackImporterに依存してるぞ
  • AssetStoreからダウンロードマネージャ開いて … めんどい!!!!!
  • 依存関係を解消してくるライブラリ作ってるよ

upm

github.com

  • npmを使用したパッケージ管理ツール
  • 依存管理の仕組みはnpmに乗っかる
  • イベントシステムはUnity向けにカスタマイズ
  • 事前準備
  • アセット群を npm publish する
  • プライベートなリポジトリ(レジストリ)で管理する
    • npm Enterprise
    • Vardaccio
  • 実行
  • npm i -S ${name-of-package} でインストールしつつpackage.jsonの生成

モバイル向けAnimation/AnimatorのTIPS

UnityTechnologyJapan 山村さん ( テラシュールブログ椿さん )

Mecanimについて

Animatorに関するTips

  • ステートマシンを整理する
    • MecanimはGUIで1キャラクターを作り込めるが複雑になりがち
    • サブステートマシンでまとめる
      • 注意: Exitに出た時に次のステートが存在しない場合、最初のステートに戻ってしまう
      • 明示的に任意のステートに割り振らなきゃいけない
    • ブレンドツリー使う
  • 日本のゲームの場合、色々なキャラがいる
    • 1体のキャラを作り込むのではなく、モーションを微調整する
    • AnimationControllerが大量にできてしまう
    • 理想はAnimationControllerを汎用的に使い回すこと
      • リグを合わせる
        • Humanoid: HUmanoid同士ならアニメーションは共有可能
        • Generic: ボーン構造が一致すれば使える
  • 基本となるAnimationContollerを作り込む
    • AnimationOverrideContollerでアニメーションを上書き
    • 注意: 構造が異なるステートマシンがあると問題になる
      • 余裕を持ったアニメーションコントローラーを作る
      • PlayableAPI を使う
        • ダイナミックにAnimationClipを実行する
        • AnimationControllerのブレンドもできる
        • Unity5.6で変更入ったので注意

パフォーマンスの話 / モバイル向けのあれこれ

  • モバイルには色々制約がある
    • 100MBの制限
      • ダイナミックに配信する仕組みが必要
    • IO/CPU/GPUが遅い
      • ロード時間の短縮とGPU負荷の軽減が必要
      • 削れるところは削りましょう
  • ApplyRootMotionを使用しない
    • 無駄なCPUを結構使う
    • AnimationContoller内で合成するLayerを減らす
    • Transion を増やしすぎない
      • PlayやFadeで代替する
  • AnimatorのついたGameObjectを非アクティブにしない
    • Animatorが持つメモリやStateMachine等を破棄する
      • 再度有効にした時に再構築される
    • Animatorコンポーネントをdisabledにする
  • 見えないアニメーションは再生しない
  • そもそもSkinnedMeshRendererを減らす
    • qualityもできれば減らす
  • Animationのキーフレームを減らす
  • OptimizeGameObjectを使用する
  • AssetBundleでAnimationをUnloadしないで使い回す

LTメモ

Hot Reloading on Unity Editor

資料: Hot Readloading on Unity Editor

技術書展へのお誘い

pub.fieldnotes.jp

techbookfest.org

techbookfest.org

Unityで『ニーア オートマタ』の義体システムっぽい機能を作る

  • UnityとNCMBで作る話

qiita.com

使ってみようTimeline

tsubakit1.hateblo.jp

www.shibuya24.info

nn-hokuson.hatenablog.com