Builds

Available downloads

Stable is the recommended track for most users. Alpha gets you the newest capabilities first.

Stable 1.9.9740 Alpha 1.9.9740
Windows 10/11 x64 Administrator rights
Release Notes

Track recent changes

Every release stays linked here so you can inspect what changed before you switch versions.

Release

1.4.7464

Permalink one month ago

Исправления и улучшения

  • [AuraTree] Элементы больше не выбираются автоматически при нажатии на load/unload/remove
  • [BehaviorTrees] Исправлена проблема, из-за которой C#-скрипты нельзя было редактировать
Release

1.4.7458

Permalink one year ago

ImageSearch improvement - added "Include All Matches"

Added new option "Include All Matches" which is intended to be used for some corner-case scripting purposes. By default, Image search finds best possible match and then tracks its movement - that way it can avoid scanning the whole image every frame. This new option disables all such optimizations and image is fully scanned on every tick. On a positive side - this gives you access to multiple candidates and their similarities. On negative - it destroys performance.

To get access to all found objects, you can use TemplateMatches which is returned as a part of ImageSearchTrigger.Refresh result

public interface IImageSearchDetectionResult : ICaptureTriggerDetectionResult
{
...

    /// <summary>
    /// Contains an array of all successful template matches and their bounds/similarity
    /// Will contain more than 1 element only if Include All Matches is enabled in ImageSearchTrigger
    /// </summary>
    public ImmutableArray<TemplateMatchResult> TemplateMatches { get; init; }

...
}

Include all matches

This is extremely CPU-heavy task. On 1920x1080 you'll probably have at most 2-3 FPS to do a full scan. This is a huge contrast to ML search, which on the same resolution for the same task can give you up to 60 FPS, so if you really need to detect multiple instances of some object, I would highly recommend to look into training Yolo model and using it instead.

Bugfixes/Improvements

  • [BehaviorTrees] Optimized how BTs work with deep nested structures a bit, increased max depth size from 64 to 1024 #EA-578 Nested tree v7444 by oddessax
Release

1.4.7448

Permalink one month ago

Улучшения MouseMove, KeyPress и TextSearch

Улучшения узлов MouseMove

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

Как и в Send Sequence, теперь можно привязывать X и Y, связывать ауры и точно задавать, куда именно нажимать на найденном изображении или объекте.

Есть два режима редактирования: простой и расширенный.

MouseMove simple mode

Расширенный режим выглядит так (да, элементов управления тут многовато).

MouseMove advanced

Узел KeyPress теперь поддерживает клики мышью и прокрутку колеса

Сейчас за отправку ввода, связанного с мышью, тоже отвечает узел KeyPress.

Пока я не уверен на 100%, что несколько отдельных узлов ввода действительно дадут лучший UX, так что посмотрим, как это покажет себя на практике.

KeyPress

C# scripting — улучшения TextSearch: добавлена сегментация

Триггер TextSearch теперь отдает текстовые сегменты и их координаты. Пока это доступно только через C# scripts, но уже позволяет кликать по конкретному слову.

Пример использования: https://wiki.eyeauras.net/scripting/examples/basic/click-on-text

В будущем похожая функциональность появится и в UI.

Folder Defaults — добавлен выбор Input Smoother

В свойствах папки теперь можно выбирать Input Smoother.

Input Smoother определяет, как именно курсор будет перемещаться из точки A в точку B и за сколько шагов это произойдет.

Как и остальные настройки, эта будет применяться ко всем элементам в папке: узлам, действиям, триггерам и т. д.

Input Smoother

Исправления и улучшения

  • [Macroses] Улучшен UX: drag'n'drop работает лучше, снижены задержки, исправлено несколько мелких проблем
  • [EventLog] Полоса прокрутки журнала событий теперь остается внизу даже после очистки лога
  • [BehaviorTrees] Исправлена проблема, из-за которой в некоторых случаях добавлялась лишняя связь
  • [Scripting] Исправлена ошибка в CancellableMethodStatementRewriter, из-за которой некоторые скрипты не компилировались
Release

1.4.7436

Permalink one month ago

Новая альтернатива 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 можно использовать даже просто для отправки последовательностей нажатий клавиш:

Send sequence

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

Rebuff

В отличие от 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 некорректно обрабатывали некоторые комбинации вызовов методов
Release

1.4.7399

Permalink one year ago

C# scripting improvements

