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

ミラティブ、自社ブログにてアウトゲーム部分のクラス設計について解説。クリーンアーキテクチャの要素を取り入れた、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でノードエディタを作成できる公式パッケージ「Graph Toolkit」、実験的機能としてリリース。Unity 6.2 Beta/6.3 Alphaで利用可能
2025.07.19
「Unity 6.3 Alpha」リリース。Render Graphがデフォルトで有効化され、互換モードは近い将来削除される
2025.07.18
オーディオミドルウェア「Wwise 2025.1.0」ベータ版がリリース。オーディオファイル管理ツール「Media Pool」などが追加
2025.07.16
Unity 6のプロファイリング機能を解説した、Unity公式の電子書籍が無料公開。Unity 6.1で正式対応した「Project Auditor」なども紹介
2025.07.15
Unity 6のHDRPを活用した『Into the Dead: Our Darkest Days』開発事例、Unity公式ブログで解説。リアルな色彩表現とパフォーマンス向上を両立した手法を紹介
2025.07.11
Unity 6におけるURPのシェーダー・VFXを解説した公式電子書籍、日本語版が無料でリリース。公式チュートリアル動画3本なども併せて公開中
2025.07.10

注目記事ランキング

2025.07.12 - 2025.07.19
VIEW MORE

連載・特集ピックアップ

イベントカレンダー

VIEW MORE

今日の用語

エミッター(Emitter)
エミッター
  1. 英語で「放出器」「放出源」のこと。
  2. ゲーム開発においては、パーティクルを生み出す発生源のことを示すことが多い。
VIEW MORE

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