Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Unityでの開発事例

 Unityでの開発事例

新卒エンジニア向け研修でお話しました。
利用したものから社外秘情報を抜いています。

いも

May 10, 2021
Tweet

More Decks by いも

Other Decks in Technology

Transcript

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  17. 質疑応答

    View full-size slide