EasyUniversal / DocsДокументация · SDK 0.3Подписка Universal ↗
Easy Universal / Начало работы

Возможности и ограничения

AngelScript · native runtime · локальная сборка

Easy Universal — поставка 1.0.0, SDK 0.3

Cloud scripts в native клиенте получает актуальные скрипты с сайта Easy.
Download latest автоматически выбирает последний опубликованный выпуск;
архивные версии и откат в меню не предлагаются. Ранее скачанные скрипты сохраняются
в общем проверенном каталоге; при скачивании он обновляется до актуальных выпусков.
Open installed открывает Source/Details; запуск и разрешения остаются отдельными.
Страница сайта: https://easyinstall.help/easy-universal/cloud-scripts.
Контракт подписей и скачивания: sdk/REPOSITORY_RU.md.

В клиенте 0.3.7 кнопка Check base driver в Settings проверяет GET_INFO/PING
установленного базового драйвера. Результат и причина ошибки доступны в статусе
и при наведении. Проверка запускается отдельно с таймаутом; сама установка SYS
остаётся отдельной задачей. Settings → Read through driver выбирает чтение
для существующих process::read_* и bytebuffer/scan при явном согласии на PID.
Нужен установленный драйвер с READ_INFO/READ; без него выбранный режим сообщает ошибку.
Фактическое чтение ядром ещё не проверено: новый SYS не подписан и не загружен.

Process API использует внутренний IDataSource с LocalDataSource.
SDK 0.3 добавляет отдельный внешний источник скалярной телеметрии через
локальный IPC с явным согласием на PID провайдера. Это не удалённый Process API.
В клиенте 0.3.5 Settings показывает состояние, ID/PID, возможности и ошибки
источника телеметрии; наведением открываются полный ID и результат update.
В 0.3.6 каталог проверяется в фоне при запуске, Refresh и после Save/Add/Remove.
Список сохраняется до окончания проверки; выбор привязан к папке пакета,
а закрытие отменяет проверку между пакетами. Код пакетов при этом не запускается.
GUI расширен вкладками, группами
чекбоксов, HSV-пикером, темами, локальным выбором клавиши, BoxLayout/ScrollPanel
и отдельным consent-gated gui.json; см. sdk/GUI_03_RU.md.
Объём выпуска: sdk/RELEASE_03_STATUS_RU.md. Быстрый маршрут: sdk/START_03_RU.md.

Локальный комплект первого закрытого выпуска собирается через scripts/release.ps1:
запускайте pwsh -NoProfile -File scripts/release.ps1 в PowerShell 7 или новее.
Конвейер проверяет версию до сборки, поскольку тесты используют синтаксис PS7.
Release build, все тестовые наборы, SHA-256 и повторная проверка
поставки. Один постоянный каталог dist/EasyUniversal обновляется на месте,
без нового ZIP и папки на каждый этап. Изменённые пользователем файлы поставки
не перезаписываются автоматически; data/configs не заменяются.
Инструкция на русском: HOW_TO_RU.md. SDK 0.3 совместим с пакетами API 0.1/0.2.
Исправление 0.3.3 переводит pacing на сроки по монотонным часам, с вычетом
времени обработки и waitable timers. stream/preview принимают --fps 30..240.
Контракт времени и старого on_timer: sdk/FRAME_TIMING_RU.md.
EasyUniversal-Admin.exe — отдельный запуск клиента через стандартный UAC;
обычный bin/EasyUniversal.exe не требует повышения прав. Доверенные worker
процессы наследуют права клиента. Сайт предоставляет отдельную подписку Universal;
совместимость конкретного игрового адаптера проверяется отдельно.

bin/EasyUniversal.exe содержит GUI, runtime и скрытый worker. Отдельного CLI
файла в поставке нет. Команды диагностики внутри EXE сохранены для проверок
с перенаправленным выводом; обычный пользователь запускает GUI. Клиент имеет собственные тёмные заголовок,
вертикальные полосы прокрутки и подтверждение сохранения. Третий пример,
examples/visualization, использует только синтетические координаты.

