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; аварийное завершение не сохраняет
неподтверждённые изменения конфигурации.
Дальнейшая последовательность
- Расширить renderer: дополнительные фигуры, изображения и интерактивные
элементы; затем привязка к разрешённому приложению.
- Реальные разрешённые источники данных и многочасовые проверки сессий;
длительный режим уже поддерживается, но пока проверен коротким стресс-тестом.
- Семантическое автодополнение/анализ редактора, клавиатурная доступность и
расширение базового GUI API.
- Версионирование и compatibility tests, SDK-документация и примеры адаптеров.
- Только после стабильного локального 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).