One of the major features of EyeAuras is its C# script engine which allows to compile, load and execute your code in real-time. It is used in actions, triggers and behavior trees. Considering there is literally no restrictions on the code you can write, it is not uncommon to make mistakes in script code which could lead to crashes, deadlocks and all other usual problems in programming. I already wrote about this in 7060 changelog. In this version I've introduced an additional mechanism that will extend your code in attempt to try to mitigate some common mistakes, like not catching Task exceptions, using Thread.Sleep instead of EyeAuras-provided Sleep method which has much-much greater accuracy and is also cancellable or even doing infinite loops while(true){} instead of while(!cancellationToken.IsCancellationRequested){}.

All such cases and many other will now be analyzed before compilation and the code will be rewritten. Of course I can try to fix only some percentage of mistakes this way, the major responsibility is still on you, as script developer, to write the working code, but this mechanism will try to make life a little bit easier. We'll see how it goes and whether this mechanism will prove itself useful. Ideally, you should not even notice it working.

Please report anything strange you may notice!

Bugfixes/Improvements

  • [Crash] Fixed crash that occurred on Windows 10 Home(and N) due to missing OpenCL libraries
  • [Sublicenses] Sublicenses are now displayed in UI. Right now instead of pack name only Id is shown
  • [UI] EyeAuras license agreemenet popup window will now be automatically activated upon startup. This won't affect those who already accepted it at some point
  • [UI] Reworked import/export mechanism - should fix problems with behavior trees replacement and few other things
  • [BehaviorTrees] UI changes - reshuffled controls a bit, changed styles, etc. Let's see how the updated version will feel
  • [BehaviorTrees] Added errors visualization - if some node encounters an error it will now be shown in UI just like errors in auras
  • [Scripting] Released newer version of EyeAuras.SDK
Release

1.4.7358

Permalink one year ago

Yolo 10 support

Implemented test support for machine-learning models based on Yolo 10 which is bleeding edge tech for real-time object detection.

Yolo results

New release of YoloEase

YoloEase is an open-source automation tool which speeds up the process of getting good-enough models. Recently I've updated it to include a bunch of new features such as Yolo10, per-label filtering and few others https://github.com/iXab3r/YoloEase

SubTree-as-a-node

New functionality in Behavior Trees - you can now mark sub-trees as Shared. This will allow you to create nodes pointing to that specific sub-tree right from the toolbar.

Subtree

Bugfixes/Improvements

  • [Packing] By default, compatibility will be set to Current version rather than Latest
Release

1.4.7349

Permalink one month ago

Новый релиз

С прошлого релиза в stable-ветку прошло уже несколько месяцев (~15 недель), так что изменений накопилось очень много.

Коротко о главном:

  • новый сайт
  • переработка функциональности publish/subscribe
  • server-side packing — очень крупная фича, по сути целая инфраструктура, которая позволяет создавать собственные мини-приложения на базе возможностей EA
  • ОЧЕНЬ много улучшений и изменений в скриптах. Миграция WebUI на новый движок скриптов (v3) пока не произошла — это одна из целей следующего релиза
  • очень много изменений в behavior trees — технология всё ещё довольно новая, но уже сейчас вам как минимум стоит рассмотреть их вместо стандартного механизма аур, потому что после начального этапа освоения они обычно сильно упрощают жизнь
  • переработаны Enabling Conditions — теперь работают заметно стабильнее
  • исправлено почти с дюжину различных крэшей и закрыто в сумме около ~40 JIRA-задач

Основной фокус в этом релизе был на server-side packing и инфраструктуре сайта вокруг него. Надеюсь, со временем это станет основным способом распространения ваших мини-приложений: после ещё нескольких доработок и улучшений для новых пользователей всё должно сводиться буквально к нескольким кликам.

Новый сайт

Сайт заметно обновился внешне и функционально.

Самые заметные изменения:

  • главная страница
  • страницы с информацией о конкретных аурах, например: GTA5 fishing bot, Blum clicker, Lineage 2 bot
  • обновлены скриншоты, видео и список возможностей — теперь они ведут на соответствующие страницы Wiki
  • раздел загрузки больше не находится прямо на главной странице, и теперь видно дату релиза
  • информация о ценах тоже доступна сразу

Превью ссылок

