h3cast Heroes III · spectator Broadcast a match

For the people who cast Heroes III

Heroes IIInever had anobserver modeso webuilt one

h3cast turns two players’ games into one broadcast.
Both sides during simultaneous turns. Rewind mid-match. Any hero, any town, any fog — including the map neither player can see.

Built against real HotA matches, not a demo — the first two-machine broadcast ran in September 2026.

Both sides
two games merged into one picture, simultaneous turns included
Rewind live
go back ninety seconds mid-match, then return to it
0 MB/s
the players upload nothing — no OBS, no encoder

Your players run a small app and type a password. That is their whole part — nothing else to install, nothing to configure in the game.

The frame above is the product’s own geometry, drawn in CSS. The screenshot that replaces it comes from a real match — nothing on this page is staged from data the tool did not read.

Why not just capture a screen

Five things a screen capture cannot do

Not “does worse” — cannot. Heroes III is peer-to-peer, and during simultaneous turns a client is never told what the other player is doing. A capture of one machine is not a slower broadcast; it is a broadcast missing the interesting half. Permanently.

I

Both sides at once

Two agents, one on each player’s machine, read their own game and send what changed. The server merges the two into a single picture. You watch the race, not one runner.

Red · turn 42

simultaneous turn, moving right now

  • Solmyr takes the mine
  • buys Efreeti in Inferno

Blue · turn 42

the half a capture never sees

  • fights the Utopia
  • loses 4 Champions

II

Rewind a live match

Blue’s fight happened while you were on red. Scrub back ninety seconds, watch it, come back to live. Every match is an ordered journal on the server, so the replay is not a separate feature — it is the same stream, played from where you point it.

And when the match is over, the replay is already there. Nobody recorded any video.

needs a live match

Loop · 10 s

Scrubbing back into a fight, then back to live

Captured from the transport bar during the next live match — the one shot that has to be real.

III

Show the fog you choose

Red’s fog, blue’s fog, the two together, or the director’s whole map. Build the tension — “neither of them knows what is behind that ridge” — or show the match exactly as one of them is living it. One key cycles it on air.

  • Red sees
  • Blue sees
  • Both
  • Director

IV

The players stream nothing

No OBS, no encoder, no upload, no second monitor, no frames lost in the game. The agent sends events, never video — a few kilobytes where a stream would want megabits.

A player’s whole part: run a small app, type a password, play. Which means you can put on air two people who could never have streamed themselves.

recordable today

Still

The agent’s window on a player’s desktop

From the real build on the game machine: connected, password set, delay shown, “broadcast active”.

What you are directing

A frame built for a broadcast

The picture is drawn, not captured. The spectator renders the world from your own Heroes III installation, so the resolution is yours, the layout is yours, and there is no upscaled 800×600, no window chrome, no player’s cursor and no menus in the way.

needs a live match

Hero still · full width

The spectator frame during a live match

2560×1440 from the caster’s machine: map, minimap well, both plaques, the resource bar, the status strip. The page’s own opening image.

  • The map, uncovered Never overlapped by a panel — the world stays the picture, everything else sits beside it.
  • A plaque per player Army, movement, mana, what they are holding — both seats, side by side, all match.
  • Camera follow The view goes where the action is by itself. F turns it off when you want to look elsewhere.
  • The minimap, clickable Click to move the view; the underground is one button away.
  • Detail on a key H the hero sheet, T the town, B the battle — every binding remappable.
  • Status you can trust Live, or Half when an agent drops. The frame tells you which; it never quietly shows one side as the match.

The fifth, and the one nobody expects

Open a screen neither player has open

The screens a player never opens are the ones a commentator needs most: the hero sheet of the man walking into an ambush, the town four days away that just finished its Capitol, the fight that ended before you turned to it. h3cast opens all three without asking the player for anything — and without interrupting them.

The hero sheet

H or the button on that player’s plaque

The whole record, as the game keeps it — not a summary we assembled. Everything below already lay inside the window the agent reads in one call, so none of it costs a byte of extra traffic.

recordable today

Still

The hero sheet

From the screens bench, real archives.

  • Attack, defence, spell power and knowledge, with experience and level
  • The nineteen worn slots — including the spell inside a scroll, and the slots a combination artifact has locked
  • The backpack, in the order the game keeps it
  • Secondary skills in the order the game itself lists them, which is not alphabetical and is not ours
  • Morale and luck as the game’s own totals, on the game’s own dials
  • The specialty, read from the game’s static table — so its name arrives in the player’s language
  • The spellbook, with spells an artifact grants shown apart from the ones he learned
  • Movement left and spell points, and the biography

The town screen

T or the button on that player’s plaque

Including a town nobody has open. The state comes out of memory, not out of a window somebody is looking at, so the four towns behind the front line are as readable as the one being defended.

recordable today

Still

The town screen

From the screens bench, all twelve factions fitted.

  • The faction’s own backdrop with its buildings on it, each where the game’s own town dialog placed it — never by a table of ours
  • Only what this town has actually BUILT, and the highest of each family
  • The Mage Guild level by level, with the spells on its shelves
  • How many creatures are still left to recruit in every dwelling
  • What the town hall would still offer, named as the game names it
  • The garrison and the visiting hero, each with the army standing with him
  • The two heroes the tavern is offering
  • Twelve factions, HotA’s Cove, Factory and Bulwark among them

The battle

opens on its own — or on a key, or on the mark on a player’s plaque

Rebuilt from events onto the game’s own battlefield, and clearer than the game shows it — because a spectator may pause a fight, and a player may not.

recordable today

Loop · 8 s

A battle replayed

