Добавлен , опубликован
Приветствую вас на странице данного проекта!
Этот проект - о редакторе для Unity. Не про игру и не про мод, вот такая скукотища.
Очень часто, по мере создания наших игр нам предстоит вводить какие-то уникальные сценарии. Самые начинающие пишут для этого отдельные скрипты (которые распространяются на весь проект, а не на частную ситуацию), чуть более продвинутые - пишут универсальные инструменты, позволяющие сделать какой-то стандарт действий. Ну а самые прожаренные используют редакторы наподобие вот такого.
Редактор во время разработки имеет тенденцию постоянно переписываться. Причин для переписывания много, но как видно это откладывает релиз постоянно. Засим прошу простить.
Итак, краткая история:
Попытка 0
Здесь где-то была попытка. Однако я ничего о ней не помню, кроме того что она была. Скринов той работы не сохранилось.
Попытка первая
Редактор планировалось сделать приблизительно похожим на варкрафтовский, но с некоторыми изменениями "по ситуации". В основу концепции вкладывалось сделать "иерархический редактор", с триггерами и базовыми функциями программирования. В остальном все точно так же, как и сейчас.
"Чудо" оказалось слишком уродливым и неоптимизированным. На тесте вышло, что некоторые алгоритмы во времени работали неверно из-за фундаментальных ошибок в архитектуре. С этим, кстати было еще много проблем.
Попытка вторая
Редактор был улучшен визуально, интерфейс был заметно улучшен. Код так же был переписан на "чистовик". В основе концепции хотелось сделать "рантайм" проверку изменений, что однако не вышло совершенно. Плюсом иерархия оказалась слишком тяжелой для поддержки. Несмотря на хорошее начинание заканчивать это не было никакого желания, хотя многие наработки оттуда еще буду долго использовать в других проектах. В общем плюс в разработке был, но снова провал.
Здесь был важный плюс, что в отличие от нулевой версии не происходило бешеного спавна окошек без надобности.
Финальной проблемой стало то, что я осознал,насколько медленно.
Попытка третья
В основе этой концепции лежало то, что объекты должны быть максимально компактными и должно быть удобно редактировать любую часть, неважно насколько глубоко она лежит. В общем и целом эта концепция мне нравится. Так же здесь были добавлены некоторые фичи в духе привидения типов друг к другу. Основной критерий - компактность и доступность выражений, так как ее отсутствие сильно мешало в предыдущем случае.
Попытка четвертая
А херня. Скрины как раз от этой попытки.
Попытка пятая
Снова пробуем-с
Когда у меня возникла необходимость использовать подобный редактор, я был очень возмущен тем, что не смог найти ничего столь же удобного и привычного как некогда видел в WarCraft III. Фактически, это и явилось отправной точкой для создания редактора.

Отличия от редактора триггеров WarCraft III

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

Расширяемость

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

Создавайте свои сущности из уже имеющихся

Пользовательские сущности - формируют новые сущности из нескольких уже готовых, но действуют только в рамках текущей карты/сцены. Вы сможете создавать:
  • действие из условий и действий
  • условие из нескольких других условий
  • событие из события и условий

Используйте любые функции из кода

Добавление методов в проект - добавление новый условий и действий на основе функций, которые есть в вашем коде.

Создавайте сущности через наследование

Наследование от класса действия - для действий во времени, которые невозможно описать в рамках одного метода доступна возможность реализации отдельным классом

Локальные переменные

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

Несколько способов запуска

Помимо стандартных "триггеров" команды можно прицепить в любое удобное место и они так же будут выполняться (и так же будут иметь доступ к редактированию, хоть из инспектора).

Связанность со сценой

Редактор может брать данные и объекты со сцены (это скорее отличие от других редакторов сценариев в Asset Store)

Минусы - а как же без них?

