マップの作成には Map Tiled Editor を利用します。
Tiled Map Editor のサイト:
https://www.mapeditor.org/
また、タイルマップとゲーム中のマップデータの入った
map_data.zip をダウンロードしてください。
ダウンロードした Map Tiled Editor をインストールして起動したら、タイルマップの map_tiles.tsx を Open してください。また、サンプルとして map_tutorial_02.xml を Open してください。
タイルマップとサンプルマップの2つのファイルを Open したとき
このゲームでは、地形と建物とは別レイヤーのマップデータを作成します。 マップデータには以下の名前のレイヤーが必要です。
- building レイヤー ... 建物タイルを配置します
- terrain レイヤー ... 地形タイルを配置します
タイルセットの数値は地形における高さを表しています。 数値が大きいほど高い地面を表しています。
右上のレイヤーを操作して地形のみ表示
建物のみ表示
まずは「追加シナリオの作り方」のフォルダ dlc_how_to_make にある map_01.xml を読み込み、変更して動作させてみましょう。マップを保存するときの拡張子は xml にしてください。
(ゲームのマップ表示中に F5 キーを押すとマップはリロードされます)
マップを作成したら、それを scenes.yaml に登録しましょう。
- name: map
title: 'マップの作り方'
map: 'map_01' # マップとして map_01.xml を読み込む。
stage: 'stage_01' # ステージ情報を stage_01.yaml から読み込む。
enter_scene: 'map_enter'
exit_scene: 'map_exit'
次に、マップを使うステージの情報を変更しましょう。
このステージのステージ情報は stage_01.yaml に登録されています。
stage_01.yaml
enemies: ## 敵の定義
skeleton_knight: # 敵ユニットの名前
prefab_name: SkeletonKnight # 敵ユニットのモデル
respawn: 8.0 # 復活にかかる時間(sec)
move_ratio: 0.25 # 移動の速さ
vitality: 200 # 体力
physical_armor: 0 # 防御(物理)
magical_armor: 0 # 防御(魔法)
attack_speed: 1.0 # 攻撃する間隔(sec)
attack_physical_damage: 25 # 攻撃力(物理)
attack_magical_damage: 0 # 攻撃力(魔法)
holding_mikan_point: 2 # 倒したときに得られるみかんポイント
bat:
prefab_name: Bat
respawn: 8.0
move_ratio: 0.50
vitality: 80
physical_armor: 0
magical_armor: 0
attack_speed: 1.0
attack_physical_damage: 20
attack_magical_damage: 0
holding_mikan_point: 1
skeleton_archer:
prefab_name: SkeletonArcher
respawn: 8.0
move_ratio: 0.25
vitality: 100
physical_armor: 0
magical_armor: 0
attack_speed: 2.0
attack_physical_damage: 15
attack_magical_damage: 0
holding_mikan_point: 2
barracks: ## 兵舎が敵に占領されているときに出現する敵ユニット
- enemies: # 0 番目の兵舎で出現する敵の定義
- { 0: skeleton_knight }
- { 0: skeleton_archer }
- { 0: skeleton_archer }
- { 0: bat }
- enemies: # 1 番目の兵舎で出現する敵の定義
- { 0: skeleton_knight }
- { 0: skeleton_archer }
- { 0: skeleton_archer }
- { 0: bat }
- enemies: # 2 番目の兵舎で出現する敵の定義
- { 0: skeleton_knight }
- { 0: skeleton_archer }
- { 0: skeleton_archer }
- { 0: bat }
- enemies: # 3 番目の兵舎で出現する敵の定義
- { 0: skeleton_knight }
- { 0: skeleton_archer }
- { 0: skeleton_archer }
- { 0: bat }
first_barrack_assign: ## ゲーム開始時の兵舎の所属
ally: [ 0, 1 ] # 0, 1 の兵舎は味方のもの
enemy: [ 3 ] # 3 の兵舎は敵のもの
# 2 の兵舎はどちらにも所属していない
ally_units: # 登場する味方ユニット
- SwordsMan
- Archer
ally_barrack_first_assign: # ゲーム開始時に兵舎に配置しておく味方ユニット
0: [ SwordsMan ]
1: [ SwordsMan, Archer, Archer ]
ally_tower_first_assign: # ゲーム開始時にタワーに配置しておく味方ユニット
0: Archer # 配置しない場合は ally_tower_first_assign ごと削除してください。
game: ## ゲーム設定
limit_seconds: 300 # ゲームの制限時間(利用されていない)
initial_mikan_point: 60 # ゲーム開始時のみかんポイント
mikan_ratio_per_sec: 1.0 # 秒あたりのみかんポイントの増加量
first_skill_point: 1 # ゲーム開始時の味方ユニットのスキルのレベル
first_view: ## ゲーム開始時のマップの視点
size: 5 # 拡大率
degree: 145 # 回転角度
簡単に説明すると
- 敵を定義する。
- 敵を兵舎に割り振る。
- ゲーム開始時の兵舎の所属を定義する。
- ゲーム開始時に味方ユニットを兵舎、タワーに配置する場合は定義する。
- ゲームの設定を行なう。
- ゲーム開始時のマップの拡大率と角度を定義する。
という流れになっています。
兵舎とタワーの番号は、それぞれマップの左上から横に走査した順に 0, 1, 2 ... n となります。
また、SwordsMan や SkeletonKnight といったユニットの名前は
ユニットのパラメータ変更 にて紹介します。