пятница, 3 апреля 2015 г.

Another Map Editor. Вступление и тайлсеты.

Вступление.

Эта серия статей рассказывает об очередном моем net/wpf проекте, связанном с мейкером - утилите, позволяющей создавать и редактировать карты для различных случаев, в частности, для последующего экспорта в rpg maker.

Чтобы не быть голословным, вот скриншот:

Описание.

Что же умеет делать этот редактор? Довольно много, но разработка еще в самой начальной стадии, надеюсь, что дело скоро дойдет до пре-альфы.

Тайлсеты.

Ни одна карта в мейкере, кроме нарисованных вручную, не обходится без тайлсетов, так что, ориентируясь для начала на него, и здесь есть тайлсеты.

Дерево тайлсетов.

Тайлсеты организованы в виде дерева - файловой структуры, - на концах которого находятся сами файлы тайлсетов. Интерфейс продуман довольно общий, и, при желании, можно будет их грузить из БД или облака, а пока, при создании тайлсета, можно указать папку, в которой распределены графические файлы. 
Тайлсет сохраняется в свой бинарный формат, содержащий признак репозитория, корень и относительные ссылки от него на файлы.
Программа позволяет добавлять в уже созданный тайлсет файлы из других папок и даже создавать каталоги, но начальный тайлсет основывается на одной папке (внутри могут быть подпапки). Другие варианты хранения в будущем могут реализовываться и по-другому, а пока так.

Создание тайлсета.

Вот форма создания нового тайлсета:

Выбирается путь к папке, размер сетки (важно помнить, что карты будут иметь такой же размер сетки, что и их тайлсеты) и набор свойств тайла

Существует довольно прозрачный механизм свойств, и, далее, будет предоставлен API для дописывания своих свойств в сторонних программах, подключаемых как dll.
А пока есть три встроенных свойства тайла: проходимости и приоритет, которые используются далее, для простых экспортов карт в мейкер.
В этой форме можно выставить дефолтные значения свойств, которые, при желании, можно переопределить далее.

Редактирование свойств тайлсета.


Как видно из первого скрина, редактирование тайлсетов происходит наживую. Пользователь может маппить карту и редактировать тут же тайлсет, не заходя в какие-то другие окна.
Для удобства, есть возможность редактировать свойства сразу группы тайлов (на скриншоте выделены через CRTL и показаны желтым).
Свойства показаны сверху, и показываются все те, что были включены в тайлсет при создании.
[Offtop:
Возникает несколько задач, о которых мы будем еще думать:
- изменение набора включенных свойств и их дефолтных значений
- изменение размера сетки
]
В процессе редактирования карты, мы так же выбираем из тайлсета тайл или группу тайлов и рисуем.
[Offtop:
Возникает еще задача, над которой уже думается, но в альфе не будет:
- показ (агрегированных) значений свойств выделенного тайла карты, либо на карте, либо тут же, где и для тайлсета; интерфейс для функции агрегации.
]

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

5 комментариев:

  1. Здорово! Я очень доволен =) Удачи с разработкой :)

    ОтветитьУдалить
  2. Хм... Подожду альфа-версии, пока всё выглядит несколько сумбурно на мой личный взгляд.

    ОтветитьУдалить
  3. кстати, а сетка может быть полупрозрачной или хотя бы пунктирной? а то очень уж в глаза неприятно бросается, судя по скриншоту

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

      Удалить
    2. Хорошо, пусть будет полупрозрачной)

      Удалить