More Related Content
Similar to UnityでUI開発を高速化した件 (20)
Editor's Notes
- アジェンダ
- 入社時からUnityをさわりはじめ現在3本目のUnity製スマホゲームを製作中
LT初登壇なのでおてやわらかに…
- 株式会社グレンジで開発中のアクションタイトル
先日CBTを行いリリースに向け絶賛開発中
現在事前登録中なので是非公式サイトをのぞいてみてください
- 3Dのキャラを操作し360度飛行しながら4対4で対戦を行うアクションゲーム
様々なキャラクターや多彩なスキルを使用しマルチプレイの対戦を行う
本日は本ゲームのUI開発についてお話させていただきます
- そもそもなぜ高速化が必要だったのかという点について説明
- 直近のキックフライトのイベント
先日開催したCBTに加えトーキョーゲームショウやニコニコ闘会議への出展など短期のスパンで大きいイベントが立て続けにあった
- ユーザにお披露目したTGSまではゲームの本質的な部分(ゲームルールやバトルまわり)の改修に力を入れており闘会議までは新キャラの追加、CBTまでにはAPIやデータの疎通実装など短期間で重要な機能の実装が必要だった
闘会議までは出展ということもありバトルができるところまでで大丈夫だったがCBTではゲームを通しての一連の機能が必要になった
- 出展でゲームの本質部分であるインゲームでダイレクトに面白さを感じてもらうためそちらに力をさきたい状況だった
UIの実装に手間取らない環境整備をしておかないと間に合わないというスケジュール感
- ただUI実装は得意とするところであったので任せてくださいという感じで進めた
何をしたかについて3つのポイントを伝える
- Unityのデフォルト機能で補えないコンポーネントのスクリプト作成を行う
- 大抵のゲームでは要件が不明でも必要な機能が想像できる
仕様展開が行われる前に先回りして実装することができる
これらの機能は資産化するので会社として作っておくことが望まれる
先回りで浮いた時間を使って要件によって必要なものを作る
- アニメーションやSEなどプロジェクト固有となりそうな処理は基盤的な機能に含めると別の箇所で使用するにも汎用性がなくなる
余計な機能を増やして作る側も使う側も時間をとらないように必要最低限のものをつくり継承先で機能を増やす
Androidのバックキー対応などでもこのような基底機能の存在は開発速度を上げるために重要
- デザインの数だけ実装が必要
- 左がフォントのレギュレーション、右がカラーのレギュレーション
他にも多々あるがわかりやすい例としてこの2つを載せた
デザイナに数を絞り整えていってもらう作業
決まってしまえばプログラムで定義できることが多いので実装もある程度安心できる
- デザイナに伝えて理解しておいてもらったほうが良いUnityの機能
実際に使用する素材の書き出し方に関わるのでデザイナにオリエンして理解してもらった
- 本件で必要になった共通化できるオブジェクト
ゲームを作っていれば同じような感じになると思う
- 考慮すべきなのはレイアウトさせる箇所を減らすという点
プロジェクトによってエンジニアがレイアウトしたりデザイナがレイアウトしたりフローは様々だと思うが職種の違いは関係なく人の違いによってレイアウトの精度のブレは出てしまう
ここをPrefabでカバーできる設計を目指していくと良い
- 以前はレイアウトさせる箇所を減らす設計を目指すためにプログラムでひと手間必要だったがUnity 2018.3から追加されたNested Prefabでやりやすくなったと感じる
- シンプルなダイアログを作成する場合の例です
- これはダイアログの背景
親に配置するだけでタイトル位置と白い部分のレイアウトが担保される
- 閉じるボタン
ダイアログ下部からの距離を指定している
- ダイアログ内ボタン
ダイアログ下部からの距離を指定している
- AnchorがつけられたPrefabを配置していき数値をいじることなくレイアウトを完成させる例
レギュレーションを決めたうえで部品を作っておくと配置するだけでレイアウトできる
以前は調整を反映させるためにprefabの参照をもって生成するプログラムを書いたりしていたが
Nested Prefabがあることで細かな調整も一斉に反映できるようになった
これも高速化につながった
- 以上3点がUI開発を高速化させるために行った3つのこと
主にレギュレーションの整備、共通化をキーワードに実装コストを下げていく方針で高速化を行った
エンジニアだけで完結しないので骨が折れる作業だが
これらの項目はUI実装のクオリティアップのために高速化にかかわらずやったほうがいいこと
- エンジニアがプログラムで意識することがある共通化のようなデザインパターンはUI実装でも同じだと思っている
同じものを使い回すことでバグのリスクを減らせるし実装コストも減らせる
またレイアウトはデザイナ視点からでしか評価しづらいところなので狙い通りに行かないことがあるのも吸収でき
UXの向上につなげることができる
- レギュレーションの整備はUXにも繋がる
学習コストやインタラクションのブレがなくなることでユーザー体験の最適化を行うことができる
近年はどの企業さんもゲームのクオリティが高いのでUXの最適化は市場でいっぽぬきんでるためにも捨てがたいところだと思う
以上でまとめとさせていただきます