Я кодирую двумерную игру для iPhone на основе плиток (ортогональных плиток). Все уровни генерируются процедурно при первом запуске приложения, а затем сохраняются до тех пор, пока пользователь не захочет новую карту. Карты довольно большие, имеют 1000 плиток шириной и высотой, а местность разрушаема. На данный момент это довольно похоже на Terraria , но это изменится.
Для хранения информации о карте / плитке в настоящее время я использую несколько двумерных массивов в стиле c. Это хорошо работает, но меня беспокоит количество занимаемой памяти, поскольку все массивы определены как short array[1000][1000]
, что занимает (1000 *1000* sizeof (short)) байтов пространства.
Это не особенно желательно, когда у iPhone нет невероятно большого объема памяти для работы, особенно когда пользователь многозадачен. Основная проблема заключается в том, что я не могу использовать определенный формат карты тайлов, например .tmx, потому что все уровни генерируются процедурно. Производительность также может быть проблемой, потому что если плитка уничтожается по индексу (x, y), то мне нужно изменить данные в этом индексе. Я также думал о записи данных карты тайла в текстовый файл, но думаю, что при доступе к данным или их изменении могут возникнуть проблемы или проблемы с производительностью.
Имея все это в виду, каким был бы эффективный и быстрый способ обработки моих данных тайла?