1.4.7436
середина сентября — прототип макросов
Новая альтернатива Auras / Behavior Trees — Macroses (совсем-совсем ранняя alpha)
Сейчас есть 3 способа собирать собственную логику:
1) Auras
Изначально в EyeAuras были только ауры, которые состоят из Triggers и Actions. Идея простая: когда срабатывает какой-то триггер, запускаются ваши действия.
Для простых сценариев в формате «событие → действие» это до сих пор отличный вариант — например, для отправки уведомлений в Telegram или автоматического использования HP/MP зелий.
Но как только логика становится сложнее, такой подход быстро становится трудно поддерживать: приходится продумывать ВСЕ возможные события и все реакции на них, в том числе те, которые могут происходить одновременно.
2) C# scripts
Чтобы решить эту проблему, я добавил скрипты. Они дают вам 100% контроль над ботом и его поведением.
Главный минус здесь в том, что пользователю нужно знать C# и уметь программировать. Кроме того, в некоторых случаях код — не самый удобный инструмент. Например, писать ротацию целиком на чистом C# может быть довольно сложно: нужно отслеживать кулдауны, учитывать приоритеты и многое другое. Для таких задач понадобился более удобный инструмент.
3) Behavior Trees
Behavior Trees — это другой подход к моделированию логики, который хорошо зарекомендовал себя в игровых движках, где с их помощью описывают поведение NPC и не только.
Они также решают проблему одновременных событий: вместо того чтобы пытаться запускать ВСЕ действия сразу, BT выполняют действия последовательно и позволяют выстраивать приоритеты при любых наборах условий. В некоторых сценариях это практически идеальное решение. Например, для построения ротации BT сейчас дают, пожалуй, лучший опыт.
Основная проблема BT — довольно высокий порог входа. А если умножить его на порог входа в сам EyeAuras, инструмент становится малодоступным для многих пользователей, особенно для тех, кто не занимается программированием. В итоге у таких пользователей часто оставался только один вариант — Auras со всеми их встроенными ограничениями.
Решение — Macroses
Это новый, четвертый вариант, который в будущем должен стать основной точкой входа для построения автоматизаций.
Идея простая: у вас есть набор команд, которые выполняются одна за другой. Эти команды могут проверять состояние других аур, нажимать кнопки, запускать скрипты и так далее. Также доступны циклы, условия и все, что обычно ожидается от подобного инструмента.
По умолчанию Macroses не являются реактивными — то есть они никогда не запускаются сами по себе, в отличие от Auras, которые всегда что-то делают. Чтобы запустить макрос, нужно либо привязать его к хоткею, либо настроить другое Enabling Condition. Когда условие выполнено, макрос либо отработает один раз, либо будет запускаться периодически.
И именно здесь раскрывается главная сила подхода: таким способом можно объединять ВСЕ три метода построения логики. Например, у вас могут быть Auras, которые отслеживают изображения, цвета или делают neural network inference; затем через IfThenElse можно проверить состояние этих аур и, если условие выполнено, передать управление в Behavior Tree или запустить скрипт.
Например, вы хотите, чтобы персонаж фармил мобов в определенной точке, а в случае смерти — воскрешался, пополнял ресурсы в городе и возвращался обратно. Если строить всю эту логику только на BT, появятся дополнительные сложности: например, придется постоянно отслеживать, находится ли персонаж в точке фарма или уже в городе.
С Macroses это решается проще: можно сделать один большой цикл, который работает, пока бот активен. Внутри этого цикла легко проверять, находитесь ли вы в городе — и тогда выполнять restock; а если персонаж в точке фарма, макрос может запускать farming behavior tree. В таком варианте не нужно ВСЕГДА описывать все возможные условия сразу, и логику бота можно удобно разбивать на части.
Macroses можно использовать даже просто для отправки последовательностей нажатий клавиш:

А можно строить полноценную логику rebuff/target/farm с условиями, циклами и скриптами:

В отличие от BT, этот инструмент намного проще и понятнее: по сути, вы собираете программу из небольших блоков. Думаю, это заметно упростит новым пользователям создание своих автоматизаций.
Новый узел — Mouse Move
Этот узел доступен и в Macroses, и в Behavior Trees. Пока это очень грубый прототип того, как он будет выглядеть в итоге.
В ближайшие недели его еще будут дорабатывать.
Сейчас есть два варианта узла: один для абсолютного перемещения мыши, второй — для относительного (с учетом текущей позиции курсора).
Исправления и улучшения
- [UI] Исправлена проблема со входом: username был чувствителен к регистру
- [BehaviorTrees] Исправлена проблема, из-за которой BT делали один tick при выполнении enabling conditions, даже если окно программы было активно
- [BehaviorTrees] Исправлена проблема, из-за которой BT не учитывали Enabling Conditions папки, в которой они находятся
- [UI] В код Import/Export внесено много изменений — что-то может сломаться, но теперь EA может поддерживать сколько угодно разных типов элементов (behavior trees, auras, macroses, folders и т. д.)
- [Capture] Исправлена проблема, из-за которой FPS иногда показывал неправильные значения
- [TetherScript] Добавлена поддержка настоящего относительного движения мыши. Предыдущая версия драйвера не поддерживала реальное перемещение мыши и запрашивала позицию курсора, что в ряде случаев вообще не работало — например, когда игра «прилипает» курсором к центру экрана
- [Scripting] Исправлена проблема, из-за которой code rewriters некорректно обрабатывали некоторые комбинации вызовов методов