Отдельный проект, не замена и не модификация Easy External. Runtime/SDK написан
на C++20 и AngelScript 2.38.0. Документация на сайте открыта всем; защищённая
сборка и личный загрузчик выдаются администраторам и владельцам отдельной
подписки Easy Universal. Локальный комплект разработчика остаётся отдельным.

Что уже реализовано

  • SDK 0.2: потоки/handles, сигнатуры/RIP, отдельное согласие записи,

protected write с восстановлением прав, JSON-профили и диагностические
эвристики. Новые permissions требуют manifest api 0.2. Подробный контракт,
ограничения и ошибки: sdk/PROCESS_API_RU.md. Это обычные Windows API,
не доступ к защищённой памяти в обход ограничений ОС.

  • RC20/RC21: карта памяти, списки native x64 модулей через system/PEB и diff.

Явный PID, отдельная permission process.memory_map для карты, process_read
для модулей. Поля, ошибки и ограничения: sdk/PROCESS_API_RU.md.

  • Подготовка первого релиза: bounded POST (http_post + согласие), Flow для

автоматического переноса рядов и раскрываемых секций. HTTP_RU.md / FLOW_RU.md.
Это не WebSocket и не полноценный GUI редактор. Отдельная закрытая сборка
для выдачи администраторам проверяет доступ; см. sdk/ADMIN_DELIVERY_RU.md.

  • RC19: виртуализированный ScrollList для 1–256 строк и безопасная минимальная

ширина Grid. sdk/SCROLL_LIST_RU.md, sdk/templates/scroll-list.
Критерии окончательного релиза: sdk/RELEASE_READINESS_RU.md.

  • RC18: ограниченная прокрутка колёсиком и вложенная обрезка рисования/кликов;

отмена ввода полностью скрытых полей и ползунков. sdk/SCROLL_RU.md,
пример sdk/templates/scroll-panel. Не полноценный GUI layout engine.

  • RC17: однострочный textbox в собственном preview: UTF-8, лимит байтов,

Backspace/Enter/Escape, очистка скрытого/устаревшего ввода. Без глобальных
хуков; пример sdk/templates/text-form. Это не полноценный текстовый редактор.

  • RC16: Grid и PagedList helper для ограниченного постраничного меню;

проверка раскладки/границ и повторная проверка распакованной поставки.
Практический маршрут: sdk/DEVELOPER_WORKFLOW_RU.md.

  • RC15: типизированные bool/int/float конфиги с enabled/contains/remove;

bounded background jobs (SHA256/JSON validation), очистка и невозобновляемые
IDs после Reload; .as helpers меню, свежести и ориентации камеры.
sdk/PLATFORM_RU.md, готовый пакет sdk/templates/toolkit.

  • RC14: sdk-schema — точные зарегистрированные сигнатуры без исполнения

пакета; llms.txt / llms-full.txt, правила для LLM и шаблон сохраняемого
меню sdk/templates/settings-panel. Инструкция: sdk/LLM_GUIDE_RU.md.
Сверка исходного плана расширений: sdk/ROADMAP_RU.md.

  • RC12: ограниченный асинхронный GET API с явным согласием и точными origins,

очередью, poll/release, таймаутами и очисткой при Reload/Stop.
sdk/HTTP_RU.md, examples/http-demo. WebSocket пока не реализован.

  • RC11: vec2/vec3/matrix4, матричная и camera-basis проекция; неизменяемые

буферы чтения и четыре новых числовых read-метода; slider/cycle; залитые
прямоугольники и круги. sdk/EXTENSIONS_RU.md, examples/sdk-workbench.

  • Стандартные array<T> и скалярная математика официальных AngelScript add-ons.
  • RC10: меньше перерисовок UI в простое, проверка перед запуском вне UI thread,

обработка собственной рамки и короткий тест отзывчивости. Не доказательство
отсутствия любых длительных зависаний.

  • Adapter SDK 0.1: descriptor источника/возможностей, статусы, нормализованный

снимок сущностей на кадр, проекция и расстояние. sdk/ADAPTERS.md.

  • До 8 дополнительных .as файлов в manifest modules; общий модуль компиляции,

хэши зависимостей и защита редактора от внешних изменений файлов.

  • examples/adapter-demo: раздельные source/view/callbacks на синтетических

