Storing tile data for large structures on isometric grids

I’m rendering a grid of isometric tiles with each tile being 64x32 in size. Some of the structures I’m rendering span over multiple tiles graphically and I’m wondering how these would be stored in a data structure, or even which data structure I should use. Currently I’ve got a 2D array where all tiles are floor-level, although I’m now trying to render a building and it’s presented a few questions:

  1. Are larger structures stored on multiple or single tiles?
  2. If they’re stored on single tiles how would collision detection work, as you could collide with a tile that’s not represented in the tile data for the collided tile?
  3. If they’re stored on multiple tiles and each tile just renders it’s piece of the structure, how would you render the upper parts of the structure (e.g. the upper floors of a building)?
    If every floor also has to be represented in the tile data, wouldn’t this make a really tall impassible column on your level, when in reality you should be able to walk behind the building once the character is above the base level?

Any guidance would be helpful. :slight_smile: Thanks

Disclaimer: I never implemented any tile-based game, but:
I would store the building in all the tiles that visually contain the building. As for how to do collision detection then in order for a very tall building not making a whole column of the terrain impassible for a player walking at ground level: Store with a tile the level/floor where that part of the building resides.
Then only do collision detection between your player and surrounding tiles at the same floor/level.

Thanks for the reply. :slight_smile: That definitely makes the most sense, but there’s the caveat that if you do have a tall building that occupies all visible tiles for an entire column, if there are any tiles behind it that the player could potentially interact with, this would prevent that tile from being set because the most visible tiles take precedence.