Когда вы вставляете ссылки на сайт EyeAuras (https://eyeauras.net/) или даже на конкретные ауры (https://eyeauras.net/share/S20240426185158EYI4GEqRm2vh), будет показываться небольшое превью. Это работает в большинстве современных мессенджеров — Twitter, Discord, Telegram и т. д.

Telegram

Ревизии паков аур

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

Вот как это выглядит (Revisions внизу страницы): Пример — Blum clicker pack

Новая возможность — server-side packing

Теперь любой опубликованный пак аур можно скачать как отдельное portable-приложение, которое может работать параллельно с основным EyeAuras. Это должно сильно упростить онбординг новых пользователей: для них ваш пак аур будет выглядеть как обычная программа, которую можно скачать, распаковать и запустить.

Особенно мощно это работает в связке с Custom UI: по сути, вы можете сделать полноценную отдельную программу, а затем распространять её как portable app — при этом она получит несколько уровней anti-cheat защиты, почти с дюжину разных симуляторов ввода, высокопроизводительный захват изображения и ML-возможности.

Функция всё ещё на ранней стадии, но в будущем именно этот способ планируется как основной для распространения ваших работ другим пользователям — даже тем, кто уже пользуется программой. Portable-формат гарантирует, что приложение продолжит работать, даже если основная версия EyeAuras обновится с несовместимыми изменениями.

Download pack

P.S. Client-side packing будет включён чуть позже.

Переработка — Publish/Synchronize

Это улучшенная версия механизма импорта аур. Если дать ссылку на пак (например, кликер для крипто-игры Blum), можно получать уведомления об обновлениях сразу после того, как автор выпустит новую версию. Дополнительно встроена система «слияния» ваших настроек с настройками авторского пака (подробнее ниже).

Смысл механизма в том, чтобы авторам было проще распространять обновлённые версии паков аур, а пользователям — обновляться. В обозримом будущем в настройках пака также появится возможность указывать рекомендуемую автором версию программы, а механизм обновления сможет сам её скачивать и устанавливать.

Telegram

Права доступа

Сейчас обновлять пак может только тот, кто изначально его опубликовал. Механизм владения, который позволит назначать несколько владельцев пака, уже предусмотрен, но пока не готов.

Как подписаться на пак аур

В текущей alpha-версии, чтобы оформить подписку, нужно кликнуть правой кнопкой по любой папке и выбрать Publish/Syncronize.

Дальше просто вставьте ссылку на пак, на который хотите подписаться, либо оставьте поле пустым, чтобы создать новый пак (export + subscribe).

Publish/Synchronize window

Слияние локальной конфигурации пака с удалённой

Например, вы подписались на ауру, которая активирует заданное окно по нажатию F4. Она состоит из триггера HotkeyIsActive и действия WinActivate.

В версии 1 автор указал горячую клавишу F4 и имя окна MyGame. Вы подписались на этот пак и скачали его. Но F4 вам неудобна, поэтому вы поменяли её на F3. Затем автор обновляет пак и добавляет ещё одно действие (для примера это неважно). В программе вы получаете уведомление, что доступно обновление.

Когда вы нажимаете кнопку Update, механизм слияния анализирует, что именно изменилось. В этом случае он увидит следующее:

Локальные (ваши) изменения: HotkeyIsActive — hotkey изменён с F4 на F3
Удалённые (авторские) изменения: добавлено новое действие

Эти изменения не конфликтуют, поэтому механизм может создать промежуточную версию, которая включает и изменения автора (новое действие), и ваши изменения (hotkey F3).

Также возможна ситуация, когда автор тоже решит изменить hotkey (F4 => F2). В этом случае система обнаружит конфликт настроек. Сейчас при конфликте всегда приоритет отдается настройкам автора.

На вкладке Changes можно в любой момент нажать кнопку Download, чтобы посмотреть, чем ваши локальные настройки отличаются от текущего авторского пака — никаких изменений при этом внесено не будет, это только предпросмотр.

Changes

Activity Log

Улучшения и исправления в scripting

Добавлены cross-aura references

Долгожданное изменение, которое позволяет связывать между собой несколько аур с C#-кодом и переиспользовать методы, классы и всё остальное так, как будто это один общий скрипт.

Это позволяет один раз написать набор вспомогательных функций и потом использовать их везде, где они нужны. Надеюсь, теперь в больших проектах объём copy-paste сократится почти до нуля.

Изменение затрагивает и Auras, и Behavior Trees — если сослаться из Behavior Tree на Aura, то общий код станет доступен во всех узлах этого дерева.

Чтобы связать ауры, просто добавьте Reference, как на картинке ниже.

Code references

Зачем мне cross-aura references?

Например, в своей «библиотечной» Aura вы можете хранить набор классов для пользовательской конфигурации или код, который симулирует ввод каким-то особым способом. Или, например, код для отрисовки чего-то на экране через OnScreenDisplay.

Теперь можно писать собственный mouse input smoother — подробнее здесь

Input smoother нужен для того, чтобы движение мыши выглядело... ну, более плавным. Существует очень много разных алгоритмов, а в EyeAuras пока встроены только два.

В этой версии появилась возможность реализовать свой собственный smoother через скрипты, а затем использовать его где угодно — в behavior trees, в аурах и в других скриптах.

Следующий шаг, который я планирую, — дать возможность реализовывать в коде целый input simulator. Например, это позволит сделать метод ввода, который умеет отправлять input в фоновое окно. Я и сам хочу добавить такой вариант, но постоянно появляются новые задачи, так что хотя бы этим изменением я разблокировал тех, кто может написать это самостоятельно.

Обработка критических исключений в пользовательских скриптах

Раньше, если скрипт делал что-то совсем не то, что в обычной классической программе привело бы к crash, EyeAuras вёл себя так же. То есть если вы допускали ошибку в скрипте, вся программа падала сразу в момент её возникновения и показывала окно Error Report.

В каком-то смысле это было логично, но в какой-то момент я начал получать ОЧЕНЬ много таких отчётов, и помочь с ними я не могу, потому что исправлять их нужно на стороне скрипта.

По сути, есть 3 варианта:

  • a) оставить всё как есть и продолжать объяснять пользователям, что им нужно использовать практики обработки исключений так же, как в обычных приложениях
    Работает не очень, особенно с притоком новых пользователей. Чем популярнее программа, тем больше людей будут пробовать scripting, и тем большему числу из них придётся сталкиваться с исключениями. В долгую это плохо масштабируется.

  • b) запускать скрипты в изолированной среде, то есть в отдельных маленьких исполняемых файлах, которые общаются с «основной» программой через какой-то транспорт
    Это лучший вариант, но технически он крайне сложен. Особенно если учесть, что такая «маленькая» программа должна взаимодействовать с основной с очень низкими задержками — иначе это просто не будет работать. В какой-то момент это станет моей целью, но по текущим оценкам стоимость такой фичи — минимум 3–4 месяца работы. То есть это одна из самых дорогих потенциальных возможностей.

  • c) раз EyeAuras полностью контролирует исходный код и способ его выполнения, попробовать сделать весь процесс scripting настолько bullet- and fool-proof, насколько это возможно
    Именно этот вариант мы попробуем сейчас. Я сделал тестовое решение, которое будет пытаться перехватывать все ошибки, приходящие из пользовательских скриптов, и вместо падения приложения — по возможности поглощать их, восстанавливать состояние и продолжать работу. Также я начну делать автоматические улучшения кода, которые будут применяться к пользовательскому коду на этапе компиляции — например, автоматическое добавление обработки исключений там, где её не хватает (например, в обработчиках кликов по кнопкам), или обработку исключений, выбрасываемых из Tasks.

