Допустим, вы разбили свою местность на подквартиры.
До:
+---------------------------+
| ______ / |
| ___ / \ / |
| / \__/ \___/ |
|-/ |
| |
| |
| |
+---------------------------+
После:
+---------------------------+
| | | ___|__ | | |
| _|_ |/ | \ | /| |
| / | \__/ | \|__/ | |
|-/--|----------------------|
| | | | | | |
| | | | | | |
| | | | | | |
+---------------------------+
Вы можете иметь три состояния для этих подразделов:
- Вся местность
- Все пусто
- Разделение вверх
Это должно дать вам достойную оптимизацию без серьезного ущерба для читаемости кода.