マップ座標系のベストプラクティス


20

ゲームマップの座標系に関する慣習や既知の方法はありますか?通常、原点はマップの中央に配置されていますか?それとも、コーナーに住んでいて、マップは3D空間の1つのオクタントに構築されていますか?


ええと、タイルマップにタグを付けて、一番上の答えはタイルマップの問題について話しているのですが、3Dとオクタントについても言及しています。通常、3Dジオメトリはグリッドに保存されないため、原点はよりarbitrary意的であり、2Dグリッドマップでの浮動小数点精度の問題は聞いたことがありません。おそらく、いくつかの明確化または統合が
順調に行わ

Octantが編集されました。私が見たフレームワークのほとんどが何らかのZ軸を持っているため、3Dについて言及します。ゲームマップはフラットで2Dの場合がありますが、カメラは3番目の軸に沿ってオフセットされています。
-TaylorE

回答:


37

ほとんどのゲームでは、マップの原点が隅に配置されます。これの主な理由は、タイルマップが2次元配列に内部的に保存されることが多く、ほとんどのプログラミング言語では負の配列インデックスが許可されないためです。どのコーナーを原点にすべきかについて多くの議論がありますが、私は議論のどれも特に強いとは考えていません。最終的には個人的な好みです。頭痛を最小限に抑えるために、グラフィックスAPIが使用しているのと同じコーナーを使用することをお勧めします。

例外は多くの場合、すべての方向に無限に成長するマップを許可するゲームです。これは負のインデックスなしでは適切に機能しないため、単純な2D配列は問題外です。地図データをより複雑なデータ構造に保存する必要があります。この状況では、通常、原点を開始位置に配置するのが最も理にかなっています。


12

理論的には、原点の位置は重要ではありません。マップがレンダリングされるとき、またはマップ上でオブジェクトが移動するときに行うすべての数学演算は、実際の原点に関係なく正常に機能します。

ただし、実際には、マップの中心を原点にしたい理由が1つあります。これは、浮動小数点値の精度に制限があります。

浮動小数点数では、0から遠くなるほど、小さい桁の精度が低くなります。

非常に大きなマップを持つオープンワールドゲームで作業しているときに、実際に物理学やその他のものが原点から遠くなるにつれて崩壊し始めるという問題に遭遇しました。

修正点は、オリジンがプレイヤーからかなり離れた場所で、プレイヤー(マップタイル、カメラなど)をインテリジェントにテレポートして、オリジンから離れすぎないようにすることです。


1

本当に問題ではありません。一部の人々が座標系で変更するのは、多くの場合y軸です。物理学を簡単にするために、左上に(0,0)を置く代わりに、左下に置くことを好みます。


座標系の原点が左下にある場合、物理学はどのように簡単ですか?
Tyyppi_77

3
最後の文には、「デバッグ」という単語がありません。「天井」がゼロであり、すべてがそれについて測定される場合よりも、地面がゼロであり、すべてがそこから上がる場合、それはより直感的です。
ベイランクール
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.