i-school - 2DタイルマップRPG 設計を考える

2DタイルマップRPGの設計を考える


 Unityのバージョンは2019.4.xf1、あるいは2020.1.xf1 以降のバージョンにて製作を行う前提です。
 
 ゲームのジャンルは2Dゲーム、PC、あるいはスマホで遊ぶRPG、アクションRPGゲームです。
アドベンチャーゲームにも利用できます。

 基礎設計が出来上がれば、あとはモデルを自由に差し替えたり(キャラ以外のものに変更)、ステージ用の背景を変えたり、
新しいルールや機能を追加していくことでオリジナルアプリとして製作することも出来ますし、最終的にはポートフォリオとして頂くことも出来ます。

 少なくても以下の内容について、詳細な設計を考えていく必要があります。

・ゲーム性(ゲームシーンとCanvasでゲームを製作する、快適な操作、など)

・画面のデザイン(UIの配置、ゲームの世界観に沿ったUIのデザイン、など)

・必要なシステム・機能(移動方向と移動アニメーションの同期、アクションボタンによるコライダーの感知、カメラの制御、など)

・1つプレファブからの異なる NPC を作成する方法(プレファブとデータベースの利用方法、など)

・演出(DoTweenによるアニメーション、画面のエフェクト、など)

・ゲームのサイクル(ゲームの流れ、追加要素を設計して実装する、など)

 それでは1つずつ設計を行っていきましょう。


・ゲーム性

1.ゲームシーンとCanvasでゲームを製作する


 2Dのトップビュー型のゲームですので、今回はゲームシーンとCanvasとを組み合わせて製作するようにします。


2.快適な操作


 まず最初は PC のキーボードにて遊ぶことを念頭に置き、シンプルな操作で快適に遊べる設計を考えます。

 1.十字キー(AWSDキー)によるプレイヤーキャラの移動
 2.アクションボタン(任意)によるプレイヤーキャラのフィールド画面でのアクション(NPC との会話、調べる)
 3.ステータス表示ボタンによるアイテムインベントリの管理画面の表示/非表示

 上記のような挙動のシステムを実装する手順を考えます。


 

・画面のデザイン

1.UIの配置


 ベース部分では UI の配置はありませんので、こちらは発展編にて学習することになります。
仕様として検討している情報のうち、常にゲーム画面に固定して表示しておきたい情報と、そうではない情報とを精査して決定しましょう。
色々なゲームを参考にしながら、どの部分にどんな情報があれば便利なのか、邪魔にならない場所なのか、という視点で考えながら設計しましょう。


2.ゲームの世界観に沿ったUIのデザイン


 各画面のUIは常にゲーム中表示されていますので、そのデザインや、文字に使用するフォントの種類が見にくかったりするとユーザーは疲れてしまいます。
世界観に凝ったデザインもよいですが、見やすさ、読みやすさも一緒に考えて、バランスを保ちましょう。
 

必要なシステム・機能(移動方向と移動アニメーションの同期、アクションボタンによるコライダーの感知、カメラの制御、など)

1.移動方向と移動アニメーションの同期


 プレイヤーキャラの移動に際して、キャラが右方向に移動する際には、移動用のアニメーションも右方向を向いて歩いているアニメーションに切り替える必要があります。
この制御を BlendTree とスクリプトを利用して設計ロジックを考えます。


2.アクションボタンによるコライダーの感知


 アクションボタンを押すたびに、プレイヤーキャラの向いている方向に対して Ray を発射してコライダーとの接触を判定します。
その結果を受けて、何らかのアクションが発生するのか、発生するとしたらどのアクションになるのかを判定する処理を考えます。


3.カメラの制御


 プレイヤーキャラの移動に合わせてカメラを追従させて、常に画面の中央にプレイヤーキャラが映るようにします。
ただし、ゲーム画面の端まで移動した場合にはカメラの移動を止めて、製作されていない画面を映さないように制御を行います。


1つプレファブからの異なる NPC を作成する方法(プレファブとデータベースの利用方法、など)


 NPC を生成する場合、用意した NPC の数だけプレファブを用意する方法もありますが、
ここではすべての NPC を個別に作成するのではなく、元となるプレーンな NPC 用プレファブを1つ用意しておいて、
自動生成したあとに、各 NPC しての役割・ふるまいを与えられて画面に配置されるような設計にします

 そのために必要なデータベースを作成する部分から学習を行います。

 プレーンな NPC を自動生成する
   ↓
 用意された情報を元に、NPC の画像、名前、会話のテキストなどを自動で設定し、「どんな NPC であるか」というふるまいを、その時に決める

 この設計は非常に重要な考え方になります。この手法を覚えることで同じ処理をアイテムや敵に対しても応用が可能なるためです。
例えばアイテムが100個あるとした場合、100個分のプレファブを1個ずつ作るのか、あるいは1つのアイテム用のプレファブを利用して
100個のアイテムとして自動的に振る舞うようにするのか、どちらの方が管理しやすく、作りやすいか考えてみてください。


演出(エフェクト)

1.DOTweenを使用してアニメーション演出をする


 DOTween(ドットゥイーン)とは無料アセットの1つで、広く使われているTween(トゥイーン)系のアセットです。
Tweenとはゲームオブジェクトの途中経過情報を補間して表現することを言います。
例えば、Aというゲームオブジェクトが現在の地点から別の地点に移動するに際し、その移動する間の情報を補間して表現することが出来ます。
この補間表現機能を利用することにより、様々なアニメーション演出を実装出来ます。

 またDOTweenには、この機能が終了するタイミングを待って別の処理を呼ぶことや、途中で補間処理を中断したりといったことも出来ます。
Transformコンポーネントに対しての補間機能が多くありますが、それ以外にも使用方法は多岐にわたります。

 今回は、会話ウインドウを徐々に表示して、徐々に非表示にする処理や、
文字を1文字ずつ表示する処理などにこの DOTween の機能を利用しています。


2.画面のエフェクト


 画面をフラッシュさせたり、暗転させたりといったものだけではなく、キャラクターをアクションさせたり、画像を一瞬だけ大きくしたりなど
画面を通じて行える演出はたくさんあります。これらは場面に応じて適した内容のエフェクトを適宜いれていくことで、ゲームの臨場感や没入感が変わってきます。
 
 やりすぎず、少なすぎず、バランスを見ながら考えて実装しましょう。

 今回は発展編で学習予定です。


ゲームのサイクル

1.ゲームの流れ


 ロールプレイングゲームであれば、フィールド画面を移動して、バトルを行って、というように
ゲーム内での処理の流れが決まっています。これをすべて書き出して、どの部分の処理と処理がつながっているかをしっかりと考えてから
ゲーム全体の流れを作成していくようにします。

 ゲームの設計・仕様、それを実装するためのロジックを考えることが非常に重要になります。
そのため、スクリプトを書くのは最後になります。設計などが完了していないうちに書き出してしまうと修正を余儀なくされるためです。


2.追加要素を設計して実装する


 上記の内容をふまえて、ベースとなるシステムに追加するべき設計を行い、自分で考えた機能を実装してみましょう。



 設計の項目については、以上になります。詳細については実装する際の手順内にて説明を補記していきます。
また、これら以外にも用意するべきものがあるのであれば、それらも考えておきましょう。


 以上でこの手順は終了です。

 => 次は 実装手順を考える です。