Program koji čita ekran dok igraš i iz same slike izvlači sve: killove, obaranja, smrti, gulag, mjesto, mod, mapu, tko je koga ubio, pa čak i video svakog killa. Bez službenog API-ja i bez ijednog dodira s igrom.
Warzone nakon meča pokaže nekoliko brojki i zaboravi ih. Službenog načina da ih dobiješ nema, a alati koji čitaju memoriju igre završavaju banom. Warzone Tracker zato radi jedino što radi i svaki program za snimanje: gleda sliku. Sve ostalo je posao prepoznavanja.
Početak i kraj meča, killovi, obaranja, smrti, asistencije, damage, mjesto, mod i mapa. Mod i mapa pročitaju se već na ekranu učitavanja.
Za svaki događaj sam izreže 15 sekundi iz pozadinske snimke i složi ih u galeriju. Iz klipa pročita i je li bio headshot ili longshot.
Imena igrača koje si ubio i koji su ubili tebe, kroz sve mečeve. Ako ti u tim upadne netko tko te ranije ubio, tracker to označi.
Brojke se osvježavaju tijekom meča. Trenutna pozicija čita se s brojača preostalih timova, a ne čeka kraj meča.
Prepoznaje ulazak u gulag i ishod. Killovi iz gulaga se ne broje u meč, baš kao ni oni iz zagrijavanja.
Kartica meča i kartica profila preuzimaju se kao gotova slika, spremna za slanje.
Sve ispod pročitano je s ekrana tijekom jednog stvarnog meča. Nitko ništa nije upisivao.
Tracker zna točnu sekundu svakog killa i smrti. Nakon meča iz pozadinske snimke izreže 10 sekundi prije i 5 poslije događaja, prekodira ih i spremi kao zaseban klip sa sličicom.
Zatim gotov klip još jednom pročita: natpis koji igra ispiše uz nišan otkriva je li to bio headshot, longshot ili pogodak kroz zid, pa klip dobije oznaku po kojoj se filtrira.
Stari klipovi brišu se sami, po roku ili po zauzeću diska. Omiljeni ostaju.



početak + (N − prvi) × 3 s, pa se iz vremena killa izravno dobije koje komade treba spojiti.Svaki meč i cijeli profil imaju karticu koja se jednim klikom preuzme ili kopira kao slika 2400 × 1260. Crta se u pregledniku iz istih podataka koje tracker pročita s ekrana, bez ikakvog vanjskog servisa.
Gotov program za čitanje teksta na slici igre daje smeće: slova su sitna, pozadina se miče, a pola informacija uopće nije tekst nego ikona, boja ili položaj. Zato svaki dio ekrana ima vlastiti postupak, pisan ručno za ono što Warzone ondje stvarno crta.
Osam puta u sekundi cijeli lanac prođe od slike do baze. Najskuplji korak je čitanje slova, pa je sve posloženo tako da se slova čitaju što rjeđe i na što manjem izrezu.
DXGI-ja i puni međuspremnik. Ako obrada kasni, odbacuje se najstariji kadar na kojem se ništa nije promijenilo, nikad onaj na kojem se prvi put pojavio novi redak.samo dok je igra u prvom planu
Prije čitanja slova slika se mora svesti na tekst i pozadinu. Koji postupak to uspije ovisi o tome što je iza slova, a to se mijenja od ekrana do ekrana. Ovo je naziv moda sa završnog ekrana, svijetli tekst na tirkiznoj traci:




Killfeed se priprema na jedan način, scoreboard na drugi, mod na treći, a brojači na HUD-u na četvrti. Svaki od tih izbora nastao je tek kad je prethodni zakazao na stvarnom meču.
Kill i obaranje u killfeedu izgledaju gotovo isto: isto ime, isto oružje, ista žrtva. Razlikuje ih sličica od dvadesetak piksela, ispred pozadine koja se mijenja svake sekunde.






Lijevo je ono što je na ekranu, desno ono što ostane kad se zadrže samo gotovo bijeli pikseli. Tracker sudi isključivo po desnoj slici: širini, visini i rasporedu stupaca. Ako je pozadina toliko svijetla da se oblik ne vidi, ne pogađa nego čeka sljedeći kadar.






Redak killfeeda stoji na ekranu oko pet sekundi, pa ga tracker pročita šest ili sedam puta. Svako čitanje je glas. Događaj nastaje tek kad se glasovi slože, a ime igrača postaje ono koje je pročitano najčešće. Ovo su stvarna čitanja iz mečeva:



