1.4.6531

Март 2024

Новый крупный релиз

Улучшения производительности

  • Значительно улучшены время запуска, потребление памяти при старте и во время работы. Нагрузка на CPU и GPU при поиске тоже снизилась, но не так заметно.
  • Добавлено несколько систем, которые в текущем релизе отключены по умолчанию, но со следующей недели будут проходить тестирование в Alpha-ветке. Они нацелены на улучшение работы на слабых ПК — например, виртуальных машинах или старых ноутбуках. При желании их уже можно попробовать, включив "File system storage(alpha)" в Settings — но будьте готовы к возможным проблемам.
  • Тесты показывают, что в большинстве сценариев поиск на базе машинного обучения теперь в среднем примерно на ~15% быстрее, а в отдельных экстремальных случаях — до двух раз быстрее, чем раньше. Главное улучшение — это latency, то есть программа теперь заметно быстрее реагирует на происходящее на экране на каждом этапе обработки: захват изображения, применение эффектов/изменение размера, подготовка к ML/анализу изображения и передача результатов анализа (predictions и найденных bounding boxes) в триггеры теперь происходят намного быстрее. В некоторых случаях задержка сократилась с миллисекундного диапазона (то есть 1+ millisecond) до менее чем 100 microseconds. Особенно заметно это будет в высокочастотных сценариях — например, при реакции на объекты на экране (позиции предметов на земле в Path of Exile или мини-игры в стиле aimbot, где нужно отслеживать объект).
  • Это не последняя итерация оптимизаций. Запланировано как минимум ещё два серьёзных улучшения, в основном в области машинного обучения, но они выйдут позже — вероятно, уже после следующего крупного релиза в канале “Stable” в конце февраля.
  • Добавлены секции, а часть продвинутых настроек теперь по умолчанию скрыта (например, offsets/anchors).
  • Серьёзно переработаны выбор области и предпросмотр захваченного изображения.
  • Плавный Zoom — теперь можно приближать и отдалять изображение колёсиком мыши. Удерживайте левую кнопку мыши, чтобы перемещать изображение.
  • Переработан выбор области — теперь можно выделить регион в предпросмотре и с помощью Ctrl+C или кнопки на панели инструментов скопировать часть изображения в буфер обмена либо использовать её как шаблон для поиска.
  • Сохранение screenshot/video — раньше это уже было доступно в окне Effects, но интерфейс изменён, и теперь функция находится прямо в панели предпросмотра для более удобного доступа.
  • Воспроизведение видео — теперь в Preview pane можно загрузить любое видео и использовать его, чтобы вытащить из него шаблонное изображение или подобрать правильную область захвата.

DEMO

Новый Window Finder / селектор позиции клика

  • Старый селектор полностью заменён — он был слишком медленным и ненадёжным. Теперь достаточно просто перетащить иконку в нужное место, и программа сама определит окно/позицию.

ПРИМЕЧАНИЕ: выбор через нажатие на кнопку с последующим указанием окна пока не поддерживается — только перетаскивание. Это будет добавлено в одной из следующих версий.

Image

Scripts v3.0

  • Огромное обновление подсистемы scripting. Всё это было сделано в рамках работы над Behaviour Trees — с самого начала одной из главных целей было получить быстрый и удобный способ писать небольшие фрагменты кода прямо внутри дерева. Текущая реализация для этого слишком тяжеловесна: она мощная, но слишком многословная и перегруженная.
  • Начал писать документацию. Уже доступны несколько примеров: Hello,World, printing text, moving the cursor. Дальше будет больше.
  • Сейчас всё это находится на ранней стадии тестирования, и в ближайшие недели будет ещё много обновлений, связанных со scripting. Но если вы уже хотите начать писать код — смело пробуйте новую систему, а если появятся вопросы, пишите мне в Discord.
  • NuGet packages — поддержка уже есть, но пока отключена. Сначала хочу зачистить возможные внутренние проблемы, и только потом открыть использование внешних зависимостей. Чуть позже это будет включено. Если очень хотите попробовать уже сейчас — свяжитесь со мной в Discord.
  • C# script Action и Trigger уже работают на v3, а вот WebUI пока ещё на v2. Причина в том, что у WebUI есть несколько возможностей, которые ещё нужно перенести с v2 на v3, чтобы всё соответствовало ожидаемой функциональности — например, экспорт/импорт кода как C# project. Это будет реализовано в ближайшие недели и выйдет отдельным обновлением.

