Полученные в редакторе карты надо куда-то девать - это же не игровой движок, а редактор карт, и сам их не пользует. Для этого и разработан модуль экспорта карт.
Базовые характеристики.
Мы сделали возможность плагинизации экспорта, то есть, разработчику предоставляется API для экспорта и для получения необходимых для него данных.
Плагин является библиотечкой dll и должен включать в себя:
Базовые характеристики.
Мы сделали возможность плагинизации экспорта, то есть, разработчику предоставляется API для экспорта и для получения необходимых для него данных.
Плагин является библиотечкой dll и должен включать в себя:
- Интерфейс - наследник нашего контрола, в котором пользователи задают нужные для экспорта данные (например, директорию для экспорта или название карты)
- Метод экспорта - реализация определенного интерфейса.
Для экспорта разработчик может запросить необходимую информацию о карте (её общие свойства, слои и тайлы - ссылки на элементы тайлсета с их свойствами) и файлы тайлсета. Информация отделена от структур в самой программе, дабы плагин ничего не мог натворить лишнего.
Все доступные плагины складываются в определенную папку приложения, откуда они автоматом подцепляются.
Но на словах все не шибко понятно, перейдем к примерам.
Базовый экспорт в картинку.
Это базовый экспорт в картинку PNG, занесенный в само приложение. Все, что ниже комбобокса "Способ экспорта" и выше кнопки "Сохранить", есть контрол - наследник базового. Здесь просто путь к папке и кнопка выбора. Метод экспорта очень прост, приводить код здесь не буду.
Экспорт в параллакс.
Для целей использования редактора в мейкерских проектах уже почти дописан плагин экспорта карт "в параллакс". Тут остановлюсь детально.
- Результат экспорта - два графических файла, параллакс и оверлей и файл с данными карты.
- Распределение, что куда попадает, происходит согласно свойству приоритет тайла; все, что 0 летит вниз, что больше - вверх. У свойств тайла добавлен метод, который позволяет определять, результирующее свойство при комбинации двух тайлов. Это нужно, чтобы для многослойной карты получить результирующее свойство тайла с определенными координатами.
- Для приоритетов мы выдаем максимальный на карте.
- Файл с данными содержит:
- название карты (физическое), которое трансформируется в MAPXXX
- название карты в игре
- ширина и высота карты из расчета на размер тайла в 32
- массив проходимостей, скомбинированных не только послойно, но и (простыми эвристическими методами) по частям, если размер тайла в редакторе меньше 32 (либо разбитых, если больше)
- Все это экспортируется в одну папку, которую мы выбираем все на том же контроле для экспорта.
Далее, мной на руби написан скрипт, который умеет высасывать из папки Import проекта на rpgmaker vxace, и создавать либо заменять параллаксовые карты автоматом по способу Мары.
С проходимостями не все однозначно, но править гораздо проще, чем создавать с нуля.
В будущем, конечно, пригодится полноценный экспорт, с тайлами и картами, но уже не для мейкера а для своих движковых наработок; api будет еще дорабатываться, и по нему будет создана документация с примерами.
Ура! Люблю собирать хорошие документации, очень буду ждать в коллекцию.
ОтветитьУдалитьИ да, программу, конечно же, программу я тоже буду очень ждать ^_^