Комментарии проекта Fly Data Processor
38

Главная страница

» Fly Data Processor

Краткие сведения

Для игры: Warcraft 3
Тип: Утилита
Сфера применения: работа с данными РО, базы данных
Требования: JNGP, Java 7, руки, мозг
Статус: в разработке
Автор: prog

Читать далее...
prog #25 - 10 years ago 0
Голосов: +0 / -0
В ближайшее время выложу обновленную версию утилиты. Пока нет интерфейса, зато она стала очень быстрой и очень модульной. Заодно был наведен порядок в файлах - теперь данные вынесены в отдельную папку и не пересекаются с файлами самой утилиты.
prog #26 - 10 years ago 0
Голосов: +0 / -0
Запилил exe-враппер. Записи в Path вроде не требует, работает как лаунчер, без включения jar-ника в exe. Не обошлось без побочных эффектов - теперь во время работы утилиты отображается консоль с выводом текста от логгера. Убрать это можно, но пока оставлю как есть - это лучше чем зависание редактора без видимых признаков работы на время обработки данных утилитой.
prog #27 - 10 years ago 0
Голосов: +0 / -0
Руководство дополнено разделом с достаточно подробной спецификацией шаблонов. На очереди карта-пример и несколько трюков, не упомянутых в спецификации.
prog #28 - 10 years ago 0
Голосов: +0 / -0
Запилил себе десяток заданий как план действий на ближайшее будущее.
prog #29 - 10 years ago 0
Голосов: +0 / -0
ScorpioT1000, дались тебе эти кампании) для них всеравно надо допиливать чтобы данные из двух файлов брались - из файла данных кампании и из файла данных карты. А завернуть в загрузчик не проблема.
Doc, я пользовался в последний раз launch4j, там дофига всяких настроек, включая загрузку джавы с сайта, если нет нужной версии, но мне не до того было чтобы проверять требует ли он записи пути к java в PATH.
В общем, следующую версию буду выкладывать завернутую в exe.
Пришло время перепилить утилиту так чтобы она состояла из нескольких плагинов и центрального ядра. Так будет удобнее.
ScorpioT1000 #30 - 10 years ago 0
Голосов: +0 / -0
Doc, может сделаете? Многим юзерам будет полезно, и сделать типа две версии.
prog:
Doc, хорошая мысль, спасибо. Если это избавит от необходимости прописывать PATH, то следующую версию обязательно заверну в какой-нибудь загрузчик, ну а если нет, то это подождет т.к. особого удобства не принесет - не думаю что найдутся извращенцы, которые будут пользоваться этим в консольном режиме, а не через JNGP.
я бы заюзал, для кампаний то =)
Doc #31 - 10 years ago 0
Голосов: +0 / -0
Вроде как избавляет. По крайней мере не наблюдал проблем с PATH. Юзаю jar2exe wizard. Можно извратиться и сделать вообще через Excelsior(тогда жава не нужна будет), но будет много весить.
prog #32 - 10 years ago 2
Голосов: +3 / -1
Doc, хорошая мысль, спасибо. Если это избавит от необходимости прописывать PATH, то следующую версию обязательно заверну в какой-нибудь загрузчик, ну а если нет, то это подождет т.к. особого удобства не принесет - не думаю что найдутся извращенцы, которые будут пользоваться этим в консольном режиме, а не через JNGP.
Doc #33 - 10 years ago 3
Голосов: +4 / -1
Предлагаю перепилить .jar в .exe для пущего удобства.
prog #35 - 10 years ago 0
Голосов: +3 / -3
Да, я так и собирался сделать, но пока занимаюсь руководством по использованию. Если тебе видны скрытые неопубликованные ресурсы - там пока только структура страниц готова.
ScorpioT1000 #36 - 10 years ago 1
Голосов: +3 / -2
Найс, запостил. Я думаю, файл можно запилить как отдельный ресурс и потом добавлять новые версии как отдельные ресурсы =)
prog #37 - 10 years ago 0
Голосов: +1 / -1
В ближайшее время напишу руководство пользователя и подготовлю карту-пример - на самом деле все далеко не так сложно, как кажется.
6

WIP

