本記事は、サムザップ Advent Calendar 2019 #2の12/19の記事です。
#はじめに
株式会社サムザップでUnityエンジニアをしている佐藤です。
主に新規開発をしています!
ということで、今回は自分が今のプロジェクトで試している、みんながUnityを触りやすい環境づくりについて書いていきます。
ここでいうみんなというのは、エンジニアのみならずプランナー、デザイナーも含めたプロジェクト全体の人たちという意味です。
#なんでこうしているか?
色々なプロジェクトを経験してきて
- エンジニア向けに依頼や指示書を書くより各自でUnity触れた方が効率がよい(はず)
と思うことが多かったです。
なので新しいプロジェクトでは、みんなが気軽にUnityを触れるようにしたいなーと。
ただ最近のプロジェクトは規模も大きく、なかなか取っつきづらくもあります。
しかしコミュニケーションコストを減らして効率化して、みんなハッピーを目指すのがエンジニア的な正義かなと思い、今回のプロジェクトでは色々な業種の人たちが気軽に触れるように色々と試しています&普段から気をつけていることをここに書いていこうと思います。
#アクセスしやすく
Assets以下に色々なフォルダがそのまま置かれていると、初見で辛くなってきます。
またあるアセットを探すのにディレクトリがAssets直下に全て置かれていると、けっこうわかりづらいです。
なのでなるべくなるべくアクセスしやすく、Assets以下は整理して、見やすい構造を心がけています。
Createメニューの拡張
プロジェクト独自のボタンやImageコンポーネントなどはCreateメニューを拡張してアクセスしやすくしています。これでプレハブを探したり、Imageコンポートネントを貼り付けるたびにraycastTargetのチェックボックスを外したりしなくてすみます。
カラーやフォントサイズなどの定義
カラーはよく使う色を、フォントサイズなどもあらかじめ定義しておいて、カラーパレット上で確認できたり、インスペクター上で直接設定できるようにしています。1つのところに定義してあるので、変更も簡単にできますし、いちいち頭を使わなくてすみます。
ディレクトリ構造を整理
なんでもかんでもAssets以下に置かないようにしています。
- 外部アセットはExternalAssets以下に
- デザイナーが編集している項目はCreative以下に
- アニメーターやアニメーション、画像素材などはDatas以下に
こうすることで、パッと見で、すぐに理解できるようなディレクトリ階層にしています。
#演出とロジック、個別に確認できる機能
ゲーム上の演出とゲームを行う上でのロジックを個別に確認できるように実装しています。
###演出の確認方法
実機でもEditorと同じように確認できるように、デバッグシーンを用意しました。
そこでは以下のようなことができます。
- 各演出の確認
- Timelineを用いた演出の編集
- 一時停止や再生スピードの変更、補助線などの機能
###ロジックの確認
Editor拡張を用い、データを入力してロジックを呼び出して、結果を出力するシミュレーション機能を用意しました。
- ScriptableObject化したデータを編集することで、色々なパターンを試せる。
- 結果の詳細なログをtxt形式で保存。全体ログから個別ログまで出力。
- シミュレーションのハイライト情報をUnityEditor上に表示。
また実際のゲーム画面でも、この2つを利用して進行するようにしました。
こうすることでプランナー、デザイナーそれぞれがお互いを意識することなく、レベルデザインや演出を作り込むことができます。
#Nested Prefabを活用する
これは複数人で作業する上で非常に強力だと思います。
まず汎用的な部品は基底となるprefabを作り、各シーンにはその派生となるプレハブを置いています。
基底となるprefabにスクリプトをアタッチしておいて、デザイナーさんやプランナーさんが派生先のprefabにパラメータを設定する、配置する、振る舞いを与える、というような使い方をしています。こうすればお互いの作業が競合することがないので、非常に便利です。
ただ派生先のprefabだけでは構造を変更できない点は注意が必要かなと思います。つまり、あまり複雑な構造のprefabのvaliantを作成しても、結局元のprefabをいじらないといけない、という事態になることがありました。
#1機能1シーンの原則
1つの機能を1つのシーンで実装することで、単体での起動とすぐに各機能を確認できるようにしています。
またPrefabが必要以上に大きくなりすぎないという利点もこの中には含まれています。
そのシーンをひらけば、すぐにその機能を確認できるので、例えば
- デザイナーさんがUIを調整する。
- プランナーさんが各シーンの遷移先を変更する。
- 試しにエフェクトを導入してみる
ということを簡単にできるようにしています。
#小さい単位でのスクリプトの作成
プランナーさんやデザイナーさんの中には、簡単なC#スクリプトならへっちゃらという人もいます(すごい!さすが!)。なのでシステム周りの複雑な部分はエンジニアが、表面的な実装はプランナーさんが行うということもやっています。そのために小さい単位の演出的なスクリプトを再生できるようなシステムを作りました。
#おわりに
現在進行形のプロジェクトで、なかなか具体的なことは言えず、わかりづらくて申し訳ないです・・・。
ただスマートフォン向けゲームも日々進化していって、プロジェクトの内容もどんどん大きくなっていきます。
放っておいても勝手に複雑になっていくので、なるべく誰にでも扱いやすいものを目指しています!
明日は@yoshihiko_kさんの記事です。