Я реализую движок плиток для игр, использующих C ++.В настоящее время игра разделена на карты, каждая карта имеет двумерную сетку спрайтов, каждая из которых представляет плитку.
Я кодирую систему, в которой, если несколько карт являются смежными, вы можете переходить с одной на другую.При запуске игры все карты создаются, но «выгружаются», то есть объекты спрайтов не находятся в памяти.Когда я нахожусь достаточно близко от соседней карты, спрайты карт «загружаются» в память, выполняя следующие действия:
for(int i=0; i < sizeX; i++) {
for(int j=0; j < sizeY; j++) {
Tile *tile_ptr = new Tile(tileset, tilesId[i][j], i + offsetX, j + offsetY);
tilesMap[i][j] = tile_ptr;
}
}
И они выгружаются при уничтожении таким же образом, когда я слишком далеко откарта.
Для карты спрайтов 50x50 размером 32x32 пикселя загрузка или выгрузка занимает примерно 0,3 секунды, что выполняется в течение 1 кадра.Мой вопрос: что является более эффективным способом динамической загрузки / выгрузки карт, даже используя совершенно другой механизм?спасибо
PS: я использую SFML в качестве графической библиотеки, но я не уверен, что это что-то меняет