h3cast Heroes III · наблюдатель Транслировать матч

Для тех, кто комментирует Heroes III

Heroes IIIникогда не былорежима наблюдателямы егосделали

h3cast превращает игры двух игроков в одну трансляцию.
Обе стороны во время одновременных ходов. Перемотка посреди матча. Любой герой, любой город, любой туман — включая карту, которой не видит ни один из них.

Сделано на настоящих матчах HotA, а не на демо: первая трансляция с двух машин прошла в сентябре 2026 года.

Обе стороны
две игры, сведённые в одну картину, одновременные ходы включительно
Перемотка
отмотать девяносто секунд посреди матча и вернуться в эфир
0 МБ/с
игроки не отдают ничего — ни OBS, ни кодировщика

Ваши игроки запускают небольшую программу и вводят пароль. Это вся их роль — больше ничего не нужно ставить и ничего не нужно настраивать в игре.

Кадр выше — настоящая геометрия приложения, нарисованная в CSS. Скриншот, который его заменит, снят с реального матча: ничто на этой странице не построено из данных, которых инструмент не прочитал.

Почему не просто захват экрана

Пять вещей, на которые захват экрана не способен

Не «делает хуже» — не способен. Heroes III работает по схеме peer-to-peer, и во время одновременных ходов клиенту вообще не сообщают, что делает другой игрок. Захват одной машины — это не более медленная трансляция; это трансляция, в которой отсутствует самая интересная половина. Навсегда.

I

Обе стороны сразу

Два агента, по одному на машине каждого игрока, читают свою игру и отправляют то, что изменилось. Сервер сводит оба потока в одну картину. Вы смотрите гонку, а не одного бегуна.

Красный · ход 42

одновременный ход, ходит прямо сейчас

  • Солмир занимает шахту
  • нанимает ифритов в Инферно

Синий · ход 42

половина, которую захват экрана никогда не увидит

  • штурмует Утопию
  • теряет 4 чемпионов

II

Перемотка идущего матча

Бой синего случился, пока вы смотрели на красного. Отмотайте девяносто секунд, посмотрите его и вернитесь в эфир. Каждый матч — это упорядоченный журнал на сервере, поэтому повтор не отдельная функция: это тот же поток, воспроизведённый с того места, куда вы укажете.

А когда матч закончится, повтор уже готов. Никто не записывал никакого видео.

нужен матч в эфире

Петля · 10 с

Перемотка назад к бою и возвращение в эфир

Снято с полосы перемотки во время ближайшего матча в эфире — единственный кадр, который обязан быть настоящим.

III

Туман, который выбираете вы

Туман красного, туман синего, оба сразу или полная карта режиссёра. Нагнетайте напряжение — «ни один из них не знает, что за тем хребтом» — или покажите матч ровно так, как его проживает один из них. Одна клавиша переключает это прямо в эфире.

  • Видит красный
  • Видит синий
  • Оба
  • Режиссёр

IV

Игроки не транслируют ничего

Никакого OBS, никакого кодировщика, никакой отдачи, никакого второго монитора, ни одного потерянного в игре кадра. Агент отправляет события, а не видео — несколько килобайт там, где потоку понадобились бы мегабиты.

Вся роль игрока: запустить небольшую программу, ввести пароль и играть. А значит, в эфир можно вывести двоих, которые сами себя никогда бы не стримили.

можно снять сегодня

Скриншот

Окно агента на рабочем столе игрока

С настоящей сборки на игровой машине: подключён, пароль задан, задержка видна, «трансляция активна».

Чем вы управляете

Кадр, собранный под трансляцию

Картинка рисуется, а не захватывается. Наблюдатель отрисовывает мир из вашей собственной установки Heroes III, поэтому разрешение ваше, компоновка ваша — и никакого растянутого 800×600, рамки окна, курсора игрока и меню в кадре.

нужен матч в эфире

Главный кадр · во всю ширину

Кадр наблюдателя во время матча в эфире

2560×1440 с машины комментатора: карта, окно миникарты, обе панели, полоса ресурсов, полоса статуса. Открывающее изображение страницы.

  • Карта без перекрытий Её не закрывает ни одна панель — мир остаётся картинкой, всё остальное стоит рядом.
  • Панель на каждого игрока Войско, ход, мана, что несут — оба игрока рядом, весь матч.
  • Камера следует за действием Вид сам идёт туда, где что-то происходит. F выключает это, когда нужно смотреть в другое место.
  • Кликабельная миникарта Щелчок перемещает вид; подземелье — в одной кнопке отсюда.
  • Детали по клавише H лист героя, T город, B бой — любую привязку можно переназначить.
  • Статус, которому можно верить В эфире или Половина, когда агент отвалился. Кадр говорит, что именно происходит, и никогда не выдаёт одну сторону за весь матч.

Пятое — и то, которого никто не ждёт

Открыть экран, которого нет ни у одного из игроков

Экраны, которые игрок никогда не открывает, — как раз те, что нужнее всего комментатору: лист героя, который сейчас войдёт в засаду, город в четырёх днях пути, где только что достроили Капитолий, бой, который закончился раньше, чем вы успели на него переключиться. h3cast открывает все три ничего не прося у игрока — и не отвлекая его.