На текущем этапе разработки у редактора есть ряд минусов, которые немного ставят палки в колеса:
  • Нельзя использовать редактор для разработки мобильных приложений - триггеры используют рефлексию, которая насколько мне известно там не поддерживается. Однако этот минус в принципе устраним, это хорошая новость.
  • Невозможно перевести триггерные сценарии в код и скомпилировать - они используются только для сцены и никак иначе
  • Данный редактор работает существенно медленней чем код, так как вынужден бороться с тонкостями сериализации движка (хранить данные приходится в более тяжелых объектах чем сами данные).

Прогресс

На текущем этапе редактор уже был собран и проверен на работоспособность и сейчас переписывается с целью удобства его использования, удобства кода в принципе (мне же его еще поддерживать!), а так же реализации некоторых дополнительных возможностей, которые при текущей тех части быть не могло.
Очень много внимания уделяется скорости работы самого редактора - на первых этапах у меня это выходило довольно-таки плохо и редактор дико зависал на каждом вздохе. Но большинство таких мест к счастью уже исправлено.
Закончить разработку намереваюсь за это лето, где-то после конкурса.
66% - Очень приблизительный прогресс

Коммерциализация

Данная наработка после релиза будет платной. Однако, в рамках сообщества XGM она будет распространяться путем выдачи ключей, которые позволят использовать плагин во всей красе просто за красивые глаза :)
Я думаю, что данная наработка поможет многим пользователям XGM перейти со StarCraft и WarCraft на Unity, или хотя бы просто порадует глаз разработчика старым добрым интерфейсом..

Скриншоты

Немного скриншотов не помешает. Однако, они быстро устаревают и в переписанном виде вас будет ожидать нечто поудобнее.
1
37
10 лет назад
1
Однако, в рамках сообщества XGM она будет распространяться путем выдачи ключей, которые позволят использовать плагин во всей красе просто за красивые глаза :)
Решил пойти таким вариантом? Я, честно говоря, так и не додумал то, что ты просил насчет скрытого скачивания. Но, думаю, и так хорошо будет. Развивайся и держи 2 уровень.
1
13
10 лет назад
1
Интереееесненько. Меня волнует лишь падение производительности.
1
26
10 лет назад
1
Триггеры - не особо эффективная версия организация логики. Не лучше бы сделать блок-схемы? Если не ошибаюсь, именно такая система на этот момент задействована в самом известном ассете по визуальному программированию, да и в Unreal Engine.
0
15
10 лет назад
0
Ммм, с этой шуткой обязательно попробую юнити. Интересно
штукой*
2
27
10 лет назад
Отредактирован Devion
2
EfReeZe, за производительность вот смотри
Падение производительности будет значительное при мелких операциях (они кстати и не должны быть основой сценария). Почему: все данные, аля int, bool и прочие оборачиваются в класс для того чтобы их можно было сохранить и в случае чего подменить например функцией или ссылкой которые возвращают этот тип. Создание класса - довольно-таки не быстрая операция. Однако это происходит при срабатывании триггера и дальнейшие вычисления уже 1 к 1 с реальным кодом (так как дальше и идет реальный код).
Во всех остальных случаях использование редактора сценариев выгодно по нескольким причинам:
  1. Это качественная вещь для работы со временем
  2. Нативный код будет нагружать сборку и если проект большой, то единичный случай оформлять кодом ну просто дико. То есть для больших проектов больше выгоды от использования - скажем поговорил по квесту в рпг с кем-нибудь, надо выполнить последовательность - закрыть опеределенный квест, дать предметы, передвинуть собеседника, взорвать дом, проиграть анимацию - да что угодно - нативный код сюда не подставишь. А такая система это то что нужно (в этой гибкости и есть прямое назначение).
  3. Падение производительности это такие мкс, что пользователь даже при тысяче таких ничего не почувствует.
  4. При нормальной работе с действиями, единственная задержка - вызов под рефлексией. То есть мы можем вызвать любую функцию - только вызов самой функции через рефлексию будет чуть дольше (меньше чем мкс), а то что произойдет внутри функции - это уже нативный код,
Соответственно встает выбор:
  • Описывать нестандартные сценарии через натив и иметь мусор в коде
  • Использовать систему сценариев с незначительной потерей производительности при вызове (в остальном это те же наши куски кода, как я сказал выше)
