Skip to content

Game detection on screen

Some games tell a program on your computer what is happening. CS2 and Dota 2 do it through Valve’s game state integration, Fortnite writes a log, League of Legends answers its own client. Ad Manager reads those and puts your ad breaks in the gaps.

Most games do none of that. Overwatch, Marvel Rivals, Dead by Daylight and Apex Legends have no API, no log and nothing to paste into a launch option. For those, Pyre reads the picture instead: the desktop app looks at small regions of the frame your game is already drawing, recognises the end screen when it appears, and tells Ad Manager the match just finished.

It happens on your computer, and the frames stay there

Section titled “It happens on your computer, and the frames stay there”

This is the part worth being blunt about, because “Pyre watches my screen” is a sentence that deserves a straight answer.

The reading runs inside the Pyre desktop app on your own machine. Pyre looks at the small strips of the picture where a game draws its result banner, its scoreboard or its HUD, decides whether a match just ended, and forgets the frame. The frames are never uploaded, never stored and never sent anywhere. Your webcam is not read, your chat is not read, and nothing outside the game’s own picture is read.

What reaches Pyre’s servers is the same one line every other detector sends: this game, this state, this confidence, at this time. Not a picture.

The one way a picture can ever leave your machine is the detection recorder, which is off until you switch it on yourself, and which sends cropped strips rather than frames. The privacy policy carries the same promises in the form you can hold us to.

Every readable game, and what Pyre can see in each

Section titled “Every readable game, and what Pyre can see in each”

This table is every game Pyre reads, not just the four screen-read ones, so that the whole answer to “why is that moment missing” lives in one place. The four titles this page is about are the last four rows.

GameWhat Pyre readsMatch endHalftimeDeath or spectate
CS2Valve’s game state integrationup to 45sA 15 second halftime cannot hold a 30 second ad.up to 30s
Dota 2Valve’s game state integrationup to 75sDota 2 has no halftime.up to 30s
Fortnitethe log the game writesup to 45sFortnite has no halftime.up to 30s
League of Legendsyour own League client, through the LCUup to 60sLeague of Legends has no halftime.Pyre cannot tell when you are dead or spectating in League yet, so this stays off until it can.
Overwatchthe VICTORY and DEFEAT banner, with the ability HUD as the in match evidenceup to 45sOverwatch has no halftime.Respawns are seconds long, too short for the shortest ad.
Marvel Rivalsthe result banner’s colour, confirmed by the MVP scene that follows itup to 45sMarvel Rivals has no halftime.The respawn timer moves with the camera, so Pyre cannot read it.
Dead by Daylightthe end of trial tally, in both the survivor and the killer layoutup to 60sDead by Daylight has no halftime.No spectate reading for this game yet.
Apex Legendsthe squad summary with its placement number, and the letterboxed death viewup to 45sApex has no halftime.up to 120s

League has one more absence, and it is the pre-match countdown:

League does not show Pyre a countdown before a match yet, so this stays off until it can.

Every other readable game either gets a real countdown or falls back to clearing your ad block, which Ad Manager covers.

Those quoted sentences are why a moment is missing from a game’s detail on the Ads page. Since the 2026-08-31 rebuild the page draws only the moments a game can actually use, so a chip you can see is a chip that can fire, and this table is where the rest are explained. They are two different kinds of “no”, and the wording tells you which: “has no halftime” or “too short for the shortest ad” means the game does not have that moment and never will, while “yet” means Pyre cannot read it today and the chip can come back when it can.

Apex is the only one of the four screen-read games with a death or spectate window, because being knocked out of a battle royale is the one death long enough to hold a break. It still ships off until you ask for it, like every other game’s.

Two things a screen reading deliberately does not claim. It reads your match, not the lobby’s: Pyre knows the game ended, not who won what. And it never reads a pre-match countdown for these four, because none of them shows Pyre a countdown it can measure.

The Stream Manager card names the detector behind a reading, so you always know which mechanism is talking:

LabelWhat is behind it
GSICS2 and Dota 2, through Valve’s game state integration.
Game logFortnite, through the log it writes.
LCULeague of Legends, through your own League client.
ScreenOne of the four games on this page, read from your capture.
Low confidenceA reading Pyre could not make proper sense of. It never runs a break on its own.

Screen is the tier this page is about. It is the least certain of the four and it is treated that way everywhere: a screen reading has to clear a higher bar before it can run anything, and every failure lands on the cadence rather than on silence.

Before the picture says anything, the process list does

Section titled “Before the picture says anything, the process list does”

Reading an end screen takes a match to end. Noticing that a game is open takes nothing, and the desktop app was already doing it. So for these four games, the moment your game is running the card says so:

Apex Legends · Running · Low confidence

Running is the one word on that line that is not a reading of the match. It is a reading of your computer: the game is up, and Pyre knows nothing else yet. The confidence is low because it deserves to be, and the reading can never start a break on its own.

What it does do is protect. A running game with nothing said about the match is assumed to be a match, and Pyre holds ads out of it, because for these four the alternative was no protection at all. The card says which kind of protection you are getting rather than letting you assume Pyre can see your matches:

