7
11

More than 1 year has passed since last update.

Unity・MVP設計実践~ぷよぷよを作ろう~:第1章「概要編」

Last updated at Posted at 2021-11-01

Unity設計実践の目次はこちら


はじめに

この記事では、ぷよぷよ開発において採用するライブラリや使用するUnityの機能、開発順序などについて解説していきます。

なぜぷよぷよか

有名なパズルゲームだからです。
パズルゲームは

  • ゲームの規模に比べて、ルールがある程度の複雑である
  • ゲームであるが故にそこそこ複雑な演出もある

という特徴を持っているため、MVP開発のサンプルに非常に適しています。

仕様

普通のぷよぷよです。詳しくは検索すれば出てくるので割愛。

完成品

GithubにUnityのプロジェクトフォルダを上げています。こちらから手元にcloneしてきてUnity2020.3.9f1にて実行してみてください。

Unityのバージョン

2020.3.9f1 LTS

実装順序

最も安定するMVPにおける開発順序は、M→P→Vです。
理由を挙げます。

依存関係

理論的なMVPについて、おさらいします。
「Modelは単体で存在可能な純粋な存在である。PresenterはModelのデータを論理的な画面の情報に変換する。最後にViewがUnityの仕組みに従って、Presenterの論理的な画面情報を実際の画面に変換する」
以上のことから「Modelは誰にも依存しない」「PresenterはModelに依存する」「ViewはPresenterに依存する」ということが分かると思います。
この関係から考えて、ModelがないとPresenterは作れず、PresenterがないとViewは作れないのですから、Model→Presenter→Viewの順序になるのは当然と言えるでしょう。

アーキテクチャの強制

もしも、ViewやPresenterを先に作ってしまった場合、「Modelからこのようなデータを受け取るんだろうなぁ」といった想定をしてコードを書かざるを得ません。そして、PresenterやViewの実装に引きずられたModelを作ってしまうリスクが高まります。これでは、事実上PresenterやViewに依存したModelを作ってしまう弊害を生む可能性あります。
他のプログラムが存在しない状況でModelを書けば、PresenterやViewに気兼ねをすることは不可能です。
逆に、Presenterを書くときにModelが存在したとしても問題はありません。なぜなら、もともとPresenterやViewはModelに依存するものなので、Modelを意識するのは当然だからです。

採用するライブラリ・機能

以下で紹介するものはすべてUnity Package Managerからインストールできます。

Assembly Definition Files

通称adf。C#のビルドファイル(dll)を、機能ごとに分割して出力できる機能です。
Model、View、Presenterといったレイヤーを採用したアーキテクチャにおいては非常に強力な武器になります。
詳しい使い方についてはUnity Assembly Definition 完全に理解したなどの参考文献を参照してください。

UniRx

MVPにおける通知の実装において不可欠といっていい便利ライブラリです。

Unity Test Runner

Unityにおけるテストライブラリ。ボタン1つでテストが実行できるので非常に便利です。
また、Edit Mode TestではUnity起動のオーバーヘッドなしにModelやPresenterのテストが実行できます。
詳しい使い方については【Unity】Unity Test Runner(Test Framework)入門 - インストールから基本的な使い方・注意点まとめなどの参考文献を参照してください。

DOTween

単純にTween系の便利なライブラリという点で採用しました。Viewで用います。
注意点として、何も考えずにインストールするとアセンブリが分けて出力されません。
DOTweenの設定画面からadfを生成してください。

ぷよ画像5枚セット

私が5秒で描きました。皆さんも描きましょう!
RedPuyo.jpg

フォルダ構成

Asset直下にProjectという名前のフォルダを配置します。
Asset直下はアセットストアなどから落としてきた素材が大量に並ぶことになるので、Asset直下は綺麗にしておくのがおすすめです。
Project以下にはModel,View,Presenterという3つのフォルダを用意します。
この3つのフォルダの詳しい内容についてはそれぞれの記事で解説します。

おわりに

今回は開発準備の内容を扱いました。
次回から詳しい実装についてやっていきます。

7
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
11