данных. Это шаблон, не подтверждённая совместимость с новой игрой.

  • Пакет с package.json, версией API, автором, entrypoint и списком ресурсов.
  • Кнопка Add .as: импорт отдельного UTF-8 скрипта без ручной сборки пакета.

Импорт не исполняет код и не разрешает чтение процесса/хранение настроек.

  • Remove script убирает пакет из списка с подтверждением и переносит его

в соседнюю папку removed-scripts для восстановления. Во время сессии
удаление заблокировано; исходный импортируемый .as файл не затрагивается.

  • Загрузка, завершение и повторная загрузка .as скриптов.
  • Callbacks on_load, on_frame, on_event, on_timer, on_unload.
  • Команды текста, линии, окружности и UI-label; проверка параметров и лимитов.
  • Декларируемые разрешения render, demo, storage.
  • Read-only Process API с отдельным явным разрешением на выбранный PID.
  • Первый адаптер War Thunder: приборы собственной техники через локальный

HTTP-сервис 127.0.0.1:8111, автоматически при запуске GUI-пакета с wt_telemetry.
Пример examples/warthunder, инструкция sdk/WAR_THUNDER.md.

  • Select рядом с PID открывает поиск процессов по имени или номеру без выдачи доступа.
  • Source: поиск текста с переходом к следующему совпадению, номер строки/колонки,

переход к строке и горячие клавиши. Пошаговый старт: sdk/QUICKSTART_RU.md.

  • Собственный демонстрационный источник координат; чтения игр нет.
  • JSON helpers и строковая конфигурация пакета с отдельным согласием хоста.
  • Диагностика файла/строки и длительности callbacks.
  • Сроки кадров включают время worker/рендерера; после отставания нет серии

догоняющих кадров. Ожидание продолжает обрабатывать сообщения preview.

  • Отдельный worker-процесс, watchdog и Win32 Job Object для завершения worker

при закрытии хоста и ограничения памяти/количества процессов.

  • Двусторонний потоковый IPC: снимки данных/события от хоста и кадры от скрипта,

номера кадров, timestamps, проверка схемы и завершение через stop.

  • Native renderer GDI+ для собственного тестового окна: текст UTF-8, линии,

окружности, alpha blending, сглаживание, изменение размеров и DPI.

  • Режим preview, который выводит проверенные кадры скрипта и может сохранить

последний кадр в PNG.

  • Базовый интерактивный GUI API: кнопка, переключатель, стабильные IDs,

клики в собственном окне и события в следующий snapshot.

  • Длительные потоковые сессии, остановка по времени/количеству кадров или

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

  • Backend локального каталога пакетов: manifest/ресурсы, права, версия API,

fingerprint содержимого, ошибки отдельных пакетов и дублирующиеся IDs.

  • Ручная перезагрузка в preview через F5; Esc завершает сессию.

Manifest перечитывается, но ID и разрешения менять в текущей сессии нельзя.

  • Локальный клиент пакетов: список, сведения и разрешения, Launch/Stop/Reload,

статус сессии и ошибки. Пока одновременно запускается один пакет.

  • Встроенный исходник пакета во вкладке Source: Save, Save + Reload, Reopen,

переход к строке ошибки, защита несохранённых правок и конфликтов на диске.

  • Компактный тёмный клиент с пиксельным характером, цветом акцента, показом

счётчиков и живым лимитом запросов кадров (30–240); фактический FPS не гарантирован.

Важные границы

Обычный preview рисует команды скрипта в собственном окне. В клиенте добавлен
экспериментальный Overlay selected window: отдельный прозрачный click-through
слой, привязанный к окну явно выбранного PID. Он не инжектится в приложение,
не перехватывает Discord Overlay и не гарантирует exclusive fullscreen.
Есть базовые кнопки, переключатели и локальный клиент пакетов с редактором
AngelScript. Source подсвечивает комментарии, строки, числа, ключевые слова и
известные API-имена; наведение на декларацию показывает подсказку из
API_SCHEMA. Ctrl+Space предлагает символы по области и объявленному типу,
F12 открывает однозначное объявление, F7 проверяет типы AngelScript без запуска.
Контракт и границы: sdk/EDITOR_SEMANTICS_RU.md.
Source поддерживает выбор объявленных файлов пакета и номера строк; файловые
операции выполняются вне UI thread.
В режиме run размер экрана и время фиксированы: 720×450 и шаг
1/60 секунды. В режиме stream экран, координаты, события и время передаются
хостом через IPC; встроенный пример использует тестовый viewport 720×450.
on_timer вызывается каждые три демонстрационных кадра,
а не по пользовательскому расписанию.