Swaggerboe2s, Swaggerbeez4 i Swagperds224 daju Swagger69224: glasa se po svakom znaku posebno, pa rezultat može biti ime koje nijedno čitanje nije pogodilo.| Pročitano | Upisano | Kako |
|---|---|---|
| OASIJAL BATTLE ROYALEI | Casual Battle Royale | Usporedba s poznatim modovima: nekoliko krivih slova je i dalje isti mod |
| ROYAL Q | (ništa) | Ne sliči nijednom modu i nije čisto pročitano, pa se ne upisuje; bolje prazno nego krivo |
| BrunoIlO · Brunol1O · Brino_AFK | Bruno_AFK | Veliko I, malo l i jedinica u fontu igre izgledaju isto; vlastito ime prepoznaje se i po obliku piksela |
| DarryTItan_321 · DarryTitan_321 | DarryTitan_321 | Dva oblika istog igrača u istom meču spajaju se, a glavno ime je češće pročitano |
| dogcabin12 · dogcabini2 | dogcabin12 | Ista žrtva u istom retku dva puta zaredom ne može biti dva killa |
| Blitz_DarryxEZ · Blitz_OarryxEZ | Blitz_DarryxEZ | Obaranje i kill iste žrtve povezuju se i kad se ime drugi put pročita drugačije |
Kad otvoriš tablicu, tracker pročita službeni zbroj killova i usporedi ga s onim što je sam složio iz killfeeda. Tako je otkriveno i pravilo koje nigdje ne piše: kad suigrač dokrajči igrača kojeg si ti oborio, igra kill upisuje tebi.
Izrez na kojem je tracker pogriješio sprema se i ulazi u testove. Točnost se mjeri na 321 ručno označenoj slici iz stvarnih mečeva, prije svake nove verzije.
Opći čitač teksta je na fontu igre čitao 5 kao 9, 17 kao 7 i gubio jednoznamenkaste brojeve. Font je uvijek isti, pa se svaka znamenka uspoređuje s predloškom, piksel po piksel.
Tablica se prepoznaje po riječima u zaglavlju. Zatim se čita redak po redak i stupac po stupac, jer bi čitanje cijele tablice odjednom preskočilo tvoj istaknuti redak.
Dovoljno je tablicu otvoriti na trenutak: prvi kadar na kojem se vidi ostaje zapamćen.
Isti redak u killfeedu znači različito u zagrijavanju, u meču i u gulagu. Tracker zato stalno prati na kojem si ekranu, a neke podatke hvata u jedinom trenutku kad se uopće vide.
Mod i mapa pišu na ekranu učitavanja, prije nego što meč postoji. Tracker ih pročita, zapamti i upiše u meč kad on počne.
Naziv mape ovdje je rukom pisan logotip, a ne font igre. Prolazi jer se pročitano uspoređuje s popisom poznatih mapa.



Prepoznavanje sa slike nikad nije savršeno. Zato je u sam program ugrađeno sve što treba da se greška nađe, pokaže i pretvori u test, bez otvaranja koda.
Dok igraš, dvije tipke: Space za „nešto se dogodilo” i Enter za „tracker sad griješi”. Ne gledaš u ekran trackera i ne prekidaš igru.
Oko svakog pritiska sprema se 25 sekundi dokaza: kadrovi, izrezi killfeeda, izrezi brojača i sve što je tracker u tom trenutku mislio. Nakon meča prođeš kroz trenutke, kažeš što se stvarno dogodilo i predaš paket.
Iz jednog takvog paketa došli su čitanje moda s ekrana učitavanja i pravilo o killu koji dovrši suigrač.
| Dio | Čime | Zašto tako |
|---|---|---|
| Jezgra | Rust, devet modula: hvatanje, vid, događaji, baza, klipovi, web, overlay, jezgra i aplikacija | Brzina i predvidljiva potrošnja dok igra radi; svaki modul se testira zasebno |
| Hvatanje | DXGI Desktop Duplication, zasebna dretva s međuspremnikom | Spor korak obrade ne smije značiti propušten kadar |
| Vid | Vlastiti kod po pikselima, predlošci znamenki, Tesseract učitan u proces samo za slova | Font i raspored igre su poznati, pa je ciljani kod brži i točniji od općeg OCR-a |
| Praćenje | Glasanje po retku, spajanje oblika imena, automat stanja za meč i gulag | Pojedino čitanje smije biti krivo, upisani događaj ne smije |
| Klipovi | Steamova pozadinska snimka (HEVC u komadima od 3 s), rezanje i prekodiranje ffmpegom nakon meča | Tracker hvata samo 8 kadrova u sekundi; pravi video već postoji, treba ga samo pronaći po vremenu |
| Baza | SQLite (WAL), verzionirane migracije s kopijom prije svake | Jedna datoteka, bez servisa; dashboard čita dok tracker piše |
| Dashboard | Ugrađeni HTTP poslužitelj, čisti HTML, CSS i JavaScript, osvježavanje uživo | Nema koraka gradnje ni vanjskih ovisnosti |
| Nadogradnja | Nadzornik koji novu verziju uključi tek dvije minute nakon kraja meča | Nova verzija stiže usred igre, a praćenje se ne prekida |
| Razvoj | Piše se na Macu, prevodi za Windows (cargo-xwin), šalje preko SSH-a | Cijeli lanac od slike do baze testira se bez Windowsa i bez igre |
| Privatnost | Samo 127.0.0.1, provjera izvora svakog zahtjeva | Povijest, klipove i slike ekrana ne smije moći pročitati tuđa web stranica |
Bez čitanja memorije, bez presretanja mreže, bez slanja tipki u igru. Program vidi točno ono što vidi i OBS.
Ovo je radna verzija, ne gotov proizvod. Na ručno označenom skupu 97 % upisanih događaja je točno, a ukupne killove dodatno potvrđuje scoreboard. Dio killova tracker i dalje propusti kad redak prekrije oznaka na karti ili kad prebrzo nestane.
Radi na 1920×1080 i engleskom sučelju igre. Druge rezolucije traže vlastiti kalibracijski profil, za što je temelj već tu.