Серьёзные улучшения редактора кода — Quick Fixes, подсветка ошибок, tooltips, Signature Help и другое

  • Подсветка ошибок: теперь, если в скрипте возникает ошибка, редактор показывает специальную разметку с указанием проблемного места и подробным описанием. Обратите внимание: это отображается и на scrollbar, и на codemap. Error highlighting
  • Quick fixes для ошибок: если для ошибки есть известный способ исправления — например, добавить дополнительный import (using …) — во всплывающем окне появится кнопка “Quick Fix…”. Нажмите её, и программа предложит один или несколько вариантов быстрого исправления. Названия пока не слишком дружелюбные, это будет доработано в будущих версиях. Errors Quick fixes
  • Улучшения автодополнения кода: добавлен прототип панели документации, которая будет показывать XML docs рядом с именем метода/свойства. Пока это очень ранняя alpha-версия — без нормальной разметки, подсветки и т. д.

Send Input и Send Text больше недоступны в UI

  • Эти 2 действия заменены на Send Sequence. Его проще использовать и настраивать, особенно в простых сценариях. Функция записи макросов пока ещё не полностью готова.
  • Старые действия по-прежнему полностью работают, так что ничего не сломается — изменения коснутся только новых auras.

Image

Новый тип ввода — Granny's Send Input

  • Добавлен новый метод ввода. Он довольно старый, и именно поэтому многие защиты просто забывают о его существовании. Помогает не привлекать лишнего внимания.

Изменён источник загрузки автообновлений

  • Раньше обновления программы загружались из облака Microsoft Azure — предполагалось, что благодаря масштабной инфраструктуре скорость скачивания будет высокой во всех регионах. Но на практике всё оказалось хуже, чем загрузка с одного сервера в Санкт-Петербурге.
  • Начиная с этого обновления, программа будет скачивать обновления с одного из нескольких серверов во Франкфурте, Германия — это крупный хаб, и для большинства пользователей это должно дать как минимум “good enough” скорость загрузки. Посмотрим, как это покажет себя на практике; возможно, позже я расширю этот же подход и перейду к мультирегиональному хостингу. Текущая система позволяет мне полностью контролировать, с какого именно сервера идёт загрузка, так что здесь есть большой простор для управления и дальнейших улучшений.
  • И заодно напомню про очень полезную опцию в Settings — Automatically download updates. Она, как нетрудно догадаться, автоматически скачивает обновления. Но не устанавливает их! То есть ничего внезапно не сломается: по сравнению с полностью ручным обновлением вы просто экономите время на скачивании.

Image

Broadcasting сетевых сообщений (очень-очень ранняя alpha)

Связка Send Message / Network Message action/trigger — это мощный инструмент, который позволяет собрать собственную управляемую сеть взаимосвязанных EyeAuras. Эта возможность существует уже несколько лет и чаще всего используется для multi-boxing на нескольких ПК.

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

Функция всё ещё находится на очень ранней alpha-стадии и пока довольно сырая в настройке — например, IP нужно указывать вручную. Кроме того, в некоторых конфигурациях она может не работать, если роутер не поддерживает multicast. Также функция пока ещё не протестирована как следует, поэтому используйте её с осторожностью.

Чтобы воспользоваться этой возможностью, укажите ChannelId следующим образом:

  • На Server EyeAuras (том, который принимает сообщения) — broadcast://255.255.255.255/anychannelname
  • На Client EyeAuras (том, который отправляет сообщения) — broadcast://255.255.255.255/anychannelname