От потери производительности тут никуда не деться, но цель системы изначально нацелена на ситуации в которых нужны гибкие алгоритмы и условия часто могут меняться.
А вообще эта штука делает то, чем ее наполнишь.
+ разработка такова что данные редактора не засоряют игровой билд лишним и ненужным что редкость для таких систем.
lentinant, кому что, лично меня от блок схем просто выворачивает. Когда их становится много то это имхо больше напоминает кашу, а не порядок. + я разрабатываю то что нравится и нужно лично мне, иначе и запала делать не появится, так что в этом плане как-то так :)
0
15
10 лет назад
0
респект тебе, мне бы очень пригодилось
3
21
10 лет назад
3
Сделаем из Unity3D новый Warcraft 3!
1
29
10 лет назад
1
Очень круто!!! Зачет)
Extravert:
Нативный код будет нагружать сборку и если проект большой, то единичный случай оформлять кодом ну просто дико. То есть для больших проектов больше выгоды от использования - скажем поговорил по квесту в рпг с кем-нибудь, надо выполнить последовательность - закрыть опеределенный квест, дать предметы, передвинуть собеседника, взорвать дом, проиграть анимацию - да что угодно - нативный код сюда не подставишь. А такая система это то что нужно (в этой гибкости и есть прямое назначение).
Когда в варе делал диалоговую систему, не хватало её интеграции со стандартными триггерами и поэтому все диалоги приходилось писать ручками или тоже самое с HLL, все элементы надо было прописывать ручками.
0
27
10 лет назад
Отредактирован Devion
0
alexprey:
Когда в варе делал диалоговую систему, не хватало её интеграции со стандартными триггерами и поэтому все диалоги приходилось писать ручками или тоже самое с HLL, все элементы надо было прописывать ручками.
Да, да.. Кстати в своем проекте я использую это в том числе для диалоговой системы - условие появления ветки, действие при выборе ветки и тому подобные. Как было описано выше, можно подключить редактор в нужном месте и, выбрав конкретно что нужно (например, только условия), работать с ним.
6
33
10 лет назад
6
Гениальная идея! Даже иконки варкрафтовские, какая прелесть =3
0
15
10 лет назад
0
Очень круто, удачи!!!
2
2
10 лет назад
2
Если честно, то не особо понял. Это будет модификатор для редактора warcraft 3? Если да, то можно ли будет его сочетать с JNGP (потому как многие наверняка превысят лимит по декору)?
0
21
10 лет назад
0
risk, это для Unity3D, а не для варкрафта
1
25
10 лет назад
1
Вау, редактор вар3 на юнити? Круто, почему я раньше не видел этого проекта?
0
27
10 лет назад
0
sleep, уже не вар3. Читай ласт стори, я решил его упростить и он теперь выглядит иначе.
4
25
10 лет назад
4
Extravert, жаль, вар3 на юнити был бы успехом :с
2
29
10 лет назад
2
sleep, я думаю, что будет лучше
0
27
10 лет назад
0
Вообще в плане редактирования команд - точно быстрее.
Для наглядности нарисовал скетч гуи для редактирования числа. Такие гуи доступны для всех сериализуемых движком типов + особый тип обработки для действий. Собственно во внутренних прямоугольниках при любой вложенности мы можем редактировать параметры. Сноски справа позволят поменять значения местами или изменить редактирование (значение/метод/переменная) в этом прямоугольнике.
Выглядеть это будет шире, чем старые команды "как в варкрафте", но работать с этим получится быстрее. Кроме того я думаю комбинировать несколько способов вывода, например сворачивать списки если значений много под кнопку. Плюс такие редакторы мы можем вставить куда угодно, под любой тип и в любой ситуации, а не только по схеме "события->условия->действия" и в общем окне, как это делается в варкрафте.
Загруженные файлы
Этот комментарий удален
Чтобы оставить комментарий, пожалуйста, войдите на сайт.