» Fly Data Processor
Этот раздел предназначен для выкладывания и обсуждения разрабатываемых или требующих дополнительного обдумывания идей. Здесь-же будут размещены все сообщения, касающиеся текущего состояния утилиты.
prog #3 - 10 years ago 0
Голосов: +0 / -0
Ввиду малого количества свободного времени работы над утилитой продвигается достаточно медленно, но все-же продвигается. К примеру, недавно был закончен плагин, отвечающий за добавление в модель категорий и категорий с параметрами.
На данный момент конструкция "категория.объект" позволяет проверить принадлежит ли объект к категории(путем неописуемых извращений стало возможным в качестве ссылки на объект использовать в этой конструкции не только равкод, но и шаблонные переменные). Дополнительные параметры, присвоенные объектам через категории, доступны обычным способом - через конструкцию "объект.категория".
Синтаксис задания категорий и параметров объекта через поле "suffixEditor" в РО выглядит так:
произвольный текст список категорий
Категории в списке могут быть разделены пробелами или заключены в квадратные скобки. Название категории от параметра отделяется двоеточием. На данный момент допускается только один параметр для каждой категории.
При попытке получить значение поля suffixEditor будет возвращен только текст до символа @, обозначающего начало списка категорий.
Также немного изменился синтаксис доступа к обычным полям объекта. Для полей, не имеющих уровня все осталось по прежнему, а вот для тех, что могут принимать различные значения на разных уровнях был принят синтаксис "объект.поле[уровень]", как для обращения к элементам массива. Также, в случае если уровень полей объекта заведомо ограничен первым, все поля первого уровня становятся доступными через обычную конструкцию для доступа к полям без уровня: "объект.поле".
Добавлена возможность получать как TRIGSTR_ версию текстовых полей, так и их подлинный текст. Для обращения к подлинному тексту используется конструкция "объект.поле_STR".
Добавлена дополнительная компиляция шаблонов при использовании циклических ссылок первого уровня вложенности. Это позволяет избежать казусов со ссылками в текстовых полях на другие текстовые поля, использующие шаблоны (в таком случае шаблоны из импортированного текстового поля не компилировались). Возможно, в дальнейшем будет введен параметр, отвечающий за глубину обработки циклических ссылок на текстовые поля, позволяющий задать больший допустимый уровень вложенности (каждый уровень вложенности это дополнительный проход по файлу в поисках шаблонов).
prog #4 - 10 years ago 0
Голосов: +0 / -0
И так, работа с плагинами практически завершена, в частности доступ к данным в формате РО осуществляется через набор плагинов, каждый из которых отвечает за отдельный файл с данными. Более того, для основных типов плагинов разработаны абстрактные классы, содержащие базовую функциональность, что позволяет минимизировать объем кода непосредственно в классах самих плагинов.
» пример класса файлового плагина
public class UnitLoader extends AbstractDataLoaderPlugin {

    private static final int PLUGIN_ID = 100;
    private static final String PLUGIN_MESSAGE = "unit loader is here";
    private static final Path FILE_PATH = FileSystems.getDefault().getPath("fly", "war3map.w3u");
    private static final DataObjectType OBJECT_TYPE = DataObjectType.UNIT;
        private static final boolean IS_EXTENDED = false;
    @Override
    public String getMessage() {
        return PLUGIN_MESSAGE;
    }

    @Override
    public int getId() {
        return PLUGIN_ID;
    }

    @Override
    public Path getPath() {
        return FILE_PATH;
    }

    @Override
    public boolean isExtended() {
        return IS_EXTENDED;
    }

    @Override
    public DataObjectType getType() {
        return OBJECT_TYPE;
    }
}
Осталось уточнить некоторые особенности формирования модели, используемой библиотекой FreeMarker при обработке шаблонов.
prog #5 - 10 years ago 0
Голосов: +0 / -0
Распараллелил загрузку данных из файла. Стало чуть быстрее, но как-то не очень ощутимо. Попробую выпилить большую часть логирования, должно стать быстрее.
Так и есть, чертов логгер тормозил. Выпилю все лишнее логирование - будет летать.
Все, оставил только самые важные записи в логе. Срабатывает моментально. На все про все уходит меньше секунды.
Первая версия, работающая с плагинами, успешно протестирована. На очереди перенос существующего функционала в плагины.
prog #6 - 10 years ago 0
Голосов: +0 / -0
В ходе рефакторинга возникла идея попытаться реорганизовать работу с категориями и ввести параметризованные категории.
  • возможно введение нового синтаксиса проверки на принадлежность объекта категории в виде "категория.объект"
  • синтаксис присвоения объекту категории в РО будет дополнен: [категория:параметр]
  • для категорий с параметром при обращении вида "объект.категория" будет возвращаться значение параметра, в случае возникновения конфликтов или введения поддержки множественных параметров, синтаксис будет дополнен