Лист героя

H или кнопка на панели этого игрока

Вся запись, как её хранит игра, — а не сводка, которую мы собрали сами. Всё перечисленное и так лежит в том окне памяти, которое агент читает одним вызовом, поэтому не стоит ни одного лишнего байта трафика.

можно снять сегодня

Скриншот

Лист героя

Со стенда экранов, настоящие архивы игры.

  • Атака, защита, сила магии и знание, вместе с опытом и уровнем
  • Девятнадцать надетых слотов — включая заклинание внутри свитка и слоты, заблокированные сборным артефактом
  • Рюкзак, в том порядке, в каком его держит игра
  • Вторичные навыки в том порядке, в каком их перечисляет сама игра, — не по алфавиту и не по-нашему
  • Боевой дух и удача как собственные суммы игры, на её собственных шкалах
  • Специализация, прочитанная из статической таблицы игры, — поэтому её название приходит на языке игрока
  • Книга заклинаний, где заклинания от артефактов показаны отдельно от выученных
  • Остаток хода, очки магии и биография

Экран города

T или кнопка на панели этого игрока

В том числе города, который никто не открывал. Состояние берётся из памяти, а не из окна, в которое кто-то смотрит, поэтому четыре города за линией фронта читаются так же, как тот, что обороняют.

можно снять сегодня

Скриншот

Экран города

Со стенда экранов, все двенадцать фракций подогнаны.

  • Собственный задник фракции с её постройками, каждая там, куда её поставил собственный экран города в игре, — никогда по нашей таблице
  • Только то, что этот город действительно ПОСТРОИЛ, и старшая постройка каждого семейства
  • Гильдия магов по уровням, с заклинаниями на полках
  • Сколько существ ещё осталось нанять в каждом жилище
  • Что ратуша могла бы предложить дальше, названное так, как называет игра
  • Гарнизон и гостящий герой, каждый с армией, которая стоит при нём
  • Двое героев, которых предлагает таверна
  • Двенадцать фракций, включая Бухту, Фабрику и Оплот из HotA

Бой

открывается сам — либо по клавише, либо по метке на панели игрока

Восстановлен из событий на собственном поле боя игры и понятнее, чем его показывает сама игра, — потому что зритель может поставить бой на паузу, а игрок нет.

можно снять сегодня

Петля · 8 с

Воспроизведённый бой

Со стенда боя, на собственном поле боя игры.

  • Очередь инициативы, чтобы зрители знали, кто ходит следующим, ещё до того, как он пойдёт
  • Каждый отряд с тем, что он теряет, в тот момент, когда теряет
  • Числа урона и собственное окно результата игры, когда бой заканчивается
  • Открывается сам на том бою, который стоит смотреть, а полоса перемотки его отматывает

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

Коротко о том, что внутри

Три части, и одна из них — арбитр

Никакого мода, никакого плагина, ни одного файла, подброшенного в папку Heroes III. Две небольшие программы и сервер между ними.

Два агента, по одному на машине каждого игрока, отправляют события на сервер h3cast, который сводит их и публикует матч комментатору. Игрок A · Windows HotA работает нетронутой агент h3cast читает её память пароль = согласие этого игрока Игрок B · Windows HotA работает нетронутой агент h3cast читает её память пароль = согласие этого игрока Сервер h3cast сводит оба · убирает дубли · сверяет ведёт журнал матча · держит согласованную задержку без согласия обеих сторон матча не существует Вы, комментатор мир, нарисованный из ВАШИХ собственных файлов игры события + кадры состояния события + кадры состояния с задержкой, сведённые
Агент только читаетОбычное чтение извне процесса. Ничего не внедряется, ничего не перехватывается, ничего не пишется и ничего в вашей игре не меняется.
Сервер — арбитрОн держит задержку и согласия. Клиенту зрителя нечего разблокировать у себя.
Ресурсы игры никуда не уходятМир рисуется из установки самого комментатора, поэтому мы не распространяем ни одного файла игры.

И обновление HotA не означает переустановки. Новая сборка меняет набор смещений, а они приезжают в пакетах сигнатур, которые агент забирает с сервера. На сборке, которую мы не измеряли, агент останавливается, а не гадает — смотрите ниже.

Отправьте этот раздел своим игрокам

Легитимность, а не слежка

Инструмент, который читает работающую игру, обязан сказать, что именно он делает — и чего он не делает. И то и другое ниже.