Worker — защита от сбоев, не полноценная OS-песочница. Запускайте только
доверенные скрипты. Обработка файлов блокирует обнаруженные reparse points
и выход из пакета, но не является защитой от конкурентной подмены файлов
другим локальным процессом. Process API требует разрешения пакета
и отдельного согласия на конкретный PID. DLL и shell API не предоставлены.
Обычный Windows-ввод имеет отдельное разрешение input и foreground-проверку;
см. sdk/INPUT_RU.md. HTTP доступен только к явно объявленным и разрешённым origins;
это не IP-песочница. Обход античита и перехват Discord Overlay отсутствуют.

Запуск

Из этой папки в PowerShell:

Также можно открыть bin/EasyUniversal.exe без аргументов: появится клиент
с каталогом scripts, создаваемым при первом запуске. Новая установка начинает
с пустого списка; Add .as добавляет скрипты пользователя. Примеры разработки
открываются только явной командой client ./examples.

./scripts/build.ps1
./bin/EasyUniversal.exe client ./examples
# В GUI выберите пакет, просмотрите Details/Source и нажмите Load script.
./tests/run.ps1
./tests/stream.ps1
./tests/renderer.ps1
./tests/gui.ps1
./tests/sessions.ps1
./tests/catalog.ps1
./tests/reload.ps1
./tests/manager.ps1
./tests/editor.ps1

Используется существующий g++, устанавливать дополнительные инструменты
сборки скрипт не пытается. Release-артефакт: bin/EasyUniversal.exe.
--allow-storage явно разрешает storage, если оно указано в manifest.
Настройки лежат в data/<package-id>/config.json; два пакета с одинаковым ID
разделяют настройки, поэтому ID должен быть уникальным. Ошибочный пакет
не сохраняет изменения конфигурации. Тесты оставляют свои входные данные
в build/test-* и тестовую конфигурацию в data/easy-test-storage.
preview без ограничения теперь работает до закрытия окна; stream --live
до Ctrl+C. --seconds (1–3600) и --frames задают автоматическую остановку,
их нельзя объединять с --live. Batch run остаётся ограниченным 60 кадрами.
При штатном stop выполняется on_unload; аварийное завершение не сохраняет
неподтверждённые изменения конфигурации.

Дальнейшая последовательность

  1. Расширить renderer: дополнительные фигуры, изображения и интерактивные

элементы; затем привязка к разрешённому приложению.

  1. Реальные разрешённые источники данных и многочасовые проверки сессий;

длительный режим уже поддерживается, но пока проверен коротким стресс-тестом.

  1. Семантическое автодополнение/анализ редактора, клавиатурная доступность и

расширение базового GUI API.

  1. Версионирование и compatibility tests, SDK-документация и примеры адаптеров.
  2. Только после стабильного локального SDK — каталог, публикация и лицензии.

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

SDK: sdk/API.md. Архитектура: ARCHITECTURE.md.
Зависимости и лицензии: THIRD_PARTY.md.
Протокол потокового режима: sdk/STREAM.md.
Графический прототип: sdk/RENDERER.md.
Интерактивные элементы: sdk/GUI.md.
Локальный каталог: sdk/CATALOG.md. Каталог не исполняет скрипты и не проверяет
их подписи. Локальный клиент описан в sdk/CLIENT.md.

Подключение собственного совместимого драйвера, выбор провайдера и автоматические
разрешения клиента: sdk/CUSTOM_PROVIDERS_RU.md (в SDK — CUSTOM_PROVIDERS_RU.md).

Easy Universal — отдельный проект. Easy External не изменён.