ミラティブ、自社ブログにてアウトゲーム部分のクラス設計について解説。クリーンアーキテクチャの要素を取り入れた、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上でセリフの音声合成ができる「A.I.VOICE for GAMES」でリップシンクが可能に。キャラの口がセリフに合わせて自然に動く
2024.04.26
Unityのプロジェクトをインポートできるプラグインも無料公開。3DゲームやVRアプリの開発に向いた「UNIGINE Engine」、バージョン「2.18.1」がリリース
2024.04.25
【GDC 2024】Unity Technologies講演の日本語吹き替え動画、5/8(水)より順次公開予定。Unity Japan公式YouTubeチャンネルにて
2024.04.24
UE6にはフォートナイト用の言語「Verse」が導入される?GDC 2024のVerse講演から見るアンリアルエンジンの今後
2024.04.22
Unity Technologies、HDRPを解説した無料の電子書籍をUnity 2022 LTS版にアップデート。進化した水面の表現やSpeedTreeを組み合わせたTerrainの使い方を183ページにわたって紹介
2024.04.19
Steamの「実績解除」を手軽に実装。インディーゲーム開発者のザクロスケ氏、Unity用ビジュアルノベル制作ツール「宴」のプラグインを無料公開
2024.04.16

注目記事ランキング

2024.04.22 - 2024.04.29
1
【2022年5月版】今から始めるフォートナイトの「クリエイティブ」モードープレイ開始から基本的な操作方法まで解説
2
フォートナイト クリエイティブとUEFNで使える仕掛け一覧
3
『フォートナイト』で動く本格的なゲームが作れるツール「UEFN」とは?従来のクリエイティブモードから進化したポイントを一挙紹介!
4
フォートナイト クリエイティブとUEFNで使える仕掛け一覧 Vol.1「アイテム系」
5
フォートナイト クリエイティブとUEFNで使える仕掛け一覧 Vol.5「島の設定」
6
【CHALLENGE1】「クリエイター ポータル」を使って、UEFNで作成した島を世界中に公開する
7
フォートナイトとUEFNがv29.30にアップデート。すでに公開した島をプレイできないようにする機能が導入される
8
フォートナイト クリエイティブとUEFNで使える仕掛け一覧 Vol.7「NPC系」Part1
9
フォートナイト クリエイティブとUEFNで使える仕掛け一覧 Vol.4「ゲームシステム系」
10
まるで『マイクラ』?ボクセル地形を生み出す無料アセット「VoxelPlugin Free」で”地形を掘ったり積み重ねたり”して遊んでみよう
11
UEFNで使えるプログラミング言語「Verse」のノウハウが集結。『UEFN.Tokyo 勉強会 03 Verse Night』レポート
12
フォートナイト クリエイティブとUEFNで使える仕掛け一覧 Vol.2「ユーティリティ系」
13
フォートナイトとUEFNがv29.20にアップデート。見下ろし視点でもプレイヤーキャラクターの向きを操作できるようになった
14
フォートナイト クリエイティブとUEFNで使える仕掛け一覧 Vol.6「チーム・対戦系」Part1
15
【STEP2】UEFNの基本的な使い方を覚えよう
16
フルカラー書籍「UEFN(Unreal Editor For Fortnite)でゲームづくりを始めよう!」、ついに本日発売!全国書店で好評発売中!
17
【CHALLENGE2-1】フレンドと一緒にゲームを作ろう――UEFNプロジェクトをチームメンバーとリアルタイムで共同編集する
18
『フォートナイト』で建築ビジュアライゼーション!?UEFNでオリジナルの世界観をどう作り上げたか、その手法を解説【UNREAL FEST 2023 TOKYO】
19
フォートナイト クリエイティブとUEFNで使える仕掛け一覧 Vol.10「UI系」Part1
20
【CHALLENGE3】UEFNの機能「ランドスケープ」を使ってオリジナルの地形を作る
21
フォートナイト クリエイティブとUEFNで使える仕掛け一覧 Vol.8「ゾーン系」
22
「UEFN」って実際どうなの? 編集部が3時間で「みんなで遊べるアクションゲーム(?)」を作ってみた
23
フォートナイト クリエイティブとUEFNで使える仕掛け一覧 Vol.9「建築物系」Part1
24
フォートナイト クリエイティブとUEFNで使える仕掛け一覧 Vol.10「UI系」Part2
25
フォートナイト クリエイティブとUEFNで使える仕掛け一覧 Vol.3「プレイヤー系」
26
フォートナイト クリエイティブとUEFNで使える仕掛け一覧 Vol.7「NPC系」Part2
27
【STEP4-2】リスポーンとチェックポイントの仕組みを作る
28
【STEP4-1】コース外に出たらデスする仕組みを作る
29
【STEP3】オリジナルのアスレチックコースを作ろう
30
フォートナイト クリエイティブとUEFNで使える仕掛け一覧 Vol.9「建築物系」Part2
VIEW MORE

イベントカレンダー

VIEW MORE

今日の用語

乱数
ランスウ プログラムにおいてランダムに生成される数値。アルゴリズムによって導かれ、実際には完全なランダムではないため疑似乱数とも呼ばれる。
VIEW MORE

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