นี่ไม่ใช่คำตอบที่สมบูรณ์ แต่หวังว่ามันจะช่วยได้
แผนที่ / กระเบื้องของคุณตั้งค่าไว้หรือคงที่หรือไม่? หากเป็นแบบคงที่ฉันขอแนะนำให้คุณทำการประมวลผลออฟไลน์และคำนวณค่าล่วงหน้าให้มากที่สุดเท่าที่จะทำได้ คุณสามารถทำได้ทุกอย่างที่คุณต้องการ (raycasting หรืออะไรที่ฉลาดกว่า) แต่คุณไม่สนใจที่จะทำเร็วมากเพราะมันจะเกิดขึ้นแบบออฟไลน์ในขณะที่คุณ "อบ" ระดับของคุณ คุณสามารถคำนวณล่วงหน้าได้ว่าจะเห็นไทล์ใดจากจุดใดจุดหนึ่งหรือสร้างพื้นที่ที่ใหญ่กว่าและไทล์ทั้งหมดที่มองเห็นได้จากแต่ละภูมิภาค
จากนั้นที่รันไทม์การสืบค้นไทล์ที่มองเห็นควรตรงไปตรงมาและรวดเร็วมาก
แน่นอนถ้าคุณมีระดับที่สร้างขึ้นแบบไดนามิกนี่จะไม่ใช้เลย :-)