p.s. по умолчанию программа использует для связи порт 53082, но при желании можно указать любой другой — сразу после IP в ChannelId (например, broadcast://255.255.255.255:55055/anychannelname)

Behaviour Trees

  • Примерно через 1 неделю эта функциональность станет доступна в alpha-ветке. Это сильно зависит от количества багов, которые будут обнаружены после публикации текущей версии в основной ветке.

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

  • [Crash] Исправлен редкий краш во время импорта (ReplaceId NullReferenceException).
  • [Crash] Исправлен редкий краш в LegacyScriptReferencesResolver.
  • [Crash] Исправлен краш, который иногда происходил при запуске: "Container must be defined (Parameter 'container')".
  • [PlaySound] Исправлен баг, из-за которого это действие нельзя было создать через UI.
  • [PlaySound] Исправлен баг, из-за которого выбранное уведомление иногда сбрасывалось в Disabled.
  • [UI] Если у aura только 1 action/trigger/overlay, редактор этого элемента теперь разворачивается на всё доступное пространство. Это должно сделать работу с такими aura заметно удобнее, особенно после того как я адаптирую под это изменение остальные редакторы.
  • [UI] Полностью переписана вторичная панель с логом и переменными.
  • [UI] Все окна и overlays теперь открываются быстрее.
  • [UI] Диалог Import теперь также умеет выполнять Synchronization.
  • [UI] Добавлена панель Getting Started, которая показывается в пустых Auras. В ней есть кнопки Import/Subscribe, что должно упростить жизнь тем, кто просто хочет пользоваться чужими aura pack.
  • [UI] Исправлена ошибка, мешавшая Cloning и перемещению элементов вверх и вниз.
  • [UI] Исправлена проблема, из-за которой Replay работал некорректно при низком FPS.
  • [WindowSelector] WindowSelector теперь сохраняет имя процесса как финальный аргумент. Раньше при выборе окна программа сохраняла “Window handle OR Window Title”. Теперь — “Window Handle OR Window Title OR Process Name”.
  • [Scripting] Многочисленные улучшения подсистемы scripting — теперь она быстрее и экономнее по памяти.
  • [Scripting] В SDK добавлена библиотека ImageSharp. В некоторых задачах она удобнее, чем OpenCV, и, вероятно, будущие API будут строиться вокруг неё.
  • [Scripting] Сделано так, что при успешной компиляции скрипта предыдущие ошибки очищаются.
  • [Scripting] Исправлена проблема, из-за которой вкладки Code editor некорректно выбирали файлы после изменений.
  • [General] Повышена точность всех ожиданий и задержек — теперь погрешность укладывается в 1ms.
  • [Search Triggers] Исправлен баг с некоторыми источниками захвата (например, Shared Surface), который возникал при включённом Capture Borderless.
  • [Search Triggers] Изменена логика работы опции Capture Borderless. Она всё ещё далека от идеала, но теперь должна покрывать больше сценариев, особенно если окна не делают ничего необычного со своими границами и title bar.
  • [Search Triggers] Исправлено отображение исключения “Task canceled” в UI.
  • [Text Search] Исправлен краш, который происходил, если триггер с работающим распознаванием текста отключался через enabling condition.
  • [Bugfix] Исправлен баг, который в некоторых случаях приводил к взаимной блокировке программы при запуске (очень старый и неприятный баг, надеюсь, теперь он наконец мёртв).
  • [Bugfix] Исправлен баг в окне выбора aura — в некоторых случаях auras скрывались и были недоступны для выбора.
  • [Bugfix] Исправлен баг, из-за которого UI падал при изменении порядка элементов.
  • [Bugfix] Исправлен баг в overlays Replica — опция Keep Aspect Ratio неправильно рассчитывала ширину/высоту overlay, когда источник менял размер.
  • [EventLog] Исправлена проблема, из-за которой event log отображался за пределами окна приложения.
  • [EventLog] Добавлена категория “Inputs”, содержащая ввод, сгенерированный программой.
  • [Synchronization] Исправлен баг, из-за которого программа падала, если synchronization добавлялась внутрь папки, которая уже синхронизировалась.
  • [Synchronization] Исправлен баг, из-за которого auras не сохранялись после загрузки новой версии sync.
  • [Effects] Исправлено несохранение статуса IsEnabled в конфиге (отключённые effects снова включались при запуске).
  • [Enabling Conditions] Исправлено некорректное сохранение/загрузка свойств enabling conditions в некоторых ситуациях.
  • [Overlays] Исправлено “дёргание” overlays, когда пользователь или скрипт меняли положение/размер overlay.
  • [SendInputs] Исправлена проблема с позиционированием в “Granny's Send Input” (мышь перемещалась неправильно в конфигурациях с несколькими мониторами).
  • Все методы ввода теперь должны работать надёжнее с точки зрения позиционирования мыши — изменён способ расчёта координат.
  • [C# Action/Trigger] Добавлено ещё несколько опций, включая автоматическую остановку скрипта, если он работает слишком долго, плюс ещё несколько UI/UX-улучшений.
  • Обновлена часть документации — изменения уже отражены и в SDK, и на website. В ближайшие недели выйдет ещё много статей и примеров с фокусом на начинающих пользователей.