戦うぞ!64xその52(マップ表示の仕様とか)

非常に重大な仕様の調整を行っていました。

画像



上は今作っているゲームのマップ表示。
奇数だー偶数だーと、処理がひねくれています。
隣のマスの座標を算出するのに一々奇数偶数で足し引きが発生するのが難点。
常に何かしらの計算を挟む必要はあるけど、内容はわりと分かりやすい(矩形じゃないからね)

これを

画像



よくあるクオータービュー形式に変えてみました。
隣のマスは単純にx,yが+したり-するだけで算出できるのが強み。
マスとマス同士の計算がシンプルでウレシイ...ウレシイ..
マップの90度回転表示とかも簡単にできる!.

表示も簡単!内部処理も簡単!だけど、少し複雑な部分がある。
マップ表示の形が菱形なのにたいして、画面がただの四角形な事だ。


画像


ここに6x6のマップがあるとする。
基本的に0始まりなのがややこしい以外はシンプルな一時配列。
緑の四角形は画面の表示領域になる。

菱形のせいで大分ややこしい感じなのをわかってほしい。
画面サイズは3・3と書いてあるが、マップチップの数で算出すると6・6が正しい。
このようにただの四角画面と違って、表示領域の計算がやや判りづらい。



画像


緑色の画面内に表示するのは24マスだけ。
6x6サイズのマップの36番すべてを描画する必要はないのだ!
もちろん一番シンプルなのは画面外でも表示してしまう事なのだが、
「菱形を矩形で囲むと、菱形の倍のサイズが必要になる」わけなので、
画面内と同じ程度、画面外にも表示する羽目になるのだ。非効率だな!


色々作って試して考えた結果・・・


最終的に「仕組みは簡単だけどやや非効率」な仕様に落ち着いた。

最初は「表示対象のマスを算出してそこだけ処理する」という内容だったが、計算処理が複雑になったため没に。
結局、画面外は「処理するけど表示しない」みたいな感じで実装する事になった。
物理的にウィンドウサイズの中に描画位置があるかを判定するため、地味に処理が重たい(気がする)
とは言え、シンプルな構造なおかげでその後の作業(マップの反転表示とか)では、捻った処理は必要なくかなり楽に実装できたのだった。
シンプルが一番。はっきりわかんだね。



現時点でやべー部分
ミニマップの表示・座標処理を新仕様に
ダメージ表示の位置を修正
遠隔攻撃の表示位置がおかしい
ボルト経路もおかしい。何故だ
マップの反転表示を適応させるしかも四方向回転に進化した!
距離算出と経路計算がおかしかったから修正した



このゲームの前身を作る際、菱形表示の複雑さに嫌気がさした結果、四角形の表示に落ち着いた経緯があります。
まあ、その気持ちはよくわかりますね。げっそりします。

この記事へのコメント

この記事へのトラックバック