вторник, 14 апреля 2015 г.

Another Map Editor. Экспорт.

Полученные в редакторе карты надо куда-то девать - это же не игровой движок, а редактор карт, и сам их не пользует. Для этого и разработан модуль экспорта карт.




Базовые характеристики.

Мы сделали возможность плагинизации экспорта, то есть, разработчику предоставляется API для экспорта и для получения необходимых для него данных.

Плагин является библиотечкой dll и должен включать в себя:

  1. Интерфейс - наследник нашего контрола, в котором пользователи задают нужные для экспорта данные (например, директорию для экспорта или название карты)
  2. Метод экспорта - реализация определенного интерфейса.
Для экспорта разработчик может запросить необходимую информацию о карте (её общие свойства, слои и тайлы - ссылки на элементы тайлсета с их свойствами) и файлы тайлсета. Информация отделена от структур в самой программе, дабы плагин ничего не мог натворить лишнего.

Все доступные плагины складываются в определенную папку приложения, откуда они автоматом подцепляются.

Но на словах все не шибко понятно, перейдем к примерам.


Базовый экспорт в картинку.

Это базовый экспорт в картинку PNG, занесенный в само приложение. Все, что ниже комбобокса "Способ экспорта" и выше кнопки "Сохранить", есть контрол - наследник базового. Здесь просто путь к папке и кнопка выбора. Метод экспорта очень прост, приводить код здесь не буду.

Экспорт в параллакс.


Для целей использования редактора в мейкерских проектах уже почти дописан плагин экспорта карт "в параллакс". Тут остановлюсь детально.

  1. Результат экспорта - два графических файла, параллакс и оверлей и файл с данными карты.
  2. Распределение, что куда попадает, происходит согласно свойству приоритет тайла; все, что 0 летит вниз, что больше - вверх. У свойств тайла добавлен метод, который позволяет определять, результирующее свойство при комбинации двух тайлов. Это нужно, чтобы для многослойной карты получить результирующее свойство тайла с определенными координатами. 
  3. Для приоритетов мы выдаем максимальный на карте.
  4. Файл с данными содержит:
    • название карты (физическое), которое трансформируется в MAPXXX
    • название карты в игре
    • ширина и высота карты из расчета на размер тайла в 32
    • массив проходимостей, скомбинированных не только послойно, но и (простыми эвристическими методами) по частям, если размер тайла в редакторе меньше 32 (либо разбитых, если больше)
  5. Все это экспортируется в одну папку, которую мы выбираем все на том же контроле для экспорта.
Далее, мной на руби написан скрипт, который умеет высасывать из папки Import проекта на rpgmaker vxace, и создавать либо заменять параллаксовые карты автоматом по способу Мары.

С проходимостями не все однозначно, но править гораздо проще, чем создавать с нуля.


В будущем, конечно, пригодится полноценный экспорт, с тайлами и картами, но уже не для мейкера а для своих движковых наработок; api будет еще дорабатываться, и по нему будет создана документация с примерами.

1 комментарий:

  1. Ура! Люблю собирать хорошие документации, очень буду ждать в коллекцию.
    И да, программу, конечно же, программу я тоже буду очень ждать ^_^

    ОтветитьУдалить