Я разрабатываю 2D-платформер с друзьями из университета. Мы основали его на XNA Platformer Starter Kit, который использует файлы .txt для хранения карты тайлов. Хотя это очень просто, это не дает нам достаточного контроля и гибкости при проектировании уровней. Несколько примеров: для нескольких слоев контента требуется несколько файлов, каждый объект прикреплен к сетке, не допускает вращения объектов, ограниченного числа символов и т. Д. Поэтому я провожу некоторое исследование о том, как хранить данные уровня и файл карты.
Это касается только хранения файловой системы карт тайлов, а не структуры данных, которая будет использоваться игрой во время ее работы. Карта листов загружается в 2D-массив, поэтому вопрос заключается в том, из какого источника заполнить массив.
Обоснование БД: С моей точки зрения, я вижу меньшую избыточность данных при использовании базы данных для хранения данных тайлов. Плитки в одной и той же позиции x, y с одинаковыми характеристиками можно повторно использовать от уровня к уровню. Кажется, что было бы достаточно просто написать метод для извлечения всех плиток, которые используются на определенном уровне, из базы данных.
Причины для JSON / XML: визуально редактируемые файлы, изменения можно отслеживать через SVN намного проще. Но есть повторное содержание.
Есть ли какие-либо недостатки (время загрузки, время доступа, память и т. Д.) По сравнению с другими? А что обычно используется в промышленности?
В настоящее время файл выглядит так:
....................
....................
....................
....................
....................
....................
....................
.........GGG........
.........###........
....................
....GGG.......GGG...
....###.......###...
....................
.1................X.
####################
1 - Начальная точка игрока, X - Уровень выхода,. - Пустое место, # - Платформа, G - Gem