Robiłem kiedyś coś takiego, mapa była ogromna i rozwiązałem to tak:
Najpierw dzielisz mapę na chunki. Jeden chunk powinien być wielkości obszaru który wyświetla twoje view. Jeżeli masz mapę 6000x4000, a wyświetlasz na raz obszar o rozmiarze 600x400, mapa może składać się ze 100 chunków.
Na raz wyświetlasz tylko 9 chunków(X), ten na którym stoi gracz(0) i po jednym w każdą stronę (lewo, prawo, góra, dół, skosy). Klasa chunk ma funkcję draw, który rysuje ten konkretny skrawek mapy. (ASCII nr1).
Gdy gracz przejdzie na sąsiedni chunk (ASCII 2), usuwasz trzy najdalsze chunki (U) i doczytujesz kolejny kawałek drogi dla postaci tworząc trzy nowe chunki (D). W taki sposób możesz streamować mapę z pliku, i nigdy nie będziesz rysować więcej niż 9 chunków terenu.
XXX UXXD
X0X UX0D
XXX UXXD