Это не полный ответ, но, надеюсь, это поможет.
Ваша карта / плитка установлена статически или динамически? Если он статичен, я настоятельно рекомендую вам выполнять автономную обработку и предварительно вычислять столько, сколько вы можете таким образом. Вы можете делать это любым способом (радиовещание или что-то более умное), но на самом деле вам не нужно делать очень быстро, потому что все это произойдет в автономном режиме, пока вы «запекаете» свои уровни. Вы можете либо заранее вычислить, какие плитки видны из каждой точки, либо создать какие-то более крупные регионы и все плитки, потенциально видимые из каждой области.
Затем во время выполнения запрос для видимых плиток должен быть очень простым и очень быстрым.
Конечно, если у вас есть динамически созданные уровни, то это не относится вообще :-)