after year of development and week of unsuccessful optimization I turn for a help from you, guys.
So, my game is turn-based strategy with hexagon map. One hexagon consists of one texture for hexagon tile type and seven subtiles, which carry spriterenderer with graphics like piece of town. So if soldier steps on the subtile, the graphics of subtile hide.
On good machines like mine, if I zoom out maximally (45 orthographic size) on 1920x1080 and have visible around 18x16 tiles I get solid 160-200 FPS at MAX details, but on my laptop I barely get 25FPS on 1280x720 and LOW details. Each tile has resolution of 636x499.
I have tried:
- Simple shader on SpriteRenderer supporting transparency, just merging texture with color (This had those best results of 160-250FPS at HIGH-END and 25FPS on LOW-END)
Creating separate material for each subtile and replacing SpriteRenderer with Quad mesh, so those subtiles are statically batched or GPU batched (but I guess they did not batch at all, because frame debugger showed that sometimes more fo the same pieces got rendered and then sometimes just one)
So this is just the 50x50 game, when I start large map, like 120x100, it's not really that worse, so I think the problem is just in the graphics and not in the amount of objects.
What are your suggestions I should try to get better performance on LOW-END devices? Do you think that manual GPU-instancing would make it faster? I think, there would be a lot of trouble maintaining which graphic to render and which not.