naja, das Mappingverfahren bezieht sich eher darauf wie du die Sprites einlesen willst. Entweder 500 einzelne PNGs, BMPs, TGAs, JPEGs oder was auch immer, oder lieber ein großes Sprite welches in der Engine in Echtzeit auf die gerade benötigte Tilestelle zerlegt wird und dann angezeigt wird. 500 Sprites verbraucht schonmal 500 Handles zu den Sprites.

Die Positionen in ein Array zu legen ist aber dahingegen sinnvoll, so mache ich es auch, und bei dir muss ja jedes Feld mindestens eine Grafik haben, somit ist es auch keine Verschwendung weil das Array somit immer voll ist. Objekte würde ich allerdings als Linked List anlegen, also ein Dynamisches Array wobei man einzelne Elemente leicht herausnhemn kann und sowas.

Dann ist doch wichtig zu wissen, sollen Untergerund und Gebäude verschmolzen sein? Also, ein 64 x 64 Pixel großes Sprite welches da Haus auf dem entsprechenden Boden zeigt oder nur das Haus wobei es auf einer transparenten Maske liegt die dann wegfällt. Wenn du Methode 1 wählst, dass du also immer nur ein Sprite pro Bild hast ohne transparente Farbe in den Sprites, dann kannst du die Häuser ja direkt im Array setzen. WIllst du aber die Objekte ohne Untergrund setzen, dann müsstest du sie besser in einer Linked List machen, weil dann ja erstmal jedes Array mit dem Boden belegt ist, und dann noch Häuser gesetzt werden sollen. Diese kannst du aber schlecht ins Array aufnehmen da du dafür eine neue Ebene bräuchtest. Dann würde das Array zu groß werden und den Rahmen sprengen. Damit hab ich so meine Erfahrung, ich hatte noch vor Kurzem ein Array welches ich wie folgt diemnsionierte:

array(200,200,200,12) - das machte dann zum Schluss 4000 MB Arbeitsspeicher, was doch etwas zu viel ist^^ Deshalb würde ich nur die Mapkoordinaten sichern, also nur array(200,200) und nicht mehr. 200 ist dabei die Mapgröße x bzw. y. Bei 64 x 64 Pixel macht das eine Map von 12800 Pixel und das macht 12,5 Bildschirme voll bei 1024 x 768 Pixel. Sollte reichen, andernfalls kannst du das Array auch mit 300 oder 400 Dimensionieren. Wenn du jetzt aber Objekte anzeigen lassen willst, nicht an den Untergrund gebunden, transparent die dann zusätzlich zum Sprite an der Stelle angezeigt werden sollen, dann würde ich das als Linked List machen. Gründe dafür sind, dass du ja sicherlich nicht jedes TIle auf der Map mit einem Haus besetzen wirst. Das in einem Array zu speichern wäre Platzverschwendung da in Arrays der Speicher ja vorreserviert wird. Selbst wenn du später nahezu alles voller Häuser hättest würde zumindest zu Spielbeginn eine Menge an Speicher wegfallen der unbenutzt ist.
Dies, wie gesagt, gilt aber nur denn Gebäude nicht Objektgebunden sind, ohne Untergrundgrafik umher. ISt diese schonb mit dabei kannst du das Gebäude einfach anstelle des Bodensprites mittels Array anzeigen lassen.