5

Руководство пользователя

» Fly Data Processor
Руководство, посвященное использованию утилиты Fly data processor, начиная с установки и заканчивая написанием шаблона для генерации простейшей базы данных.

Читать далее...
prog #2 - 10 years ago 0
Голосов: +0 / -0
Время работы утилиты сокращено примерно до одной секунды за счет отключения избыточного логирования.
prog #3 - 10 years ago 0
Голосов: +0 / -0
Doc, около четырех секунд при достаточно большом количестве данных, если верить логам. Главная задержка на этапе считывания данных по объектам из файлов данных. Это можно попробовать ускорить за счет использования нескольких потоков. Тогда, как минимум, время считывания сократится примерно до времени считывания самого большого файла.
Также можно попробовать оптимизировать работу парсера и компилятора шаблонов, отдавая ему только заведомо содержащие шаблоны блоки, но это даст сомнительный прирост в скорости работы.
Еще можно отключать обработку файла строк и выполнять ее только для тех версий карты, которые будут выложены в общий доступ. Это оправдано, учитывая что сейчас готовый файл строк не импортируется обратно в карту чтобы не затереть шаблоны. Только затраты времени на это несоизмеримы с временем загрузки данных из файлов.
Doc #4 - 10 years ago 0
Голосов: +0 / -0
все прочитал, классно, мне нраица.
ну а время работы всего этого? 4 секунды вроде говорил? если так, то многовато, у меня так карта сэйвится(с отключенным интерфейсом у парсера векса)
prog #5 - 10 years ago 0
Голосов: +0 / -0
недоступные разделы пока находятся в стадии разработки
7

Спецификация шаблонов

» Fly Data Processor
Полная спецификация разновидностей шаблонов для Fly Data processor.

Читать далее...
prog #2 - 10 years ago 0
Голосов: +0 / -0
Ключевой фактор тут время, а не сложность)
ScorpioT1000 #3 - 10 years ago 0
Голосов: +0 / -0
посмотри в scExp.lua там сразу все ясно дб) они если что работают с реестром (состояния)
prog #4 - 10 years ago 0
Голосов: +0 / -0
Заманчивое предложение. Но это не раньше чем я осилю добавление менюшек через JNGP - у рядовых пользователей должна быть возможность без проблем отключить мою утилиту, не редактируя файлы JNGP вручную. Это не сложно, как мне кажется, но требует времени, которого мне и так не хватает.
ScorpioT1000 #5 - 10 years ago 0
Голосов: +0 / -0
Кароче такое предложение - как выйдет более менее рабочая бета, напиши мне, мы пересоберем jngp experimental и зальем новый =)
prog #6 - 10 years ago 0
Голосов: +0 / -0
Дык глава то посвящена именно препроцессору) практика будет в следующих двух главах, в основном в последней. В демонстрационной карте точно будет способность на основе БД, описанная во вступлении к руководству, ну и всякой другой фигни по мелочи.
С шаблонами в описании особо заморачиваться не буду пока - там есть несколько проблем, не только потеря шаблонов при импорте обработанного файла строк. Если эти проблемы будут решены, то для шаблонов в описаниях появятся дополнительные возможности и глава, посвященная этим возможностям. Например я хочу ввести локальные переменные, видимые только в описаниях и принимающие значения, актуальные для текущего описания. Это, как минимум, ${this} и ${level}.
ScorpioT1000 #7 - 10 years ago 0
Голосов: +0 / -0
Ну, это примеры самого препроцессора. Больше практики давай =) именно вар. я описывал в той теме всякие примеры типа изменения переменных через наборы способностей, сеты предметов итп