Посмотрим, как это себя покажет.

Ещё несколько исправлений и улучшений в этом релизе:

  • [Bugfix] Раньше внутренняя система, которая освобождает сервисы, созданные через GetService<T>, могла иногда освободить (то есть по сути убить) и некоторые важные сервисы самого EyeAuras
  • [Improvement] Время компиляции должно стать меньше, особенно для первой компиляции после запуска
  • [Improvement] Механизм запуска скриптов теперь имеет заметно меньшую внутреннюю задержку, а значит ваши скрипты можно запускать гораздо чаще — в первую очередь эта оптимизация сделана для Behavior Trees, где за один цикл может выполняться несколько десятков небольших script-узлов

Переработка — Enabling Conditions

Внутри механизма условий включения было очень много изменений. Часть из них — это bugfixes, часть — улучшение UX.

  • Теперь, если trigger отключён из-за того, что условия включения не выполнены, будет показываться большая оранжевая плашка
  • Если навести курсор на эту плашку, появится очень подробная информация, которая позволит понять, что именно влияет на этот trigger. Сейчас блок ещё довольно технический, но он явно показывает элементы, которые повлияли на статус отключения
  • Если выбрана Aura и главное окно сейчас в фокусе — все enabling conditions игнорируются, что упрощает отладку
  • Аналогичная логика применяется, если выбрана папка — все enabling conditions у дочерних элементов игнорируются, что удобно, например, для отладки групп overlay
  • Исправлен баг, который иногда возникал при запуске приложения и отключал ауры, несмотря на фактический статус enabling conditions

