Вступление.
Эта серия статей рассказывает об очередном моем net/wpf проекте, связанном с мейкером - утилите, позволяющей создавать и редактировать карты для различных случаев, в частности, для последующего экспорта в rpg maker.
Чтобы не быть голословным, вот скриншот:
Описание.
Что же умеет делать этот редактор? Довольно много, но разработка еще в самой начальной стадии, надеюсь, что дело скоро дойдет до пре-альфы.
Тайлсеты.
Ни одна карта в мейкере, кроме нарисованных вручную, не обходится без тайлсетов, так что, ориентируясь для начала на него, и здесь есть тайлсеты.
Дерево тайлсетов.
Тайлсеты организованы в виде дерева - файловой структуры, - на концах которого находятся сами файлы тайлсетов. Интерфейс продуман довольно общий, и, при желании, можно будет их грузить из БД или облака, а пока, при создании тайлсета, можно указать папку, в которой распределены графические файлы.
Тайлсет сохраняется в свой бинарный формат, содержащий признак репозитория, корень и относительные ссылки от него на файлы.
Программа позволяет добавлять в уже созданный тайлсет файлы из других папок и даже создавать каталоги, но начальный тайлсет основывается на одной папке (внутри могут быть подпапки). Другие варианты хранения в будущем могут реализовываться и по-другому, а пока так.
Создание тайлсета.
Вот форма создания нового тайлсета:
Выбирается путь к папке, размер сетки (важно помнить, что карты будут иметь такой же размер сетки, что и их тайлсеты) и набор свойств тайла.
Существует довольно прозрачный механизм свойств, и, далее, будет предоставлен API для дописывания своих свойств в сторонних программах, подключаемых как dll.
А пока есть три встроенных свойства тайла: проходимости и приоритет, которые используются далее, для простых экспортов карт в мейкер.
В этой форме можно выставить дефолтные значения свойств, которые, при желании, можно переопределить далее.
Редактирование свойств тайлсета.
Как видно из первого скрина, редактирование тайлсетов происходит наживую. Пользователь может маппить карту и редактировать тут же тайлсет, не заходя в какие-то другие окна.
Для удобства, есть возможность редактировать свойства сразу группы тайлов (на скриншоте выделены через CRTL и показаны желтым).
Свойства показаны сверху, и показываются все те, что были включены в тайлсет при создании.
[Offtop:
Возникает несколько задач, о которых мы будем еще думать:
- изменение набора включенных свойств и их дефолтных значений
- изменение размера сетки
]
В процессе редактирования карты, мы так же выбираем из тайлсета тайл или группу тайлов и рисуем.
[Offtop:
Возникает еще задача, над которой уже думается, но в альфе не будет:
- показ (агрегированных) значений свойств выделенного тайла карты, либо на карте, либо тут же, где и для тайлсета; интерфейс для функции агрегации.
]
Файлов в тайлсете загружено может быть довольно много (все делается лениво и не жрет особо память). При загрузке карты, естественно, грузится автоматом и её тайлсет. Так же предоставляются сервисы, выдающие тайлсеты для сторонних экспортов (о механизме экспорта будет рассказано в одной из последующих статей).
Ну пока вроде все, что было нужно по тайлсетам, есть, а по ходу использования, будем, конечно же, развивать эту часть редактора.
Здорово! Я очень доволен =) Удачи с разработкой :)
ОтветитьУдалитьХм... Подожду альфа-версии, пока всё выглядит несколько сумбурно на мой личный взгляд.
ОтветитьУдалитькстати, а сетка может быть полупрозрачной или хотя бы пунктирной? а то очень уж в глаза неприятно бросается, судя по скриншоту
ОтветитьУдалитьМожно сделать полупрозрачной, если напрягает. Пунктир не очень смотрится - пробовали на карте
УдалитьХорошо, пусть будет полупрозрачной)
Удалить