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

関連記事

UIと3Dシーンを異なる解像度で描画できる。Unity用オープンソースライブラリ、サイバーエージェント「コアテク」がリリース
2025.12.02
Unity製ゲームにDiscord機能を組み込む方法を学べる。「Discord Social SDK」の無料学習コンテンツ、「Unity Learn」で公開
2025.12.01
クロスプレイにも対応した最大32人での対戦ゲーム『Sonic Rumble』の開発事例がUnity公式ブログで公開。モバイル環境でも安定したパフォーマンスを実現する手法を紹介
2025.11.27
Unityのエンジン開発最高責任者Adam Smith氏に訊く、2026年を見据えた「Unity 6.3」開発構想とは【メールインタビュー】
2025.11.27
「Unity 6.3」正式版、2025年12月にリリース予定。さらなるレンダリング機能強化などが施されたLTS版
2025.11.19
Epic GamesとUnityがパートナーシップを締結!2026年より『フォートナイト』でUnityゲームを公開可能に。またUnityの決済管理システムがUEをサポート
2025.11.19

注目記事ランキング

2025.11.28 - 2025.12.05
VIEW MORE

連載・特集ピックアップ

イベントカレンダー

VIEW MORE

今日の用語

レンダリング(Rendering)
レンダリング コンピューターグラフィックスにおける、各種データ(3Dモデルなど)をプログラムを用いて計算し、画像として表示すること。レンダリングを行うプログラムをレンダラー(Renderer)と呼ぶ。
VIEW MORE

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