Различные форматы игровых карт (внутри и снаружи) - PullRequest
5 голосов
/ 02 октября 2009

Я нахожусь в процессе разработки RPG, и я столкнулся с небольшой загадкой.Я не уверен, что использовать для моих карт мира.За прошедшую неделю я просмотрел различные форматы и определил, что нет карт (которые я могу найти ...), подходящих для наружной среды.Я обнаружил, что карты .bsp (quake 4 или doom 3) были бы хороши для установки в помещении, но не очень хорошо для наружных настроек из-за способа, которым они сделаны.позволил бы мне делать огромные карты на открытом воздухе, очень похоже на забвение или морровинд.Конечно, я не могу использовать карты до такой крайности, просто приятно иметь место для расширения, если мне это нужно.

Спасибо, Робби

Ответы [ 4 ]

6 голосов
/ 02 октября 2009

Наружная среда обычно выполняется с использованием карт высоты местности. Это в основном гигантская сетка с информацией о высоте каждой ячейки. Также каждая ячейка содержит информацию о текстуре (ах), которые будут использоваться.

Вы можете создавать эти карты, используя генераторы ландшафта на основе фрактальных и перлин-шумовых помех.

3 голосов
/ 02 октября 2009

В этой статье вводится использование quadtree для хранения на местности, которое, как мне кажется, обычно используется. По сути, они похожи на деревья BSP, используемые в Quake, но лучше подходят для хранения карт высот.

2 голосов
/ 04 октября 2009

Я думаю, он ищет способ сохранить и загрузить карты из файла, а не способ сохранить их в памяти. (А может я не так понял?)

ИМХО, есть четыре пути решения этой проблемы.


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 и т. Д.
  • Увеличьте загрузку карты, выбрав формат файла, близкий к разметке памяти вашей карты.
  • Объединение нескольких парадигм хранения карт. Карты высот хороши для больших наружных карт, но очень ограничены (особенно для многоуровневых карт). Вы можете использовать карты высот для пола, а также хранить камни / цветы и т.д. и др.
1 голос
/ 02 октября 2009

Существует множество способов реализации карт игровых миров.
В любом случае, для огромных карт проверьте Пространственные индексы , и в частности Quadtrees.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...