Protecting the match. (Pyre cannot see it, so it assumes one.)

A confident reading from the picture replaces the assumption the instant it arrives. Tabbing out of the game for a few minutes, or closing it, releases it. The whole rule, including what it costs you, is on Ad Manager.

Pyre will not run a real ad break off a screen reading on a channel that has never confirmed one. Your monitor, your game’s language, your HUD scale and your resolution are yours, and the only person who can prove Pyre reads them correctly is you.

Until a game is verified on your channel, its readings can only ever ask. They arrive as a prompt on the Stream Manager card, and nothing runs until you tap it.

  1. Start the desktop app and the game. A browser tab cannot read your screen.

  2. Open Ads under MONETIZE in the Pyre.Stream sidebar, open the game’s card, and press Verify detection.

  3. Play one match. The panel says so, because there is nothing to see until you do: Play one match. Pyre will tell you the moment it sees your end screen.

  4. Watch the strip. The panel shows what Pyre is reading and how close each check is to its threshold. Before frames arrive it says Waiting for your game. The bars below move when Pyre starts seeing frames.

  5. Let a match end. When Pyre sees the end screen it confirms in one line: Match end detected {n}s after the banner. That number is the delay between the banner appearing and Pyre being sure, and it is the thing to sanity check against what you just watched.

That one confirmation is what lifts the game to a full detector on your channel.

If Pyre gets it wrong, the panel carries That was wrong and It missed one next to the confirmation. Today those are a note to yourself: Noted on this machine. Nothing was sent. They become useful to us only if you switch the recorder on below.

Each game’s card carries a chip for what detection is actually doing right now. The desktop app says the same thing in a full sentence. Five words, and each one names a different fact:

ChipThe sentence behind it
VerifiedConnected. Pyre can see this game's end screens.
UnverifiedNot verified on this channel yet. Play one match with the checker open and Pyre will confirm itself.
DegradedPyre can see the game but part of the reading is off. Ads fall back to the spaced-out cadence when it cannot be sure.
Stale packThis game had an update Pyre has not caught up with. Detection is extra careful until we refresh it, and your cadence still runs.
UnsupportedPyre cannot read this game yet.

Two absences are deliberate rather than missing.

A game that is not one of the four gets no chip at all. CS2 reads its own words, so an Unverified mark on its card would be a fact about a detector it does not have.

And there is a sixth thing the desktop app can say that has no chip word, because it is a fact about the app on your machine rather than about this game’s setup: The detection window crashed. Pyre will retry; ads stay on the cadence meanwhile.

Games change. The only thing that keeps a screen reading accurate through a rebrand or a new season is footage of the moment it got confused, and the only people who have that footage are the people playing.

So the Ads page carries an opt-in, off on every channel until you turn it on yourself:

Help Pyre learn this game
Send cropped detection strips
When detection nearly fires or visibly misses, Pyre can send us the small strip of the screen it was reading. Never the whole screen, never your webcam, never chat. You can see exactly what a strip looks like below, and delete everything you have sent at any time.

What a strip is. The exact region Pyre was already reading, cut on your machine before anything is queued to send. Not a frame with a box drawn on it: a frame never reaches the sending path at all. The card shows you real examples under What a strip looks like, so you decide with the actual picture in front of you rather than with our description of it. Before anything has been captured it says Nothing captured yet. Strips appear here before anything is sent.

When one is sent. Only while the switch is on, and only on the three moments worth learning from: detection nearly fired, detection visibly missed one, or you flagged it in the verification panel.

How much. A channel sends at most 50 strips a day and holds at most 400, with the oldest dropped once it is full. Anything over 256 KB is refused rather than shrunk. Every strip is deleted automatically after 90 days.

How to take it back. Delete what you have sent wipes your strips from our servers immediately, and the card confirms with Deleted. Turning the switch off stops any new strip from that moment. With it off, nothing about your picture ever leaves your computer.

It needs the desktop app. A browser tab cannot read your screen. Without the app running there is no screen reading at all, and Ad Manager runs the cadence, which is a working feature rather than a degraded one.

It is these four games. Overwatch, Marvel Rivals, Dead by Daylight and Apex Legends. Anything else either has a detector of its own or has none, and a game with none still gets the cadence. Pyre cannot read this game yet. is the honest answer rather than a promise.

A new game arrives with the web app, not with an update. The reading for each game is data Pyre fetches, so a refreshed one reaches you without downloading a new desktop build. It also means a game can be paused from our side if its reading starts misfiring, and you land on the cadence when it is.

It reads the end, not the story. Pyre knows a match ended. It does not know your placement, your score or your rank, and nothing on this page is analytics.

Ad breaks are Twitch only. The reading itself is not, but the feature it feeds rides Twitch’s ad APIs, and there is nothing equivalent to point at on Kick or YouTube.

  • Ad Manager for what Pyre does with a reading, the cadence, and the five moments.
  • The Pyre.Stream desktop app for installing the app and for the games that report through a config rather than through the screen.
  • The Stream Manager for the cockpit card the detector reading appears on.