Я думаю, он ищет способ сохранить и загрузить карты из файла, а не способ сохранить их в памяти. (А может я не так понял?)
ИМХО, есть четыре пути решения этой проблемы.
Extremum: создайте свой собственный формат
Вы можете создать свой собственный формат файла. Самый простой способ - выбрать широко используемый и расширяемый формат файла (например, XML), поскольку в Интернете вы найдете множество парсеров. (перейдите по адресу application-mathematics.net для простого, но полного XML-парсера).
Проблема здесь в том, что вам придется создать свой собственный редактор карт.
Без сомнения, это «лучший» способ, если вы хотите узнать массу вещей и иметь чистый формат. Но вы также должны учитывать время, которое вам потребуется на создание всех этих инструментов.
Экстремум: использовать формат другой игры / инструмента
Вы также можете выбрать формат файла существующей игры и создать его ретро (или просто использовать формат игры с открытым исходным кодом, такой как Quake).
Проблема здесь в том, что вы унаследуете от ограничений выбранного вами формата.
Но время разработки довольно сокращено, вам нужно только найти способ загрузки этих форматов.
Компромисс 1: Отсоединить геометрию от метаданных
Вы также можете выбрать нужные вещи из существующего формата и хранить метаданные в другом месте.
Например, вы можете использовать создать формат, который будет выглядеть так:
<?xml version="1.0" encoding="UTF-8"?>
<map>
<name>MyMap</map>
<geometry type="bsp">my_map.bsp</geometry>
<spawn id="1">
<monster type="1" spread="5" />
</spawn>
</map>
Вот вам лучшее из двух миров.
Вы можете создать свою карту в любом редакторе .bsp (3DSmax, Blender) и сохранить необходимые данные в XML.
Средний 2: адаптировать другие форматы к вашим потребностям
Идея в том, чтобы создать собственный унифицированный формат и создать экспортеры для широко используемых редакторов. Например, вы можете написать сценарии экспорта для Blender, которые будут генерировать файлы для вашего собственного формата.
Еще несколько советов, если я неправильно понял, и вы искали память для ваших карт. (В случае, если спросите, и я завершу свой ответ:))
- Ищите Квадро / Октри. Это способ разрезать вашу карту на квадраты / кубики. Тогда вы сможете реализовать быстрый поиск в этих структурах и отображать только видимые части карт, LOD и т. Д.
- Увеличьте загрузку карты, выбрав формат файла, близкий к разметке памяти вашей карты.
- Объединение нескольких парадигм хранения карт. Карты высот хороши для больших наружных карт, но очень ограничены (особенно для многоуровневых карт). Вы можете использовать карты высот для пола, а также хранить камни / цветы и т.д. и др.