Unity:ローグライクを自分なりの解釈で作ってみる.その1
概要
ローグライクって何?
私の説明より下記の記事の説明のほうがわかりやすいです gamy.jp
マップの考え方.
マップのレイヤー構造化
MAPは複数個のレイヤーを利用して生成します.
ステージレイヤー
トラップレイヤー
アイテムレイヤー
これによりデータの量は増えますが管理しやすくなると思います. 例えば,ステージレイヤーにアイテム情報やトラップ情報も入れてしまうとマップのタイルの上にトラップが仕掛けてあってその上にアイテムが置いてある事,の再現が鬼難しくなります.レイヤーを分けて重ねることによってこれを解決できます.
レイヤーの中身(多次元配列マップ)
各々のレイヤーは自動生成しやすい形で作ってあげたいです. そこで多次元配列によりマップを作ってみます
数値とその意味
0:床 1:壁
マップの形
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
マップの配列
[ [11111111], [1000001], [1100001], [11111111] ]
ざっとこのような形でしょうか
次にマップに階段,トラップ,アイテムを付け加えます. ここでマップの配列に直接値を埋め込むのではなく,レイヤーを分けてそれらの情報を追加します.
数値とその意味
0:何も置かない 1:階段 2:トラップ
トラップ,階段の配置
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 2 | 0 | 2 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
キャラクターの移動
過去に移動についてのまとめていたので下記を参照 zvn-x.hatenablog.com
ゲーム進行・ステート管理
マップの生成と移動は完了したので次にゲームの遷移について考えていきます. チョコボの不思議なダンジョンを参考にするとざっとこのような流れでしょうか.
もちろんその他もろもろの処理は必要ですが!はじめは複雑に考えずにシンプルに考えていきたいので現状ではこれでいいはず
CSVファイルでモンスターのステータスの管理
モンスターのステータスは後々楽に編集・管理にCSVファイルを利用します.
ID | NAME | HP | SPEED | ATK | DEF |
---|---|---|---|---|---|
001 | スライム | 32 | 3 | 10 | 3 |
002 | ゴーレム | 100 | 3 | 10 | 12 |
003 | トール | 1200 | 2 | 100 | 10 |
他にも状態異常耐性なども加えていきたいですが後々加えていけばいいと思います.
もちろんアイテムも同じ要領で管理します.
今後
今後以下の手順でゲームを作成していく
- [x] stageの作成
- [x] キャラクタ移動
- [x] ゲームステート
- [x] 階段作成
- [x] モンスターマップ作成
- [x] モンスター移動
- [x] player攻撃
- [ ] プレイヤー・モンスターステータス管理
- [ ] アイテム処理
- [ ] マップ自動生成
- [ ] csvによるデータ管理
- [ ] タイトル画面+ステージセレクト画面+GameOver時の処理追加