Практический маршрут разработчика
Подготовка
Easy Universal использует AngelScript, не Lua. Один пакет — папка сpackage.json и UTF-8 main.as. Дополнительные .as файлы перечисляются
в modules. Они компилируются вместе; #include не поддерживается.
Начните с sdk/templates/settings-panel для настроек илиsdk/templates/toolkit для меню, вычислений и helper-модулей.
Отделяйте источник от отображения
- Определите доступный авторизованный источник: синтетические данные,
телеметрия собственного приложения или явно разрешённый выбранный процесс.
- Опишите адаптер в
package.json. Название движка само по себе ничего не читает. - Проверяйте версию формата, диапазоны, ошибки и свежесть до публикации снимка.
- Публикуйте нормализованные сущности только в текущем
on_frame. - При потере источника очищайте снимок, а не оставляйте старые координаты.
sdk/helpers/coordinates.as задаёт явные оси и ориентацию.sdk/helpers/freshness.as проверяет возраст локальной копии.
Они не находят структуры Unreal, Unity или Source автоматически.
Меню и сохранение
easy_ui::Column размещает элементы вертикально; easy_ui::Grid — по строкам
и столбцам (1–8). easy_ui::PagedList показывает до восьми строк на странице
с кнопками перехода. Состояние page/index принадлежит скрипту; список пустых
значений безопасно сбрасывается. Это постраничный список, не контейнер с
колёсиком мыши или обрезкой произвольных дочерних элементов.
Helper скопируйте в пакет и объявите в modules. IDs должны быть короткими,
уникальными и допустимыми для SDK. Dropdown popup рисуется после обычных
элементов, иначе перекрытие работает в обратную сторону.
Не смешивайте наличие разрешения и согласие пользователя.
Перед typed config вызовами используйте config::enabled().
Настройки сохраняются только при успешном завершении разрешённого сеанса.
Фоновые операции
http::get и jobs::submit возвращают ID. Проверяйте state в следующих
кадрах, извлекайте готовый результат и обязательно release. Не ожидайте
завершения в цикле внутри callback. Jobs поддерживает только sha256 и
json_valid; произвольных параллельных функций скрипта нет.
HTTP GET требует объявленных точных origins и согласия пользователя.
WebSocket и произвольные протоколы пока не реализованы. Bounded POST требует
отдельного http_post; scalar telemetry IPC описан в EXTERNAL_SOURCE_RU.md.
Не вставляйте секреты в исходник или LLM-контекст.
Проверка и доставка
- Проверьте пакет через CLI inspect, затем run на собственных fixtures.
- Протестируйте preview, изменение размеров, Stop и Reload.
- Отдельно проверьте отказ в доступе, потерю источника, пустые/битые данные.
- Используйте
sdk/API_SCHEMA.jsonиз той же сборки, что и исполняемый файл. - При обращении к LLM приложите llms-full.txt и описание разрешённого источника.
- Не публикуйте совместимость с игрой, которую фактически не проверили.
Критерий готовности первой основы SDK
Шесть исходных направлений имеют реализованный контракт и проверяемые примеры:
математика, буферное чтение, фоновые bounded jobs, меню/конфиги,
асинхронные разрешённые GET-источники и контракты адаптеров.
Это не означает завершения всех возможностей универсального продукта.
Открытые ограничения перечислены в ROADMAP_RU.md. Многочасовые проверки,
полноценная прокрутка/клавиатурная навигация, новые протоколы
и реальные адаптеры движков остаются отдельной работой.