Enabling conditions DISABLED preview

Крупные улучшения — HotkeyIsActive

New HotkeyIsActive

Немного освежил внешний вид и поведение HotkeyIsActive.

  • Добавлены tooltips
  • Улучшен механизм привязки Aura в Trigger — Interception Conditions, подробнее ниже

Interception conditions

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

В целом этот механизм напрямую отвечает за то, будет ли обработка hotkey включена в данный момент. Добавив одну или несколько аур, вы можете задать точный набор условий, при которых Trigger вообще начнёт что-то делать.

Например, если привязать Aura с WindowIsActive, то Trigger будет реагировать на клавиши только тогда, когда активно окно игры.

В более сложных случаях trigger можно привязать к какому-то внутриигровому условию. Например, когда вы нажимаете RMB (часть конфигурации HotkeyIsActive) AND какой-то мощный скилл уже вышел из cooldown (привязанное условие), вместо обычного действия по RMB программа симулирует нажатие другой кнопки, которая кастует этот скилл. Хороший пример — автоматизация Vaal Skills в Path of Exile: у вас обычная версия скилла висит на кнопке, которую вы спамите, и как только Vaal-версия набрала достаточно душ, она будет скастована автоматически — без необходимости следить за этим вручную.

Чтобы лучше понять, зачем нужны две следующие опции, приведу пример.

У меня есть HotkeyIsActive, который отслеживает нажатия F3 в Toggle mode. То есть при первом нажатии F3 trigger активируется, а чтобы его деактивировать, нужно нажать второй раз. Очень просто и очень удобно для включения/выключения более сложных аур, например auto-potions.

Также у меня включена опция Suppress Key, которая не пропускает F3 в окно игры — иначе игра могла бы реагировать на действие, привязанное к F3.

Проблема такой конфигурации в том, что если оставить всё как есть, F3 будет блокироваться вообще во всех приложениях, а не только в игре. Не очень удобно.

Чтобы это исправить, можно добавить Interception condition с WindowIsActive, и тогда F3 будет работать только в окне конкретной игры. Но тут появляются две проблемы.

Interception conditions — Ignore if Hotkey is set

Проблема:
Чтобы отключить HotkeyIsActive, теперь окно игры должно быть в фокусе. То есть если я хочу выключить что-то, что висит на F3, мне сначала нужно вернуть окно игры на передний план. А если это F3 включило какой-нибудь агрессивный кликер, сделать это бывает непросто.

Решение:
Если включить эту опцию, можно сделать так, чтобы включение trigger было возможно только при активном окне игры, а выключение — откуда угодно. Забыл выключить кликер перед alt-tab? Не проблема — просто снова нажми F3, и trigger будет отключён.

Обратите внимание: эта опция работает только если toggle уже активен.

Interception conditions — Automatically deactivate Trigger

Проблема:**
Быстро отключить HotkeyIsActive нельзя — нужно нажимать кнопку. В некоторых случаях это не очень удобно: нужно помнить, что какая-то автоматизация сейчас активна. Вы делаете alt-tab, забываете об этом, а потом внезапно срабатывает какое-то условие trigger, и в игре начинается действие. Это может привести к проблемам.

Решение:
Просто включите эту новую опцию. Теперь, если interception condition trigger больше не выполняется, trigger автоматически деактивируется. В нашем примере, если я сделаю alt-tab из окна игры, вся функциональность, завязанная на F3, будет отключена.

Обратите внимание: после возврата в игру её нужно будет снова включить вручную. С этой опцией вся система становится гораздо устойчивее к человеческим ошибкам.

Новая опция — Reset trigger state when linked auras are not active

Добавлена новая опция, которая сбрасывает состояние trigger (деактивирует его), когда связанные ауры деактивируются.

Самый практичный сценарий использования — связанная aura с trigger WindowIsActive. По умолчанию поведение такое:

  • если выбранное окно активно, trigger работает как обычно и может быть активирован обычным нажатием клавиши
  • если выбранное окно неактивно, trigger не будет перехватывать нажатия. Чтобы деактивировать trigger, сначала нужно вернуть выбранное окно на передний план

С новой опцией (Reset trigger state when linked auras are not active) поведение меняется:

  • если выбранное окно активно, trigger работает как обычно и может быть активирован обычным нажатием клавиши
  • если выбранное окно неактивно, trigger автоматически деактивируется, как только это состояние будет обнаружено

