У меня есть 2D платформерная игра, очень похожая на Terraria, и она основана на миллионах плиток, которые создают мир. Сейчас я пытаюсь найти эффективный способ загрузки только нужных плиток.
У меня есть двумерный массив целых чисел, каждое число связано с определенной текстурой плитки. Я сохраняю весь этот двумерный массив, прямо сейчас, который имеет размер 6509×6509. Моя проблема в том, что когда я запускаю игру и вхожу в мир, на загрузку всего текстового файла, содержащего массив 2d, уходит смешное количество времени и памяти. Мне нужен способ загружать куски мира, которые окружают игрока, а не весь предмет, и более отдаленные части мира будут освобождены.
Вот мой код о том, как я загружаю мир:
std::ifstream load("game_save");
int offset;
for (int x = 0; x < 6509; x++)
{
for (int i = 0; i < 6509; i++)
{
load >> offset;
world.grid[x][i].render = offset;
load.ignore();
}
}
load.close();
Это читает файл и загружает его в 2D-массив
Вот функция сохранения:
std::ofstream save("game_save");
for (int x = 0; x < 6509; x++)
{
for (int i = 0; i < 6509; i++)
{
save << world.grid[x][i].render;
save << " ";
}
}
Я так запутался, как придумать более простой способ загрузить мир. Любой совет приветствуется
Задача ещё не решена.