ミラティブ、自社ブログにてアウトゲーム部分のクラス設計について解説。クリーンアーキテクチャの要素を取り入れた、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最新情報を発信する「UNITE 2023 APAC ON-AIR」配信中。Unity 6が発表された基調講演やMuseによるプロトタイプ制作など「Unite 2023」で行われた講演がピックアップ
2023.12.01
プログラマーがUnityのUI Toolkitを学べるデモ『QuizU』が公開。複数のメニュー画面やゲームフローの管理機能を備えた、クイズゲームのサンプルプロジェクト
2023.11.28
UEおよびUnityのアセットストアやAdobeなどが、2023年のブラックフライデーセールを開催中!
2023.11.24
15th Unity Awardsの受賞者が発表。アセット部門では、FPS制作に役立つ機能を備えたアセットやテキストをアニメーションさせるツールが受賞
2023.11.22
『Unity 2023.2 Tech Stream』がリリース。モバイル端末でのGIがより低負荷で実行可能になるほか、Meta Quest 3をサポート
2023.11.20
Unityの次期LTSは『Unity 6』。AIツール「Unity Muse」「Unity Sentis」も搭載し、2024年にリリース予定
2023.11.16

注目記事ランキング

2023.11.26 - 2023.12.03
1
【2022年5月版】今から始めるフォートナイトの「クリエイティブ」モードープレイ開始から基本的な操作方法まで解説
2
『フォートナイト』で動く本格的なゲームが作れるツール「UEFN」とは?従来のクリエイティブモードから進化したポイントを一挙紹介!
3
フォートナイト クリエイティブとUEFNで使える仕掛け一覧
4
フォートナイト クリエイティブとUEFNで使える仕掛け一覧 Vol.1「アイテム系」
5
【CHALLENGE1】「クリエイター ポータル」を使って、UEFNで作成した島を世界中に公開する
6
フォートナイト クリエイティブとUEFNで使える仕掛け一覧 Vol.5「島の設定」
7
フォートナイト クリエイティブとUEFNで使える仕掛け一覧 Vol.4「ゲームシステム系」
8
フォートナイト クリエイティブとUEFNで使える仕掛け一覧 Vol.10「UI系」Part1
9
フォートナイト クリエイティブとUEFNで使える仕掛け一覧 Vol.2「ユーティリティ系」
10
【STEP2】UEFNの基本的な使い方を覚えよう
11
フォートナイト クリエイティブとUEFNで使える仕掛け一覧 Vol.7「NPC系」Part1
12
【CHALLENGE2-1】フレンドと一緒にゲームを作ろう――UEFNプロジェクトをチームメンバーとリアルタイムで共同編集する
13
フォートナイトとUEFNがv26.30にアップデート。ロビー画面が一新され、クリエイターが島ごとにロビー背景を自由にカスタムできるように
14
フォートナイト クリエイティブとUEFNで使える仕掛け一覧 Vol.10「UI系」Part2
15
フォートナイト クリエイティブとUEFNで使える仕掛け一覧 Vol.3「プレイヤー系」
16
フォートナイトとUEFNがv27.10にアップデート。プレイヤーに与える武器のマガジン内に入っている初期弾薬量を設定するオプションが追加
17
フォートナイト クリエイティブとUEFNで使える仕掛け一覧 Vol.6「チーム・対戦系」Part1
18
日産自動車、UEFNで作られたマップ『Electrify the World』を期間限定公開。EVコンセプトカーが登場する世界を楽しめる
19
『フォートナイト』で建築ビジュアライゼーション!?UEFNでオリジナルの世界観をどう作り上げたか、その手法を解説【UNREAL FEST 2023 TOKYO】
20
【CHALLENGE3】UEFNの機能「ランドスケープ」を使ってオリジナルの地形を作る
21
【STEP4-2】リスポーンとチェックポイントの仕組みを作る
22
フォートナイト クリエイティブとUEFNで使える仕掛け一覧 Vol.7「NPC系」Part2
23
まるで『マイクラ』?ボクセル地形を生み出す無料アセット「VoxelPlugin Free」で”地形を掘ったり積み重ねたり”して遊んでみよう
24
【フォートナイト クリエイティブ】ドリフトボードで駆け巡る!タイマー付きのレースゲームを作ってみよう
25
フォートナイト上にオリジナルゲームを開発・公開できるPC専用エディタ『Unreal Editor For Fortnite(UEFN)』、ついにリリース!
26
【STEP3】オリジナルのアスレチックコースを作ろう
27
「UEFN」って実際どうなの? 編集部が3時間で「みんなで遊べるアクションゲーム(?)」を作ってみた
28
フォートナイト クリエイティブとUEFNで使える仕掛け一覧 Vol.8「ゾーン系」
29
フォートナイト クリエイティブとUEFNで使える仕掛け一覧 Vol.9「建築物系」Part1
30
フォートナイト クリエイティブとUEFNで使える仕掛け一覧 Vol.9「建築物系」Part2
VIEW MORE

イベントカレンダー

VIEW MORE

今日の用語

リグ(Rig)
リグ 3Dモデルを動かす場合に、すべてのボーンを編集するのではなく、少ない編集箇所で直感的に動作などを付けるために作られたコントローラーやコントロールする仕組み。 またスケルトン自身をリグと呼ぶ場合もある。
VIEW MORE

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