Slide 1

Slide 1 text

Unityでの開発事例 2021/04/22 井本 大登

Slide 2

Slide 2 text

自己紹介 ● 井本大登(imo) ● https://adarapata.com ● Unityクライアントエンジニア ● テストとかDIとかの話をよくします ● ガルパン

Slide 3

Slide 3 text

アジェンダ ● Unity開発事例 ● Unityでの開発で考えること

Slide 4

Slide 4 text

開発事例 社外非公開情報なので見せられないよ!

Slide 5

Slide 5 text

チームメンバーは大体Unityを触る ● エンジニアはもちろん ● デザイナも企画もUnityを使う ● 「リソースを作ったのでUnityに追加してください」というフローはない(多分) ● 自分で作って自分で確認するのが一番早い

Slide 6

Slide 6 text

2D 3D C# Scripting Sound Timeline UI Unityの機能を使って各メンバーが開発を行う

Slide 7

Slide 7 text

エンジニアがやっていること ● コンテンツを作る ● コンテンツを作れるような仕組みを作る ● 効率的に作業できるような自動化

Slide 8

Slide 8 text

2D 3D C# Scripting Sound Timeline UI プロダクトを作りやすいようにカスタマイズしていく ステージ エディタ ファイル チェッカー 実機 デバッガ

Slide 9

Slide 9 text

ex.井本が主にやっていること ● アウトゲーム全体の基盤システムの作成 ○ 画面遷移の仕組みとか ● エンジニアが高速に開発できるような整備 ○ 開発ルールなどの策定 ○ テストコードの導入でコード品質の担保及び向上 ● 機能開発 ○ ゲームとしてこんなのがほしいとか

Slide 10

Slide 10 text

Unityでの開発で考えるべきこと ● 統合開発環境の強みを活かす ● みんなでUnityを触るということを理解する

Slide 11

Slide 11 text

統合開発環境である強みを活かす ● 複数の職能の人たちが共通言語で会話できるのは開発効率がよい ○ Prefabを触ってください、Sceneを確認してくださいで伝わるのはよいこと ○ 専門領域ごとのUnity知識が共有できるとチーム全体の糧になる ○ エンジニアがUI組んだりバランス調整したってよい ● 一緒にモノを作るという環境を作りやすい ○ 目の前でUI作って目の前でコードを直して目の前でデータを修正する ○ 一緒に作るのが一番認識の齟齬と手戻りを抑えられる ○ 一体感を得られることはプロダクト開発で重要

Slide 12

Slide 12 text

みんなでUnityを触るということを理解する デザイナがUIレイアウトを編集し、プランナーがキャラクターのデータを調整することが常に 行われる世界。 PrefabやSceneに素朴にコンポーネントをアタッチしてコードを書いていくと、同一のファイル への変更差分が発生してコンフリクトが起きることもままある。

Slide 13

Slide 13 text

Player.prefab レイアウト修正 コード修正 バランス調整 無理無理無理無理 衝突

Slide 14

Slide 14 text

適切なレイヤリングを意識する 各職種が何をやりたいのか、そのためにはどの部分を扱えば良いのか理解し、コードを分解していく。 ● データとロジックの分割、切り出し ○ ScriptableObject、Excel、json、etc... ● 巨大なMonoBehaviourからの脱却 ○ デザイナの触りたい UI機能の領域とゲームロジックを切り分ける ○ MonoBehaviourを継承すべきかも考えるべき 最終的には責務を分けたコードの分割統治が大事

Slide 15

Slide 15 text

レイヤーを分けること ≠ 無関心でいること 「言われた通りにデータを調整できるようにしたから上手くいく」はほぼない。 相手がどのようなワークフローなのかを知らないとそもそも適切なレイヤーを切ることはできない。 ● 相手がUnityをどう使おうとしているのか理解すること ○ どの機能を使おうとしている?どんなミスが起こりうる? ○ 故にUnityの知識も大事 ● プロダクトがどのような性質なのかドメインを理解すること ○ 格闘ゲームと音楽ゲームでは設計が根本から異なる

Slide 16

Slide 16 text

まとめ ● みんなでUnityを扱う強みを活かそう ● 競合を避けるためにレイヤーを意識しよう ● レイヤーを理解するために各職種の仕事を理解しよう

Slide 17

Slide 17 text

質疑応答