Только чтение, и это заложено в архитектуре
Никаких внедрений, никаких перехватов, ничего не пишется в процесс игры. Измерения показали, что ни движение, ни бой этого не требуют, поэтому инструмент построен без них.
К игроку никогда ничего не возвращается
Пути из трансляции на машину любого из игроков не существует. Поток идёт только в одну сторону.
Нет согласия — нет матча, ни для кого
Пока у каждого места нет подключённого агента и зарегистрированного пароля, матча не существует: его нет в списке, нет в сокете и нет даже как имени. Никто не выведет в эфир чужую игру.
Задержка — это число, которое видят оба игрока
Одно значение на всю сессию, показанное в обоих агентах ещё до старта и до самого конца. По умолчанию три минуты; ноль — только если оба на это согласны.
Два независимых чтения одного мира
Оба агента описывают одно и то же состояние, поэтому сервер видит, когда они расходятся. Трансляция, которую кормит один подменённый агент, не станет правдой втихую.
На неизвестной сборке игры он отказывается работать
Новый выпуск HotA — это сборка, которую мы не измеряли. Агент проверяет сам исполняемый файл игры; если тот изменился, агент не запустится. Если наследование разрешено, он выполняет каждое чтение двумя способами и останавливается, не отправив ни единого байта, как только два способа разойдутся.
Сломанная трансляция говорит, что она сломана
Если агент отвалился посреди матча, матч показывается как Половина, а не «В эфире», и картинка замирает с указанием причины. Половину матча здесь никогда не выдают за целый.
Что нельзя определить, остаётся видимо неопределённым
Правило, на котором стоит весь проект: мы не рисуем ничего, что не пришло из настоящих данных игры. Ваши зрители никогда не услышат того, чего данные не сказали.

А вот чем h3cast не является

Это не античит. Два агента позволяют обнаружить подменённого агента — поток, который лжёт трансляции. Они ничего не говорят о том, что происходит внутри чьей-то Heroes III. Если одна машина видит всю карту — это факт о Heroes III, а не о нашем инструменте, и эта сцена знает о нём двадцать лет.

Не защищает он и от владельца самой машины: программу, работающую на вашем компьютере, вы всегда можете подменить. Кто утверждает обратное, тот что-то продаёт.

Турниру h3cast даёт легитимность. Оба игрока согласились, под запись, при задержке, которую оба видели, — на трансляцию, которую ни один из них не может тайно выключить или тайно включить. Это правило организатор действительно может обеспечить, и мы предпочтём сказать это прямо, чем написать на странице «античит» и не быть правыми ни в чём.

Перед первой партией вечера

Две минуты, дважды

По разу на каждого игрока и один раз для вас. В самой Heroes III настраивать нечего.

Каждый игрок

  1. Запускает агента h3cast и оставляет его рядом с игрой.
  2. Вводит собственный пароль и передаёт его комментатору. Этот пароль и есть согласие: нет пароля — нет трансляции.
  3. Играет. Агент всё это время показывает «трансляция активна, задержка 3:00», а его закрытие завершает трансляцию.

Вы, комментатор

  1. Открываете наблюдателя — приложение на Windows или macOS либо браузер.
  2. Выбираете матч из списка и вводите оба пароля. Их проверяет сервер; на вашей стороне ничего не разблокируется.
  3. Ведёте эфир. Следуйте за действием, переключайте туман, открывайте героя или город, отматывайте пропущенное. Окно наблюдателя захватывается в OBS как любой другой источник.

Вопросы, которые задают первыми

Он как-то вмешивается в мою игру?

Нет. Он читает память игры извне — так же, как отладчик или диспетчер задач смотрит на процесс. Ничего не внедряется, не патчится, не перехватывается и не пишется. Ваша папка Heroes III не изменяется, и в неё не добавляется ни одного файла.

Может ли соперник транслировать нашу игру без меня?

Нет, и следит за этим сервер, а не вежливая просьба. Пока у обоих мест нет подключённого агента и зарегистрированного пароля, матч не появляется в списке, его нельзя транслировать и нельзя даже назвать. Постороннему, который о нём спросит, ответят, что такого матча нет.

Что произойдёт, когда выйдет обновление HotA?

Агент понимает, что смотрит на сборку, которую никто не измерял, и останавливается, вместо того чтобы читать не те байты. Мы публикуем пакет сигнатур — обычно за день-два — и агент забирает его с сервера. Ничего переустанавливать не нужно.

Нужна ли мне установленная Heroes III, чтобы комментировать?

Да. Наблюдатель рисует мир из вашей собственной копии игры — именно поэтому мы никогда не поставляем ни одного игрового ресурса. Если вы комментируете Heroes III, она у вас уже есть.

Работает ли это с одновременными ходами?

Именно ради этого случая всё и делалось. Во время одновременных ходов отдельному клиенту вообще не сообщают о ходах соперника, поэтому односторонний захват их показать не может. Два агента — могут.

Сколько это стоит?

Сегодня — ничего. Это делают два человека для сцены Heroes III, и первые турниры, с которыми мы помогаем, бесплатны: обратная связь нам важнее денег.

Публичная версия скоро

Комментируете турнир? Первую трансляцию настроим вместе с вами.

<b>Это ничего не стоит.</b> Нас двое, мы делаем это для сцены Heroes III, и обратная связь нам важнее денег. Агент ещё не подписан, поэтому кнопки скачивания здесь нет — мы лучше проведём первых комментаторов через настройку сами, чем раздадим неподписанный исполняемый файл, который читает память игры. Напишите, когда играете, и мы будем рядом.