Это делает очень простой настройку клавиши, которая включает определённую функциональность только пока активна игра и автоматически выключается, когда вы делаете alt-tab или сворачиваете игру.

MouseMove validation теперь отключён

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

Исторически это было нужно в первую очередь для аппаратных эмуляторов ввода вроде Usb2Kbd и самодельных устройств на Arduino. Для них это имело смысл, потому что движение выполняется не мгновенно. Из-за этого, если у вас подряд идут два ввода (MouseMove + Click), есть шанс, что к моменту клика мышь ещё не будет в нужной позиции.

Сейчас инструментарий отправки input стал намного мощнее — SendSequence, BehaviorTrees, Scripts — и этот механизм, похоже, начал приносить больше проблем, чем пользы.

В test-режиме этот механизм теперь отключён для всех методов ввода. Теоретически в большинстве случаев это будет почти незаметно, но имейте в виду: возможно, между операциями перемещения мыши теперь придётся добавлять дополнительные задержки.

Добавлены Credits

EyeAuras использует почти две сотни библиотек, которые покрывают разные части его функциональности, и я хочу отдать должное их авторам.

Список доступен на сайте или в приложении (About).

About

Прочее

Triggers/Actions/Overlays теперь можно сворачивать

Это состояние сохраняется как часть конфигурации элемента, так что всё останется в том же виде, пока вы сами это не измените.

Triggers/Actions/Overlays are now minimizable

Улучшена скорость загрузки и скачивания аур

Теперь при export/import ауры маленькая часть (JSON) и большая часть (binary, изображения, модели и т. д.) обрабатываются отдельно и скачиваются из разных мест.

Для обычного пользователя это означает следующее:

  • окно предпросмотра импорта будет открываться и работать заметно быстрее, особенно для больших паков аур
  • синхронизация станет эффективнее — программе больше не нужно скачивать весь пак аур размером 100+ MB, чтобы построить diff
  • и самое важное, хотя пока ещё не доделанное: это должно решить проблему, из-за которой Aura Library открывается очень долго. Эти изменения появятся позже в этом месяце

Особенно заметно это должно быть у пользователей, подключённых к EU Eye Hub. Со временем я также добавлю отдельный file hub и для RU-региона.

Settings

Улучшения Aura Tree — поддержка copy/paste

Добавлена полноценная поддержка Ctrl+C/Ctrl+V. Раньше Ctrl+C больше напоминал механизм Export, поэтому нельзя было просто скопировать элемент и вставить его в другую папку — это приводило к конфликтам.

Теперь элементы можно свободно копировать и вставлять по дереву примерно так же, как в Windows Explorer. Также схема именования клонов старается повторять Windows: если вы копируете Aura, первая копия будет называться Aura - Copy, вторая — Aura - Copy(2) и так далее.

Обратите внимание: copy-paste между несколькими экземплярами EyeAuras не работает! Для этого по-прежнему нужно использовать Export и Import (пока что).

Улучшения UX у Image Capture Triggers

Исторически при редактировании настроек Image Capture Triggers (Image/Text/Color/ML) окно Preview обновлялось ровно с тем же Capture rate, который был указан в настройках (или реже, если trigger не мог держать такой FPS).

В большинстве случаев это не проблема. Но как только ради эффективности вы переходите на очень низкий FPS — например, обновление 1 раз в 10 секунд, или вообще 0 FPS в trigger, который используется вместе с C# scripts и Behavior Trees, — работать становится неудобно. Раньше приходилось вручную нажимать Refresh, чтобы принудительно обновить Preview.

Теперь можно задать глобальный минимальный Preview FPS для всего приложения, и он будет использоваться вместо Trigger Capture Rate.

Minimum Preview FPS будет работать только пока у вас включён Preview! После этого на обычный FPS он не влияет и не экспортируется как часть конфигурации trigger.

Улучшение UI триггеров — добавлено отображение статуса

Теперь можно навести курсор на состояние trigger и понять, почему именно оно сейчас такое. Например, если не выполняются enabling conditions — описание состояния прямо об этом скажет. Если trigger настроен неправильно — будет видно, чего именно не хватает.

Пока покрытие далеко не полное, но постепенно дойдём и до этого.

HotkeyIsActive state Image Search state Image Search state#2

