ミラティブ、自社ブログにてアウトゲーム部分のクラス設計について解説。クリーンアーキテクチャの要素を取り入れた、MVPベースの設計

2023.09.29
ニュースUnityプログラム
この記事をシェア!
Twitter Facebook LINE B!
Twitter Facebook LINE B!

この記事の3行まとめ

  • ミラティブが実際の開発で用いたアウトゲーム設計を紹介
  • MVPをベースに各OSSと連携した設計になっている
  • 記事中の設計方針に基づいて開発されたサンプルプロジェクトが公開中

2023年9月22日、ミラティブの技術ブログ「Mirrativ Tech Blog」にて、『ミラティブでのアウトゲーム設計の紹介』と題した記事が公開されました。

同記事は、ミラティブのUnityエンジニア 菅谷氏(@tetsujp84)によって執筆され、同社が開発する運営型ゲームにおけるアウトゲームのクラス設計について解説しています。

ゲームはインゲームアウトゲームに分割できるという思想は広く知られています。記事中では、ゲーム体験のコアであるキャラクターの操作などをインゲームの例に、キャラクターの強化やガチャ、ショップなどをアウトゲームの例に挙げています。

アウトゲームの例。キャラクター一覧画面(左)→キャラクター詳細画面(中央)→キャラクター強化画面(右)と、多数の画面と遷移から構成されるのが特徴であるとのこと(画像は公式ブログより引用)

設計方針が人によって異なるとプロジェクト構造が複雑化してしまうため、特にチームでのアウトゲーム制作においてクラス設計やルール決めは重要であるとのこと。そこで、ミラティブでは開発前に設計方針について議論したそうです。

設計方針を決めるにあたっては、MVP(Model-View-Presenter)(※)を設計のベースとしたうえで、OSS(オープンソースソフトウェア)との連携が念頭に置かれました。
※ GUI関連の実装で用いられるデザインパターン。Model、View、Presenterの3つのレイヤーに役割を分けることで、データ構造の複雑化を緩和できる

また、クリーンアーキテクチャ(※)などのソフトウェアアーキテクチャを参考にしつつ、使いやすさと複雑さを減らすことが目標に掲げられているとのこと。
※ ソフトウェアアーキテクチャのひとつ。各クラスがより低レベルのクラスに依存しないようにすることで、低レベルのクラスでの変更が高レベルのクラスに影響しなくなる

同記事では、各クラスの役割や方針、実装のポイントなどがコードとともに紹介されています。

アウトゲーム設計のクラス図(画像は公式ブログより引用)

なお、実装には以下に示すOSSが使用されています。

  • VContainer
    • DI(※)フレームワークでクラスやオブジェクトの依存関係を管理
      ※ Dependency Injection。依存関係を外部から注入することで、具象クラスへの依存を断つ方法
    • プロジェクトがDIを使用していたため、アウトゲームでも採用している
  • UnityScreenNavigator
    • 画面をページとモジュールの単位で分割し切り替えることで画面遷移を行う
  • ScreenSystem
    • UnityScreenNavigatorとの連携に特化したライブラリを作成
    • 型付きでパラメータを渡しつつ画面遷移をできるようにしたり、DI Containerに対応させている
  • UniTask
    • Taskを簡単に扱うためのOSSで通信や画面遷移など幅広く使用
  • UniRx
    • 主にViewのイベントをPresenterに通知し、MVPを実現するために使用
    • UniRxのほうがUniTaskより使い慣れていたことから採用
  • MessagePipe
    • メッセージングライブラリで、同時に存在する別の画面に更新内容を届けたい場合に使用

あわせて、アウトゲーム設計のサンプルプロジェクトがGitHubにて公開中。プロジェクトは、記事で解説されたクラス設計ルールに基づいて開発されています。

詳細は、Mirrativ Tech Blog『ミラティブでのアウトゲーム設計の紹介』をご覧ください。

ミラティブでのアウトゲーム設計の紹介|Mirrativ Tech Blogmr-imada / OutgameSample|GitHub

関連記事

「Unity ゲーミングレポート 2024」、日本語版が無料公開。Unityで開発する約500万人のデータをもとに、AI活用など5つのトピックで動向をレポート
2024.05.30
Unity開発者向け技術カンファレンス「U/Day Tokyo 2024」、7/1(月)に渋谷で開催。Unity 6の展望や最新サービスの紹介など、9講演が実施予定
2024.05.29
荷ほどきゲーム『Unpacking(アンパッキング)』に収録された効果音は14,000種以上。膨大なサウンドデータを効率よく命名・整理した方法を、Audiokineticが公開
2024.05.22
「Unity 6 Preview」がリリース。レンダリングのパフォーマンス向上、ライティング機能の強化など多岐にわたるアップデート
2024.05.03
Unity公式のパズルゲーム『Gem Hunter Match』、URPの学習などに役立つサンプルプロジェクトとして無料公開
2024.04.30
Unity上でセリフの音声合成ができる「A.I.VOICE for GAMES」でリップシンクが可能に。キャラの口がセリフに合わせて自然に動く
2024.04.26

注目記事ランキング

2024.05.23 - 2024.05.30
VIEW MORE

イベントカレンダー

VIEW MORE

今日の用語

ビヘイビアツリー(Behavior Tree)
ビヘイビアツリー AIの思考、行動をツリー状の構造図で定義したもの。およびそのシステム。挙動の優先順位や条件を定義していくことにより、複雑なAI挙動をシンプルに実現できる。
VIEW MORE

Twitterで最新情報を
チェック!