i-school - 2DタイルマップRPG 実装手順を考える

設計に基づいて実装していく手順を考える


 設計については検討しましたので、次は、それをどの順番で、そのように実装していくかを考えていきます。
また詳細な仕様についても一緒に考えていきます。

 ゲームシーンが複数ある場合には、それらのシーンごとに実装していく順番を考えましょう。


<ゲームのベース部分の実装>


手順1 −Main シーンを作成−
 1.新しいプロジェクトを作成する
 2.ゲームシーン(Main)を作成する



手順2 ーアセットのインポートー
 3.アセットを Unity Asset Store よりダウンロードしてインポートする



手順3 ーTileMap 用の画像の準備ー
 4.TileMap で利用する画像ファイルを Unity にインポートする
 5.画像ファイルの設定を行い、Unity にて利用できる状態にする



手順4 −Tile Pallete と TileMap の作成−
 6.Tile Pallete の作成
 7.TileMap の作成


<プレイヤーキャラの実装>


手順5 −プレイヤーキャラの作成−
 8.プレイヤーキャラ用のゲームオブジェクトを作成する
 9.PlayerController スクリプトを作成し、プレイヤーキャラを移動させる



手順6 −プレイヤーキャラの移動アニメの作成−
10.プレイヤーキャラの移動アニメを作成する
11.Animator ビューにてステートの遷移の設定を行う



手順7 −プレイヤーキャラの移動アニメの同期−
12.PlayerController スクリプトを修正し、プレイヤーキャラの移動の方向と移動アニメを同期させる



手順8 −プレイヤーキャラの移動範囲の制限−
13.Tilemap とプレイヤーキャラにコライダーを設定して、移動範囲を制限する
14.滑らかな移動が行えるように改善を行う


<カメラの追従と追従制限の実装>


手順9 −カメラの追従制御の実装−
15.Cinemachine アセットを利用して、Player をカメラが追従する機能を実装する
16.カメラの移動範囲をゲーム画面内に収める制御を実装する


<イベントの実装>


手順10 −NPC との会話イベントの実装−
17.NPC 用のゲームオブジェクトの作成と NonPlayerCharacter スクリプトの作成をし、設定を行う
18.プレイヤーの向いている方向に NPC がいる場合に会話イベントが発生する処理を実装する



手順11 −NPC との会話イベント用ウインドウの実装−
19.NPC 用のゲームオブジェクト用の会話イベントウインドウを作成する
20.DialogController スクリプトを作成し、NPC との会話イベント時に会話イベントウインドウが表示・非表示する処理を実装する


<イベント用データベースの実装と運用管理>


手順12 ーイベント用のデータベース作成ー
21.イベント用のデータベースとして利用するスクリプタブル・オブジェクトを作成する準備を行う −EventData スクリプトと EventDataSO スクリプトを作成するー
22.EventDataSO スクリプトを利用して EventDataSO スクリプタブル・オブジェクトを作成し、会話イベントのデータを登録する



手順13 ーイベント用のデータベースの登録ー
23.DataBaseManager スクリプトを作成して、スクリプタブル・オブジェクトを管理・運用できる状態にする



手順14 ーイベント用のデータベースの利用ー
24.DialogController スクリプトと NonPlayerCharacter スクリプトを修正して、EventData の情報を参照する処理に変更する


<ランダムエンカウントの実装>


手順15 ーランダムエンカウントの実装ー
25.GameData スクリプトと EncountManager スクリプトを作成し、PlayerController スクリプトを修正して、プレイヤーキャラの移動に際してランダムなエンカウントを発生させる処理を実装する
26.Battle シーンを作成し、ランダムエンカウント時に、Main シーンから Battle シーンへと遷移する処理を実装する



手順16 ーランダムエンカウント後のシーン遷移の実装ー
27.Battle シーンから Main シーンへと遷移する処理を実装する
28.Battle シーンから Main シーンへと遷移し、エンカウントした位置にプレイヤーキャラを設置する処理を実装する


<アイテムの管理の実装>


手順17 −アイテム用のデータベースの作成−
29.アイテム用のデータベースとして利用するスクリプタブル・オブジェクトを作成する準備を行う −ItemType スクリプト、ItemName スクリプト、ItemDataSO スクリプトを作成するー
30.ItemDataSO スクリプタブル・オブジェクトを作成する



