Це не є повною відповіддю, але, сподіваємось, це допоможе.
Ваша карта / плитка встановлена статично чи динамічно? Якщо це статично, я б наполегливо рекомендую вам робити офлайн-обробку і попередньо обчислювати скільки завгодно. Ви можете це зробити будь-яким способом (радіомовлення чи щось розумніше), але вам не дуже важливо робити дуже швидко, тому що це все відбуватиметься в режимі офлайн, поки ви "запекаєте" свої рівні. Ви можете або попередньо обчислити, які саме плитки видно з кожного місця, або створити якісь більші регіони та всі плитки, потенційно видимі з кожного регіону.
Тоді, під час виконання, запит на видимі плитки повинен бути дуже простим і дуже швидким.
Звичайно, якщо у вас є динамічно створені рівні, то це взагалі не застосовується :-)