マップの描画:マップはタイルインデックスの巨大な配列として表すことができるため、タイルはエンジンで簡単です。描画コードは単にネストされたループです:
for i from min_x to max_x:
for j from min_y to max_y:
Draw(Tiles[i][j], getPosition(i,j))
大きなマップの場合、マップ全体の1つの巨大なビットマップイメージは、メモリ内で多くのスペースを占める可能性があり、グラフィックカードが単一のイメージサイズでサポートするものよりも大きくなる可能性があります。ただし、グラフィックメモリはタイルごとに1回だけ割り当てるので(タイルがすべて1つのシートにある場合は、合計1つが最適です)、タイルに関する問題は発生しません。
衝突などのタイル情報を再利用することも簡単です。たとえば、キャラクターのスプライトの左上隅にあるテレインタイルを取得するには:
let x,y = character.position
let i,j = getTileIndex(x,y) // <- getTileIndex is the opposite function of getPosition
let tile = Tiles[i][j]
岩や木などとの衝突をチェックする必要があるとします。(キャラクターの位置+キャラクターのスプライトサイズ+現在の方向)の位置にタイルを取得し、歩行可能または歩行不可能としてマークされているかどうかを確認します。