Разбор проекта / 03
Во время мероприятия оператор готовит следующий эпизод в одном инструменте, показывает текущий в другом и вручную возвращает заставку после конкурса. После работы над отдельными приложениями IAMEvent я взялся за общую среду, где источники и интерактивы проходят один путь: подготовить в Preview, вывести в Program, показать зрителям на отдельном экране.
В прототипе уже работают ядро микшера, переходы, отдельный зрительский вывод и контракт подключаемых модулей. Randomizer проверяет контракт на конкретном интерактиве: результат розыгрыша один для оператора и зрителей. Подготовка программы за десять минут, SDK и маркетплейс пока остаются целевыми сценариями, а не результатами прототипа.
Я определяю продуктовый сценарий, границу между ядром и модулем и способ передачи состояния между окнами. ИИ использую для обсуждения решений и разработки; выбор устройства продукта и оценка работающего прототипа остаются моей ответственностью.
Задача: собрать программу из разрозненных инструментов
В IAMEvent я работаю с конкретными сценариями: аудиоконкурс, викторина, мини-интерактивы, фотографии гостей на экране. По мере развития этой линейки возникает следующий уровень задачи: как оператору провести всё мероприятие через одну рабочую среду.
В исходном сценарии экранная программа собирается из разных инструментов: микшера, презентации или слайдшоу, отдельных игровых приложений. Оператор переключает их, следит за текущим показом, готовит следующий эпизод и возвращает заставку после завершения конкурса. Связь между этими действиями во многом остаётся у него в голове.
Первый целевой пользователь ShowDesk — event-DJ, который управляет музыкой и экраном на свадьбе. Отсюда продуктовая задача: дать ему собрать заставку, слайдшоу и розыгрыш в одном проекте, подготовить следующий источник и вывести его на отдельный экран. Подготовка такой программы за десять минут зафиксирована в документации как целевой сценарий, а не измеренный результат прототипа.
Моя идея — сделать общую среду, в которую конкурсы подключаются как модули. Тогда новый интерактив использует уже существующие механизмы показа и управления, а развитие линейки не требует каждый раз создавать отдельное приложение.
Решение: один путь от Preview до экрана зала
В основе ShowDesk находится Input — программный источник, с которым работает оператор. В текущем интерфейсе можно добавлять изображение, слайдшоу, видео, камеру и модуль. У источников разные возможности, но общий путь управления: добавить в банк, выбрать для подготовки, вывести зрителям.
Для этого разделены Preview и Program. Preview показывает подготовленный источник, Program — текущий показ. Выбор следующего источника не заменяет картинку у зрителей: для переключения есть отдельное действие. Реализованы мгновенное переключение, автоматический переход и ручное управление переходом через T-bar.
Операторская модель состояния общая для всех представлений. Интерфейс управления, Preview, Program и отдельное окно вывода получают данные из неё. Зрительский экран принимает сериализованный снимок, содержащий источники, слои, состояние перехода, время воспроизведения и состояние модулей. Это позволяет передавать смысл происходящего на сцене без чтения интерфейса оператора из другого окна.
flowchart LR
Operator[Действия оператора] --> State[Общая модель состояния]
Module[Подключаемый модуль] -->|Логика и состояние интерактива| State
State --> Preview[Preview: подготовка]
State --> Program[Program: текущий показ]
State --> Snapshot[Снимок состояния]
Snapshot --> Output[Отдельное окно для зрителей]
Media[Нативное воспроизведение медиа] --> Preview
Media --> Program
Media --> OutputУправление звуком также связано с моделью показа: предусмотрены следование звука за источником в Program, отдельное прослушивание оператором, общий уровень и выключение звука. Изображение и звук входят в одну операторскую логику проведения мероприятия.
Проверка расширяемости на Randomizer
Для расширения продукта реализован контракт модуля: манифест описывает пакет и предоставляемые им типы источников, а код задаёт начальное состояние, обработку действий и две поверхности — интерфейс оператора и экран зрителей.
Пакет загружается из выбранной папки. Приложение проверяет манифест, регистрирует путь и импортирует JavaScript-модуль. Логика интерактива существует отдельно от интерфейса самого ShowDesk. Это даёт конкретную техническую основу для разработки новых конкурсов через общий контракт.
Первый пример — Randomizer. Оператор задаёт диапазон, запускает розыгрыш и получает результат с анимацией. Важная деталь: результат выбирается один раз в общей модели и сохраняется вместе со временем начала анимации. Preview и зрительский экран отображают одно решение. Несколько представлений не запускают независимые розыгрыши и не могут получить разные числа из-за повторного вызова случайности.
ShowDesk передаёт модулю действия оператора и события жизненного цикла: вход в Program и выход из него, начало и завершение перехода. Поэтому поведение интерактива можно связать с появлением на экране, а не только с нажатием кнопки в его собственном интерфейсе.
У Randomizer есть отдельная среда разработки с операторским и зрительским представлениями. Я также проверял возможность разработки через SDK. Текущий результат здесь — контракт, самостоятельный пример модуля и среда для его разработки; это основа для дальнейшего оформления SDK.
Как медиа и состояние проходят между окнами
ShowDesk построен на Tauri и Rust с интерфейсом на React и TypeScript. Нативная часть отвечает за доступ к медиа, воспроизведение и окна; GStreamer используется для обработки видео и аудио. Композиция изображения и переходы отображаются в WebView.
Разные представления одного источника опираются на общее состояние воспроизведения. Для видео предусмотрены совместно используемые нативные медиапайплайны и кеш кадров. Это существенно для микшера: один файл может одновременно присутствовать в банке источников, Preview и Program.
Зрительский вывод открывается отдельным полноэкранным окном на выбранном мониторе. Его состояние передаётся из операторского приложения. Такой подход даёт общую модель для текущего показа, переходов и игровых модулей, даже когда они отображаются в разных окнах.
Текущий проект сохраняется локально через временный файл и атомарную замену. Изображения копируются в проект, видео подключаются по пути. Следующий этап — полноценная упаковка проекта с медиа и версиями модулей для переноса между компьютерами.
Что подтверждено прототипом
На сентябрь 2026 года ShowDesk — прототип с реализованным ядром микшера и подключаемым игровым модулем. Его технический результат можно разложить на три уровня:
| Уровень | Что получено |
|---|---|
| Управление показом | Банк источников, Preview/Program, переключения и переходы, отдельное окно вывода, управление звуком |
| Расширяемость | Загрузка модулей, общий контракт состояния и действий, операторская и зрительская поверхности, самостоятельный Randomizer |
| Продуктовое развитие | Описаны сценарии проведения мероприятия, возврат к заданному источнику, перенос проектов и развитие каталога модулей; сформулировано направление SDK и AI |
В этом проекте я показываю переход от отдельных продуктовых сценариев к устройству общей среды: определяю, какие возможности принадлежат ядру, какие — подключаемому интерактиву, как они обмениваются состоянием и как оператор управляет результатом в живом шоу. Конкретный модуль позволяет проверять эту модель уже на этапе прототипа и развивать её дальше.
Предыдущая часть этой истории — кейс IAMEvent.
Что понадобится для полноценной платформы
Я рассматриваю дальнейшее развитие ShowDesk в двух связанных направлениях.
Первое — проведение программы мероприятия. В документации описаны режим последовательного запуска эпизодов и режим ручного управления Preview/Program, которые используют один проект. Запланирован SafeReturn: после завершения или сбоя эпизода система возвращает заданный источник, учитывая приоритет ручного действия оператора. Сюда же относятся наборы программы и упаковка проекта. Это развитие уже реализованного ядра микшера.
Второе — создание и распространение интерактивов. Моя целевая цепочка:
Среда исполнения → контракт модулей и SDK → сторонние интерактивы → маркетплейс → персональные интерактивы, создаваемые с помощью AI.
В этом сценарии ведущий сможет подобрать готовый конкурс либо описать свой замысел и получить интерактив для ShowDesk. Общий контракт задаёт точку подключения для обоих способов создания. Сам механизм генерации, проверки и доставки таких модулей ещё предстоит реализовать; сейчас это моё продуктовое видение, опирающееся на существующую модульную основу.
Связь с IAMEvent здесь предметная. Там уже создаются интерактивы и сервисы лицензирования, удалённого управления и облачной доставки фотографий. В документации ShowDesk предусмотрены дальнейшие направления PhotoWall, удалённого управления и лицензирования. При этом действующие приложения IAMEvent пока не перенесены в ShowDesk: для подключения потребуется адаптация их логики и интеграций к контрактам общей среды.