手順18 −アイテムの管理方法の準備−
31.Item プレファブを元に ItemButtonDetail ゲームオブジェクトを作成してプレファブにする
32.ItemButtonDetail スクリプトを作成する



手順19 −アイテムの管理方法の運用−
33.GameData スクリプトと DataBaseManager スクリプトを修正する
34.ItemButtonManager スクリプトを作成する



手順20 −マスターデータの抽出方法−
35.DataBaseManager スクリプトを修正する


<アセットを利用したスクリプタブル・オブジェクトの活用>


手順21 −スクリプタブル・オブジェクトのインスペクター表示の変更−
36.OneLine アセットをインポートする
37.スクリプタブル・オブジェクト用のスクリプトを修正する


<所持アイテムの機能強化の実装>


手順22 −所持しているアイテムのセーブ・ロード機能の追加−
38.GameData スクリプトを修正して所持しているアイテムの情報のセーブ機能を追加する
39.GameData スクリプトを修正して所持しているアイテムの情報のロード機能を追加し、以前と同じ所持順で並べる



手順23 −所持しているアイテムの追加・削除機能の追加−
40.GameData スクリプトを修正して、所持しているアイテムの情報の追加・加算する機能を追加する
41.GameData スクリプトを修正して、所持しているアイテムの情報の減算・削除する機能を追加する


<探索イベントの実装>


手順24 ー探索イベントの実装準備ー
42.探索用の宝箱ゲームオブジェクトの作成と TreasureBox スクリプトの作成をし、設定を行う
43.プレイヤーの向いている方向に宝箱がある場合に、探索イベントが発生する処理を実装する ーPlayerController スクリプトー



手順25 ー探索イベントの実装ー
44.EventData スクリプトを修正し、EventDataSO スクリプタブル・オブジェクトに探索イベント用のデータを登録する
45.DialogController スクリプトと TreasureBox スクリプトを修正して、アイテムの獲得を行う処理と重複して獲得できないようにする処理を実装する



手順26 ー獲得した探索イベントの一時保持ー
46.GameData スクリプトと DialogController スクリプトを修正し、探索イベントの情報を保持できるように処理を追加する



手順27 ー獲得した探索イベントのセーブとロード機能の実装ー
47.GameData スクリプト、DialogController スクリプトを修正し、探索イベントの情報をセーブする処理を追加する
48.DataBaseManager スクリプト、GameData スクリプト、TreasureBox スクリプトを修正し、GameManager スクリプトを作成して、探索イベントの情報をロードする処理を追加する



手順28 ー固定型の会話ウインドウの表示の準備ー
49.Canvas ゲームオブジェクトを作成し、固定型の会話ウインドウを表示するためのゲームオブジェクト群を作成する
50.UIManager スクリプトを作成し、NonPlayerCharacter スクリプトを修正して、固定型の会話ウインドウの表示・非表示の制御を追加する



手順29 ー固定型の会話ウインドウと稼働型の会話ウインドウの切り替え制御処理の実装ー
51.GameData スクリプト、NonPlayerCharacter スクリプト、GameManager スクリプトの修正を行い、
   会話ウインドウの設定に合わせて、固定型の会話ウインドウにするか、稼働型の会話ウインドウにするか自動的に分岐制御する処理を追加する



手順30 ー複数ページのメッセージ表示とページ送り機能機能の実装ー
52.EventData スクリプトを修正し、複数のページ分の文字列を登録できるようにする変数を追加する
53.DialogController スクリプト、NonPlayerCharacter スクリプト、UIManager スクリプト、PlayerController スクリプトを修正し、
   会話イベントのメッセージを複数ページ表示し、ページ送りをする処理を追加する



手順31 ーEventData 用のデータベースの改修ー
54.enum にて EventProgressType スクリプトを作成する
55.EventData スクリプトを修正し、新しい EventDataDetail クラスを追加し、変数を修正する
56.EventDataSO スクリプタブル・オブジェクト内に進行型の会話イベントを登録する



手順32 ー進行型の会話イベントの実装ー
57.GameData スクリプトと DialogController スクリプトと TeasureBox スクリプトを修正し、進行型の会話イベントを実装する



手順33 −実装全体の振り返り−
58.設計について考える
59.実装した処理の内容を読み返して理解を深める



 以上のような実装工程を行います。

 => 次は 手順1 −Main シーンを作成− です。