Skip to content

定義データの項目 ​

第30回以後はAssets/DataのCSVを起動時に読みます。性能と出現を調整するときに、項目の意味を確認してください。見出しの名前と順序は変えず、UTF-8で保存します。

ユニットの性能 ​

Units.csvの1行が1種類です。現在HPや位置は個体の状態なので、このファイルには保存しません。所属も生成した個体へ渡すため、同じ性能IDを味方と敵で使えます。

項目意味課題用の範囲
id種類の識別子。重複させない英小文字、数字、アンダースコア
name画面に表示する名前空欄不可。UTF-8で60バイト以内
max_hp生成時のHP。戦闘中に減らす値の初期値整数1〜100000
attack_damage1回の攻撃で減らすHP整数0〜10000
move_speed1秒間に移動する距離0〜300単位/秒
attack_range攻撃できる中心間距離0〜400単位
attack_interval_sec次の攻撃まで待つ時間0.05〜60秒
spawn_cost味方の出撃で消費する資源整数0〜300
spawn_cooldown_sec同じ候補を再出撃するまでの時間0〜120秒
visual_id見た目の識別子Visuals.csvに登録済みのID

距離の1単位は固定画面上の1ピクセルに対応します。ユニットも拠点も中心X座標を基準にします。画像の幅や倍率を変えても、射程と移動速度は変わりません。

出撃コストと再出撃待ち時間は味方の出撃操作で使います。敵をウェーブで生成するときには消費しません。攻撃待ち時間は個体ごと、再出撃待ち時間は候補の枠ごとに保存します。

出撃候補 ​

Roster.csvは見出しunit_idの下へ、出撃できるIDを1行ずつ書きます。最大6種類で、重複と未登録IDはエラーです。この順序が候補の並びと数字キーになります。

Units.csvだけに新しい行を追加した場合は、性能の定義は存在しても出撃候補へは表示されません。Roster.csvへ登録すると共通処理で候補を作ります。

ウェーブ ​

Waves.csvは1行で、1種類の敵の出現列を定義します。

項目意味
wave_id出現列の識別子。行ごとに異なるID
start_time_sec戦闘開始から最初の1体までの秒数
unit_idUnits.csvに登録した種類のID
count出現する総数。1〜1024の整数
spawn_interval_sec2体目以後の間隔。0なら同時刻

開始5秒、数5、間隔2秒なら、5、7、9、11、13秒に出ます。開始時刻と間隔は0以上で、最後の出現は3600秒以内、全行の総数は1024体以内にします。

時刻順に出し、前の敵の全滅を待ちません。停止中は時計を進めず、敵が一時的に0体でも将来の予定を残します。出現を終えただけでは勝利になりません。

配布された見た目 ​

ID外見
soldier_gray灰色の兵
soldier_green緑の兵
soldier_blue青の兵
soldier_orange橙の兵

性能を増やすために、見た目を増やす必要はありません。同じ見た目IDを再利用しても、候補の名前と戦場の種類名で判別できます。

見た目定義の項目

Visuals.csvは講師側で使用設定を登録するファイルです。学生は最初に既存のvisual_idを選び、第33回で再生速度を比較します。

項目意味
id見た目のID
imageAssetsからの画像パス。上のフォルダーは参照しない
frame_width、frame_height1コマの幅と高さ
columns画像の横方向のコマ数
idle_first、idle_count待機の開始番号とコマ数
move_first、move_count移動の開始番号とコマ数
attack_first、attack_count攻撃の開始番号とコマ数
fps1秒あたりに切り替えるコマ数
pivot_x、pivot_yコマ内の足元の基準位置
scale表示倍率

コマ番号は0から始まり、左から右、上から下へ数えます。1枚絵はすべての状態へ同じ1コマを設定できます。切り出しが画像の寸法と合わない場合は、起動時に見た目IDを示して止めます。

不正な入力と戦場の上限 ​

起動時のエラーはファイル、行、列と原因を確認します。原因を直して保存し、終了して起動し直してください。空欄、重複ID、未登録ID、負の値、不正な攻撃間隔、列数不一致、素材不足を検査します。

同時に戦場にいる個体は味方と敵の合計128体までです。満員では味方の出撃を拒否し、コストは消費しません。敵は予定を残して空きを待ち、生成できたときに進行を進めます。

ゲームプログラミング実践