#この記事は、
ヘックス・ターン制シミュレーションゲームが好きな筆者が、最近その手の面白いゲームが無いので、自分で作るぜ!と、頑張る記録です。
この記事のまとめ
データ構造として、Hexを扱うには、飛び飛びの座標系で表すのが良さそう。
(追記)、、、と、思ったのですが、後で交互にずらす座標系のほうが良いと思い直しました。
その記事はこちら。
#Hexマップとは
六角形をつなげて作られているマップ。
こんな感じのヤツですね。
最近よくあるSLGだと、四角く区切られたマップが多いです。
四角と比べてHexマップの良さは、
- より詳細に現実を表せる(特に移動距離や向き)
- 戦略性が高くできる
あたりでしょう。
あと、自分的にはやっぱりHexが格好良いです。好みの問題だけど超重要。大戦略が好きだからだね。
でも、個々のマスが周囲の6マスと接していて互い違いに並んでいるので、2次元の座標としてどのように表すのか、ちょっと悩みます。
#Hexマップのデータ構造の選択肢
色々な方向がありえるのですが、代表的な形は3種類くらいかなぁ、と。
以下の2つの記事が詳しいです。
NinaLaboさん・猫とゲームさん
選択肢の中で、飛び飛び形式の座標系でデータを持つことにしました。
他の座標系と比べて、飛び飛びの良さはこんなところ。
スプレッドシートで表現できる
スプレッドシートでデータを作って、マップを作りたいので重要です。
試しにGoogleっスプレッドシートで作ってみました。こんな感じ。
座標が普通にCOLUMNとROWで引っ張ってこれるのが素敵。
以下のような感じ。
="(" & column(A1)-1 & ", " & row(A1)-1 & ")"
結構簡単に距離を計算できる
2点間の距離計算も楽々。
2座標のX,Yそれぞれの差の絶対値をとる。これを(dx, dy)とした時、
- dx > dy の場合、距離は dx
- dy > dx の場合、距離は (dx + dy)/2
マップのデータ構造もOK
マップのデータ構造も無駄なく作れる。
Y座標を2で割って、切り捨てれば普通に無駄のないデータの記述が可能。配列とかにも入れやすい。後で、X座標が偶数のときには、Y座標x2、奇数のときにはY座標x2+1としてやれば、元の座標系に復元できます。
というわけで、飛び飛びの座標系で行こうと思います。
作ってみたら交互にずらす座標系の方が良いと思い直しました
その記事はこちら。