How to approach combining of large numbers of objects to lower draw calls?

I am creating a board game based off of one called Acquire designed by Sid Sackson. The game centers around a game board, money, card stock, and 108 tiles.

Currently I have created the code that will generate my 108 tiles and arrange them on the board(don’t have the board modeled yet). I instantiate a generic Tile prefab, locate the mesh objects for that tile model and assign a MeshFilter and mesh to the new prefab for the tile. These objects will remain off the game board until they are placed.

I eventually want to change the boring tiles into actual hotel building pieces… and design enough of them for each hotel chain that they can be sort of modular. That means I might require a different model depending on the hotel chain(and random building style) and any adjacent tiles.

How can I approach this in a manner of keeping draw calls to a minimum? Before I reduced the vertex count of my tiles, I was getting around 110 draw calls for the above image. I reduced the vertex count so Unity would automatically batch them, but I’m trying to plan for the future when my tile pieces might have 500 or more polygons each.

I tried using Mesh.CombineMeshes and having the parent object be responsible for all the geometry, but I ran into issues where it would have some of my geometry missing and it wouldn’t all fit into a single mesh because it was beyond 65000 vertices. What kind of structuring approach can I work with here to allow for much higher detailed tiles(think actual building models) and keep those draw calls very low?

Thanks!

Ok I try to help, what I am going to say it is engine independent, so at least it should help. Usually the engines batch for texture/material/shader, so if you have 110 textures the engine does not have any option than make 110 draw calls. Reduce number of textures/materials/shaders (sharing them between the model) and you will reduce the number of draw calls.

your problem about the 65000 vertices it is probably because Unity is limited to 16bit index buffer, in that case there is no much to do, except sharing the vertices as much as you can.