Here’s an example I quickly cobbled together using dupliverts. Is a great way to go, as the tile object is loaded into memory only once, making it a lot more GPU friendly than creating an array. Have a play around and see what you think roof_tiles.blend (521 KB)
Also could you take a look at the specularity map on the roof as well, it seems to be set up fine but no matter how I play with the settings I never actually see any results in the render, as though the map is disabled.
Dupliverts do seem way more efficient then an array, I’ll bare them in mind.