GET FROM ASSET STORE
Привет всем! Вы хотите быстро разрабатывать игры и прототипы? Тогда добро пожаловать в новую систему визуального программирования и редактора логики PANTHEA
Кто мы такие: мы команда Endemics Studio с более чем 10 годами опыта в игровой индустрии, мы работаем с Unity начиная с версии 2.1.
Наш сайт: http://endemics.org
Сайт Panthea VS:http://panthea.endemics.org (здесь вы найдете документацию, форум и описание ключевых особенностей)
В чем мы отличаемся от других систем:
• Главное отличие в том, что система построена вокруг ScriptableObject, проще говоря она не использует компонентную систему Unity3d. Компоненты используются только там, где без этого не обойтись, например, физика, и даже в этом случае, все делается автоматически. Таким образом вся логика и все ссылки на объекты сцены и префабы настраиваются в диаграмме. Работа с инспектором Unity для конечного пользователя сводится к настройке контента.
• Поскольку вся логика находится внутри диаграммы и не привязана напрямую к объектам через компоненты, то в системе Panthea VS возможна загрузка и исполнение диаграмм (и как итог логики) в процессе работы приложения из любого места будь то Asset (через WWW или ссылку) или файл на диске. При этом, если в диаграмме нет ссылок на объекты, она может быть использована как шаблон в других сценах. Также исполнение диаграммы возможно, как из другой диаграммы, так и из кода.
• Поскольку у нас есть возможность исполнять и загружать диаграммы извне, мы сделали возможность использовать диаграмму как инстанс (копию). Т.е. если диаграмма оперирует каким-то объектом (допустим это движение NPC), то вы можете выполнить/запустить ее для нескольких объектов в цикле, и каждая копия диаграммы будет оперировать своим объектом.
• В фундаментальном подходе, в отличии аналогов BluePrints (Unreal Engine 4) систем, которые получают через рефлексию все публичные методы и свойства у классов, которые в свою очередь являются базовым блоком, которым оперирует пользователь (фактически создает цепочки вызовов функций), система Panthea VS строится вокруг элемента, который является не просто некоей функций, а сущностью, которая реализуют любой функционал (по аналогии с Unity3d это скрипт наследник MonoBehaviour). Чтобы было понятно, элемент — это блок, который может содержать любой функционал (от простого сложения чисел, до реализации какой-либо механики) и иметь множественные точки входа в блок и выхода из него. Так, например, у нас есть элементы, реализующие DragAndDrop для Unity GUI, Sprite и GameObject, есть элементы управления цветом во времени, изменения видимости объекта, слежение за объектом и т.п.
• Важным отличием от аналогов является возможность переопределять внешний вид для собственных элементов в диаграмме, причем на нескольких уровнях, от полного переопределения, до замены определенных виджетов (заголовка, точек входа и выхода и т.п.), переопределение работает аналогично CustomEditor в юнити. Помимо этого, при работе с кодом элемента, возможно использование Custom Property Drawer.
• В системе Panthea элемент может содержать несколько точек входа и выхода и между ними может быть несколько связей, поэтому у нас есть возможность настраивать порядок их вызова. Это повышает гибкость построения логики, т.е. возможен как линейный вариант, так и параллельный.
• Базовый блок в системе Panthea VS (элемент) может быть конфигурируемым по составу входных и выходных точек, также есть возможность создавать полностью динамические входные точки (включая тип данных, которые они принимают). Например, у нас так работает элемент сложения чисел, в параметрах элемента можно задать сколько угодно операндов. Также входные и выходные точки могут инвертироваться, чтобы диаграмма была более компактна, и сам элемент может сворачиваться в минимизированное состояние.
• Несмотря на то, что элемент в нашей системе это ScriptableObject, он поддерживает вызовы методов Start, Update, LateUpdate, FixedUpdate, а также Coroutine. При этом все эти вызовы делаются в одном месте. Помимо этого, можно установить в коде порядок вызова таких методов. Простой пример:
Синтаксис:
Используется csharp
[ElementDefinition(Name = "Start", Path = "Mono", Tooltip = "Call Start Mono method", Color = VSEColor.Green)]
public class StartElement : Element
{
public OUTPUT_POINT DoStart = new OUTPUT_POINT();
[ExecuteOrder(Order = 1)]
void Start()
{
DoStart.Execute();
}
}
public class StartElement : Element
{
public OUTPUT_POINT DoStart = new OUTPUT_POINT();
[ExecuteOrder(Order = 1)]
void Start()
{
DoStart.Execute();
}
}
• Для тех, кто интересуется технической частью хотелось бы отметить, что элементы при связи друг с другом не используют рефлексию. Рефлексия используется только для инициализации диаграммы и для вызова методов Start, Update и т.п. и даже в этом случае вызовы оптимизированы так, чтобы не использовать медленный вариант через MethodInfo.Invoke.
• Также у нас очень подробная документация которая включает в себя руководство пользователя по работе с редактором, описание всех элементов, руководство по программированию элементов и документация по API.
О текущем состоянии системы:
- • Система находится в релизной версии 1.1.0 (мы вышли из беты 1.0.0b1)
• Сейчас в системе свыше 300 элементов, разной сложности, которые в целом позволяют реализовать игру без использования внешнего кода в принципе.
• Система проверена в работе на платформах Android, iOS, WebGL, PC/MAC, UWP (IL2CPP)
• Система поддерживает все версии Unity (Personal, Plus, Pro)
- • Новые элементы (в частности работа с IAP, работа с новыми подсистемами Unity)
• Новые комплексные элементы для механик (Match3 (с ИИ), простые механики (Карточки, Сортировки, Сравнение Картинок, Паззлы), механики для TPS, стратегий и т.п.)
• Поддержка и интеграция сторонних плагинов (будем смотреть по запросам, как минимум Prime плагины и соц. сети)
• UML аналог для диаграмм. Каркасная настройка логики (создание диаграмм, связей между ними, как прямых, так и через глобальные события), просмотр в дебаг режиме текущего состояния (нахождения в диаграмме, переход в другое состояние).
Если вы Гейм-Дизайнер:
- • Создание прототипов без участия программистов
• Проверка идей, механик, логики.
• Создание простых и не только игр
• Реализация абстрактных механик (расчеты, поведенческие алгоритмы, ИИ и т.п.), которые затем могут быть использованы программистами в коде путем вызова и исполнения диаграммы в процессе работы приложения
- • Возможность создавать цепочки эффектов без участи программистов
• Создание абстрактной логики поведения визуальных эффектов, которые могут быть использованы программистами в коде путем вызова и исполнения диаграммы в процессе работы приложения
• Создание простых и не только игр
- • Создание элементов любой сложности и вынос событий требующих визуальных эффектов, с тем чтобы их настройку производили художники или гейм-дизайнеры.
• Создание элементов для поддержки работы художников и гейм-дизайнеров
• Быстрое создание прототипов игры и механик.
• Поддержка изменения поведения логики на лету (через запуск нужных диаграмм)
• Обновление логики без обновления приложения (загрузка новых диаграмм по сети)
PS: мы приветствуем стороннюю разработку элементов и их бесплатное распространение через Asset Store (также можно выкладывать их на нашем форуме)
Если вам понравилось система Panthea VS, добро пожаловать в AssetStore. GET FROM ASSET STORE
Список изменений по сравнению с 1.0.0b1 версией:
• Добавлена возможность группировать элементы:
- o Установка группы для выделенных элементов
o Настройки имени группы и цвета группы
o Добавление в группу новых элементов через перетаскивание или контекстное меню
o Удаление элементы из группы
o Поиск по группам
• Произведена оптимизация работы редактора
• Добавлена поддержка Unity 2017.2 в редакторе (события playModeStateChanged)
• Исправлены ошибки редактора
- o Ошибка привязки к сетке
o Ошибка вывода связей между диаграммами
o Ошибка установки порядкового номера, в случае если устанавливается номер только одной связи
o Ошибки при копировании элементов через кнопки меню редактора диаграмм
o Убрано размытие шрифтов при выводе передаваемых данных между элементами в режиме отладки
- o Ошибка в элементах GameObjectAddComponent и GameObjectGetComponent в Unity 2017.2
o Ошибка сэмплирования элементов массива и списка для случайного режима
• Обновление окна вывода схемы взаимодействия диаграмм
• Добавлена возможность открывать диаграммы по двойному клику напрямую из схемы взаимодействия диаграмм
• Добавлены новые элементы:
- o UnityAds – элемент для работы с рекламой Unity
o UnityAnalyticsCustomEvent, UnityAnalyticsMonetization, UnityAnalyticsUseAttribute – элементы для работы с аналитикой Unity
o AutoHideSceneObject – элемент сокрытия объектов через замену материалов, которые находятся между камерой и целью.
o CheckingObjectInViewPort – элемент проверки нахождения объекта в области видимости камеры.
o FPSWalker – элемент контроллер для шутер от первого лица
o FPSLook – элемент управления взглядом для шутера от первого лица
• Добавлен пример игры Поиск Пар (с контентом)
• Добавлен вывод информации о данных, содержащихся в ассете локализации.
• Произведен рефакторинг системы переопределения внешнего вида элементов