From the battle bench on the game’s own battlefield.

  • The initiative queue, so the audience knows who moves next before it happens
  • Every stack with what it lost, as it loses it
  • The damage numbers, and the game’s own result window when it ends
  • It opens by itself for the fight worth watching, and the transport bar rewinds it

Every one of these is drawn from your own copy of the game, at the resolution of your stream rather than the game’s. What the archives cannot resolve is left visibly unresolved and says so — never filled in with something that looks close enough.

Under the hood, briefly

Three parts, and one of them is the arbiter

No mod, no plugin, no file dropped into your Heroes III folder. Two small programs and a server between them.

Two agents, one on each player’s machine, send events to the h3cast server, which merges them and publishes the match to the caster. Player A · Windows HotA runs untouched h3cast agent reads its memory password = this player’s consent Player B · Windows HotA runs untouched h3cast agent reads its memory password = this player’s consent The h3cast server merges the two · deduplicates · cross-checks journals the match · holds the agreed delay no match exists until both sides consent You, the caster the world drawn from YOUR own game files events + keyframes events + keyframes delayed, merged
The agent only readsPlain reads from outside the process. Nothing injected, nothing hooked, nothing written, nothing changed in your game.
The server is the arbiterIt holds the delay and the consent. There is nothing a spectator’s client can unlock on its own.
Assets never travelThe world is drawn from the caster’s own installation, so no game file is ever distributed by us.

And a HotA update does not mean a reinstall. What a new build changes is a set of offsets, and those ride in signature packs the agent fetches from the server. On a build we have not measured, the agent stops instead of guessing — see below.

Send this section to your players

Legitimacy, not surveillance

A tool that reads a running game has to say exactly what it does, and exactly what it does not. Both of those are below.

Read-only, and that is architectural
No injection, no hooks, nothing written into the game process. Measurements showed neither movement nor combat needs them, so the tool was built without them.
Nothing ever flows back to a player
There is no path from the broadcast into either player’s machine. The stream goes one way only.
No consent, no match — for anybody
Until every seat has an agent connected and a password registered, the match does not exist: not in the list, not on the socket, not as a name. Nobody can put someone else’s game on air.
The delay is a number both players can see
One value for the whole session, shown in both agents from before it starts until it ends. Three minutes by default; zero only if both of them agree to it.
Two independent readings of one world
Both agents describe the same state, so the server can watch them disagree. A broadcast fed by one tampered agent does not quietly become the truth.
On an unknown game build, it refuses
A new HotA release is a build we have not measured. The agent checks the game’s own executable; if that changed, it will not run. If it may inherit, it runs every reading twice and stops before streaming a single byte the moment two methods disagree.
A broken broadcast says it is broken
Lose an agent mid-match and the match reads Half, not Live, and the picture freezes with the reason. Half a match is never dressed up as a whole one.
What cannot be resolved is left visibly unresolved
The rule the whole project is built on: we draw nothing that did not come from real game data. Your audience is never told something the data did not say.

And here is what h3cast is not

It is not an anti-cheat. Two agents let us detect a tampered agent — a stream that lies to the broadcast. They say nothing about what happens inside anyone’s Heroes III. If a single machine can see the whole map, that is a fact about Heroes III, not about our tool, and this scene has known it for twenty years.

Nor does it protect against a machine’s own owner: software running on your computer can always be replaced by you. Anyone claiming otherwise is selling something.

What h3cast gives a tournament is legitimacy. Both players agreed, on the record, with a delay they both saw — to a broadcast neither of them can secretly turn off, or secretly turn on. That is a rule an organiser can actually enforce, and we would rather say it plainly than write “anti-cheat” on a page and be right about nothing.

Before the first game of the evening

Two minutes, twice

Once for each player, and once for you. Nothing to configure inside Heroes III.

Each player

  1. Runs h3cast agent and leaves it beside the game.
  2. Types a password of their own and gives it to the caster. That password is the consent — no password, no broadcast.
  3. Plays. The agent shows “broadcast active, delay 3:00” for as long as it lasts, and closing it ends the broadcast.

You, the caster

  1. Open the spectator — an app on Windows or macOS, or the browser.
  2. Pick the match from the list and enter both passwords. The server checks them; nothing is unlocked on your side.
  3. Direct. Follow, switch the fog, open a hero or a town, rewind what you missed. Capture the spectator window in OBS like any other source.

Questions we are asked first

Does it touch my game in any way?

No. It reads the game’s memory from outside, the way a debugger or a task manager looks at a process. Nothing is injected, patched, hooked or written. Your Heroes III folder is not modified and no file is added to it.

Can my opponent broadcast our game without me?

No, and this is enforced on the server, not asked of anyone politely. Until both seats have an agent connected and a password registered, the match is not listed, not streamable and not even nameable. A stranger asking after it is told there is no such match.

What happens when HotA updates?

The agent recognises that it is looking at a build nobody measured and stops rather than reading the wrong bytes. We publish a signature pack — usually within a day or two — and the agent picks it up from the server. You do not reinstall anything.

Do I need Heroes III installed to cast?

Yes. The spectator draws the world from your own copy of the game, which is also why we never ship a single game asset. If you cast Heroes III you already have it.

Does it work with simultaneous turns?

That is the case it was built for. A single client is never told about the other player’s moves while simultaneous turns are running, so one-sided capture cannot cover them at all. Two agents can.

What does it cost?

Nothing today. It is built by two people for the Heroes III scene, and the first tournaments we help set up are free — we want the feedback more than the money.

Public download coming

Casting a tournament? We will set the first broadcast up with you.

<b>It costs nothing.</b> We are two people building this for the Heroes III scene, and we want the feedback more than the money. The agent is not signed yet, so there is no download button here — we would rather walk the first casters through it ourselves than hand out an unsigned executable that reads a game’s memory. Tell us when you are playing and we will be there for it.