I do see some inefficienties that can be improved upon.
For the roads and trees that you will probably add afterwards i’d suggest using meshes, this way you can take advantage of mesh instancing as you’ll be using these throughout the entire map. If you don’t know, mesh instancing is an efficient way of rendering complex objects that would otherwise have to be made through the use of multiple parts. All meshes with the same ID should be instanced and will be rendered in a single draw call.
As far as i can see you’re using parts for the line dividers on the road, if your road was made up out of multiple meshes you could also add a texture that would take care of this as well, two birds with one stone.
Indoors it looks like you divided your wall in two parts to take care of the texture/color inside each room, i suggest keeping it one part and apply a decal.
This is a [255, 255, 255] image, upload it to Roblox and apply it on the inside of the wall. You can change the color by adjusting the color3 value inside the properties tab.
If you want to go all out you can create a seamless wallpaper texture and apply it on the Texture object. If done right it should look like this:
(Seamless texture)
(Final result)
On the topic of unions, i’d refrain from using them excessively as they still tend to solve complex objects rather poorly in certain situations. Roblox handles part rendering fairly well so use Part, WedgePart and CornerWedgePart as much as possible, otherwise i highly recommend using meshes as a replacement for complex unions.
NOTE: If you plan on adding destructibility of objects in the future you do have to use unions as they offer you real time CSG manipulation. This will have a big impact on performance so it’s not recommended.
For rendering details like indoor furniture a custom rendering system is also recommended, one that will only render furniture when you are within a set radius from a building, 150 studs for example as you won’t be seeing these details from afar anyway.
In a large open world like this i also recommend keeping everything relatively low-poly.
Good luck,
Razinox