Bugfixes / Improvements

  • [Crash] Исправлен крэш, который в редких случаях возникал при изменении настроек Send Input #EA-373 by Godhunt

  • [Crash] Исправлен крэш, возникавший при копировании и вставке конфигурации на другой компьютер

  • [Crash] Исправлен редкий крэш в TimerTrigger во время запуска

  • [Crash] Подавлен крэш, который происходил, если overlay уже был disposed #EA-441 v7008 by n1katio

  • [Crash] Более безопасное переключение overlay #EA-451 by n1katio

  • [Crash] Исправлен крэш в PropertyEditor #EA-454 by madscream

  • [Crash] Изменена процедура инициализации #EA-453 by dutiful6005

  • [Crash] Исправлен крэш в WindowSelector #EA-337

  • [Crash] Исправлен крэш в TransformAsync #EA-339

  • [Crash] Исправлен крэш в BTNodeEditorFooterMenu #EA-512 v7247 by oddessax

  • [Crash] Исправлена(?) неприятная проблема с крэшем, который иногда происходил в BehaviorTree #EA-510 v7247 TransformAsync

  • [Scripting] Добавлен новый метод ToScreenPoint

  • [Scripting] Открыт доступ к свойствам, которые управляют OnScreenDisplay в Search Triggers, чтобы их можно было переключать из кода

  • [Scripting] IBehaviorTreeAccessor теперь предлагает метод Tick, который позволяет вручную управлять тиками дерева

  • [Scripting] IBehaviorTreeAccessor теперь позволяет удалённо работать с Blackboard

  • [Scripting] Улучшена визуализация пользовательских исключений

  • [Scripting] ScriptVariable теперь не стирает ранее сохранённые значения при несовпадении типов

  • [Scripting] В IAuraAccessor добавлены Execute и ExecuteAsync

  • [Scripting] Sleep со значениями меньше 10 ms теперь работает гораздо точнее, чем раньше

  • [Scripting] Исправлен баг, из-за которого сервисы, арендованные через GetService, могли неожиданно освобождаться

  • [Scripting] Улучшен механизм импорта assemblies и metadata в Scripts — компиляция должна стать немного быстрее

  • [BehaviorTree] Добавлено Clear all variables в blackboard Behavior Tree #EA-374 by linqse

  • [BehaviorTree] Рефакторинг UI — больше пространства, blackboard вынесен в отдельную вкладку

  • [BehaviorTree] Появилась возможность масштабировать весь control (zoom in / zoom out), чтобы боковые панели при необходимости занимали меньше места

  • [BehaviorTree] Улучшен Copy/Paste — теперь программа старается вставлять узлы прямо туда, где находится курсор мыши

  • [BehaviorTree] Узлы Wait и Cooldown теперь позволяют настраивать случайные интервалы времени

  • [BehaviorTree] Исправлен очень неприятный баг, из-за которого части дерева переставали отображаться после определённых последовательностей действий

  • [BehaviorTree] Панель с узлами теперь можно сворачивать, а внешний вид узлов изменён — теперь они занимают заметно меньше места

  • [BehaviorTree] Исправлены проблемы, из-за которых иконки некоторых узлов отображались неправильно

  • [BehaviorTree] Улучшен UX при одновременной работе со многими (>3) BT

  • [BehaviorTree] В BT overlay добавлена опция AutoZoom, которая автоматически меняет масштаб при изменении размера overlay

  • [UI] Исправлено некорректное обновление Variables #EA-509 v7247 by dutiful6005

  • [UI] Исправлено некорректное обновление revision на странице Synchronization после Upload

  • [UI] Добавлено маскирование для password-protected folders

  • [UI] Исправлен крэш, который возникал, если во время логина происходило что-то плохое (например, disconnect) — ошибка Edit Form

  • Уменьшено количество кода, которое нужно писать, чтобы кликнуть по чему-либо

  • [UI] Улучшения в AuraTree — раньше при удалении больших папок дерево могло слегка подтормаживать

  • [UI] Исправлен крэш, который происходил, если сервер логина был недоступен во время авторизации

  • [UI] Исправлен баг, из-за которого падал Event Viewer

  • [UI] Исправлен глюк на старте, из-за которого EventViewer отображался поверх splash screen

  • [UI] Unload all / Load all теперь затрагивают и Behavior Trees

  • [UI] Version Control System для конфигурации теперь включён по умолчанию для новых пользователей

  • [UI] Изменён UI редактора папок — теперь там две вкладки: одна для Synchronization, другая для всего остального

  • [UI] Исправления, связанные с отсутствием scrollbar в некоторых случаях, особенно заметные на маленьких экранах

  • [UI] Aura Tree теперь сортируется по Type => Name, раньше в сортировке ещё учитывалось время последнего изменения

  • [UI] Error reporting теперь позволяет прикладывать к отчёту все ваши ауры; по умолчанию эта опция выключена

  • [UI] Улучшена обработка ошибок, когда пользователь пытается Import share, которого не существует

  • [UI] Сортировка Aura Tree теперь корректно обновляется после переименования

  • [UI] Очень много изменений в механизме, отвечающем за UI updates — сначала это может быть немного сыро, но в долгосрочной перспективе должно стать гораздо эффективнее

  • [UI] Исправлен баг с обработкой Enter в числовых полях

  • [UI] Реализован прототип механизма входа по license key вместо username/password — это должно упростить жизнь новым пользователям

  • [UI] Минимальный размер окна уменьшен до 1200x620

  • [UI] Исправлена проблема с export в старых версиях программы #EA-532 v6819 by DaDoro

  • [UI] Исправлена проблема, из-за которой аутентификация в некоторых случаях работала некорректно (Failed to login... после reboot)

  • [Packing] Много улучшений в packing

  • [Packing] Улучшение packing — теперь упакованные версии не реагируют на ссылки eyeauras://, в отличие от основной версии

  • [Packing] Исправлен баг в алгоритме packing, связанный с созданием новой директории

  • [Packing] Добавлены две новые опции в packing — теперь можно включать в сборку и личную конфигурацию

  • [Packing] Добавлена опция удаления иконки из упакованного executable

  • [Packing] Исправлена проблема с packing presets

  • [Packing] Исправлена проблема с упаковкой non-URI resources (например, Sound)

  • [Overlays] Исправлена давняя проблема, из-за которой overlays иногда отправлялись на задний план. Исправление затрагивает все overlays в программе, включая OSD

  • [Image/Color/ML Search] Исправлена проблема с пропадающими Effects #EA-377 by linqse and Rowenor

  • [Capture] Возвращена часть утерянной функциональности, позволявшая захватывать весь экран. Пока это доступно только в методе CopyFromScreen, позже расширю и на более производительные методы

  • [TimerTrigger] Исправлено некорректное срабатывание trigger

  • [Capture] Значение MaxFramesPerSecond по умолчанию увеличено с 30 до 144

  • [VCS] Ручное сохранение теперь автоматически коммитит данные конфигурации в .git-репозиторий

  • [AuraTree] Запрещено использовать недопустимые символы имён файлов Windows в названиях аур

  • [WinActivate] Исправлено сохранение timeout в WinActivate #EA-500 v7215 by dutiful6005

  • [Crash] Исправлена(?) проблема с крэшем, связанная с TransformAsync #EA-526 v7265 by TheSerg12

  • [Website] Исправлено удаление aura pack по требованию

  • [Website] Реализован счётчик download/views, который отслеживает, сколько пользователей просмотрели или скачали ваш пак. Визуализация появится позже

  • [Website] Улучшен UI страниц паков

Release

1.4.7345

Permalink one month ago

Исправления и улучшения

  • [Crash] Исправлена(?) неприятная проблема с вылетом, которая иногда возникала в BehaviorTree #EA-510 v7247 TransformAsync
  • [BehaviorTree] В оверлей BT добавлена опция AutoZoom, которая автоматически меняет масштаб при изменении размера оверлея
  • [UI] Исправлена проблема, из-за которой revision на странице Synchronization некорректно обновлялся после Upload
Release

1.4.7338

Permalink one month ago

Исправления и улучшения

  • [UI] Исправлена проблема, из-за которой Variables не перерисовывались корректно #EA-509 v7247 by dutiful6005
  • [Packing] Исправлена проблема с упаковкой пресетов
  • [Packing] Исправлена проблема с упаковкой ресурсов без URI (например, Sound)
Release

1.4.7331

Permalink one month ago

Настоящая альфа-версия — только для тех, кто готов :)

Эта версия содержит множество обновлений критически важных библиотек, из-за которых программа может «сломаться» самыми разными способами.

Цель — получить достаточно стабильную версию, которая сможет прожить следующие 2–3 месяца, до НГ.

Возможно, я ещё успею добавить 1 функциональное улучшение — доработку sub-trees, но ничего не обещаю.