Privatni projekt · Windows · Call of Duty: Warzone

Warzone Tracker

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.

Početna stranica dashboarda: 16 mečeva, 154 killa, K/D 8,11, graf killova i smrti po meču, medalje
0dodira s igrom: jedini ulaz je slika ekrana
9različitih načina čitanja, svaki pisan za jedan dio ekrana
8×u sekundi se čita ekran, oko 12 ms po kadru
536automatskih testova, velik dio na stvarnim izrezima iz mečeva
35 000redaka Rusta u devet modula, nastalih u četiri dana
Što radi

Statistika koju igra ne daje, izvučena iz onoga što ionako vidiš

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.

Cijeli meč, bez ijednog klika

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.

Video svakog killa i smrti

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.

Tko je koga

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.

Uživo, s pozicijom

Brojke se osvježavaju tijekom meča. Trenutna pozicija čita se s brojača preostalih timova, a ne čeka kraj meča.

Gulag

Prepoznaje ulazak u gulag i ishod. Killovi iz gulaga se ne broje u meč, baš kao ni oni iz zagrijavanja.

Kartice za dijeljenje

Kartica meča i kartica profila preuzimaju se kao gotova slika, spremna za slanje.

Dashboard

Jedan meč, do zadnjeg retka

Sve ispod pročitano je s ekrana tijekom jednog stvarnog meča. Nitko ništa nije upisivao.

Stranica meča: Casual Battle Royale, Hajin, 1. mjesto, 11 killova, 0 smrti, 5650 damagea, tablica tima
Stranica meča. Pobjeda u modu Casual Battle Royale na mapi Hajin: 11 killova, bez smrti. Uz svaku brojku piše odakle je pročitana, a ispod je cijeli tim.
Donji dio stranice meča: popis igrača koje sam ubio, svaki s brojem killova
Tko je koga. Dvanaest imena pročitanih iz killfeeda u tom meču. Klik na ime vodi na sve vaše susrete.
Stranica Uživo: 12 killova, 0 smrti, 5650 damagea, pozicija 1, usporedba s prosjekom
Uživo. Trenutni meč prema tvom prosjeku i rekordu, pozicija, tim i svaki tvoj događaj redom kako se dogodio.
Klipovi

Svaki kill dobije svoj video, sam od sebe

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.

Galerija: dvanaest klipova killova sa sličicama, imenima žrtava i oznakama Headshot i Longshot
Galerija. Klipovi jedne večeri, s imenom žrtve i oznakom pogotka. Filtrira se po vrsti, oznaci, meču i igraču.
Natpis uz nišan: ENEMY DOWNED, HEADSHOT ELIMINATION
Headshot. Dva retka sitnog žutog teksta, vidljiva oko sekundu.
Natpis uz nišan: LONGSHOT ELIMINATION
Longshot. Isti font, druga pozadina; čita se iz više kadrova klipa.
Natpis uz nišan: WALL BANG na svijetloj pozadini
Kroz zid. Bijeli tekst na gotovo bijeloj pozadini i dalje mora proći.
Kako se nađe prava sekundaSteam u pozadini sprema video u komadima od tri sekunde. Vrijeme komada je početak + (N − prvi) × 3 s, pa se iz vremena killa izravno dobije koje komade treba spojiti.
Zašto ne snima samTracker hvata osam kadrova u sekundi, što je dovoljno za čitanje, a premalo za video. Pravi video od 60 sličica već postoji na disku; treba ga samo pronaći i izrezati.
Ne smeta igriKlipovi se izrađuju nakon meča, jedan po jedan, niskim prioritetom i bez prozora. Prekodiranje iz HEVC-a u H.264 radi grafička kartica kad god može.
Utrka sa spremnikomSteam čuva zadnja dva sata i briše najstarije. Klip mora nastati dok je događaj još unutra, a obrisani klip se ne izrađuje ponovno.
Kartice

Meč i profil kao gotova slika

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.

Kartica meča: Casual Battle Royale, Hajin, 1. mjesto, 11 killova, 0 smrti, K/D 11, 5650 damagea, 12 obaranja, popis ubijenih i suigrači
Kartica meča. Mod, mapa, mjesto, brojke, koga si ubio, tko je ubio tebe i s kim si igrao. Ovo je pobjeda od 15. studenoga, točno kako se preuzima.
Kartica profila: 16 mečeva, 154 killa, 19 smrti, K/D 8,11, 9,6 killova po meču, najbolji meč, rekordi i najčešći suigrači
Kartica profila. Ukupno 16 mečeva: 154 killa, K/D 8,11, prosječno mjesto 13. Ispod su najbolji meč, rekordi i igrači s kojima najčešće igraš.
Kako čita ekran

Ne postoji jedan OCR. Postoji njih devet.

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.

Kadar iz igre s označenim regijama: kompas, killfeed, brojači
Sve što tracker gleda u meču. Zeleno je kompas, po kojem zna da si u meču. Narančasto je killfeed. Plavo su brojači preostalih timova i igrača. Ostatak slike za njega ne postoji, i zato stigne osam puta u sekundi.
pikseliRetci killfeedaGdje redak počinje i završava, koliko je svijetao i blijedi li, traži se po stupcima piksela.
oblikIkona između imenaKill, obaranje ili dokrajčenje razlikuju se mjerenjem oblika sličice od dvadesetak piksela.
bojaČije je imeTvoje, suigračevo ili protivničko ime određuje boja teksta, ne slova.
slovaImena igračaSvako ime izreže se zasebno, pretvori u crno na bijelom i tek tada čita.
predlošciBrojači na HUD-uZnamenke se uspoređuju s predlošcima fonta igre, piksel po piksel.
tablicaScoreboardSvaka ćelija tablice čita se zasebno, samo znamenkama, pa se stupci ne mogu pomiješati.
natpisiStanje igreLobby, zagrijavanje, meč, gulag i gledanje suigrača prepoznaju se po natpisima na nekoliko mjesta ekrana.
natpisiEkrani prije i poslije mečaMod i mapa s učitavanja, mjesto i brojke sa završnog ekrana.
videoNatpis uz nišanHeadshot i longshot čitaju se naknadno, iz kadrova gotovog klipa.
Jedan kadar

Što se dogodi u dvanaest milisekundi

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.

  1. Hvatanje. Zasebna dretva uzima sliku monitora preko 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
  2. Stanje ekrana. Umjesto da svaki put čita sva pravila, klasifikator pamti koje se zadnje poklopilo i prvo provjeri samo njega. U mirnom meču to je jedno čitanje umjesto četiri.1 čitanje umjesto 4
  3. Retci killfeeda. Bez ijednog slova: po stupcima piksela traže se trake teksta, boja imena lijevo, ikona oružja i ikona stanja. Već se ovdje zna je li redak kill, obaranje ili obični ping.bez OCR-a
  4. Imena. Svako ime izreže se zasebno, uveća tri puta, pretvori u crno na bijelom i tek tada ide Tesseractu, koji je učitan u sam proces. Ime koje je već pouzdano pročitano ne čita se ponovno.najviše 5 pokušaja po imenu
  5. Praćenje. Novo čitanje pridružuje se retku s prošlog kadra po položaju, širini i potpisu piksela. Glasovi se zbrajaju, a događaj izlazi kad ih je dovoljno.3 viđenja za potvrdu
  6. Brojači i tablica. Pozicija se čita svake tri sekunde, scoreboard samo kad ga otvoriš, završni ekran samo nakon meča.po potrebi
  7. Baza i prikaz. Događaj se upisuje s vremenom, pouzdanošću i izvorom, a stranica Uživo ga dobije odmah, bez osvježavanja.SQLite + SSE
Izrez killfeeda s više redaka: imena u boji, ikone oružja i imena žrtava
Killfeed kako ga tracker dobije. Do pet redaka odjednom, svaki se pomiče prema gore kad stigne novi i blijedi nakon nekoliko sekundi. Pozadina je sama igra.
Problem 1 · priprema slike

Isti pikseli, četiri pogleda, samo jedan čitljiv

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:

Naziv moda kako je na ekranu: bijeli tekst na tirkiznoj traci
Kako je na ekranu. Čovjeku savršeno čitljivo.
Isti izrez po svjetlini: traka je siva i gotovo jednako svijetla kao tekst
PROMAŠAJPo svjetlini. Traka je gotovo jednako svijetla kao slova. Čitač je vraćao „ROYAL Q”.
Isti izrez po boji: pruge trake postale su crni šum oko slova
PROMAŠAJPo boji. Postupak koji spašava killfeed na pijesku ovdje zadrži i traku, jer je i ona u boji.
Isti izrez po najslabijem kanalu boje: čisti bijeli tekst na tamnom
ČITA SEPo najslabijem kanalu. Bijelo ima sve tri boje jake, tirkizna nema crvenu. Traka nestane, tekst ostane.

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.

Problem 2 · ono što nije tekst

Ikona se ne čita, ona se mjeri

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.

Redak killfeeda: ime igrača, oružje, ikona obaranja, ime žrtve
Uvećana ikona obaranjaIsta ikona kao crno-bijela maska
OBARANJE
Ležeći oblik, pun cijelom širinom: 25 × 10 piksela.
Uvećana lubanjaLubanja kao maska
KILL
Otprilike kvadrat: 20 × 20 piksela.
Uvećana ikona dokrajčenjaIkona dokrajčenja kao maska
KILL
Široka kao obaranje, ali tijelo joj je samo desno: 35 % visokih stupaca prema 60 %.

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.

Ikona obaranja ispred svijetlog stupaMaska s okomitom crtom kroz ikonu
Svijetla crta iza ikone Bijeli stup u pozadini prođe kroz ikonu cijelom visinom i obaranje izgleda kao viša, uža sličica. Visina se zato mjeri samo u retcima s dovoljno bijelih piksela, a širina kao najduži neprekinuti niz stupaca.
Lubanja na bijelom ziduMaska potpuno bijela
Bijela podloga Na bijelom zidu maska je cijela bijela i svaki oblik je moguć. Kad je više od pola izreza bijelo, ikona se proglašava nečitljivom i taj kadar ne glasa.
Brojači iznad svijetlog nebaIsti brojači izdvojeni po tamnom obrubu
Bijele brojke na bijelom nebu. Prag svjetline ovdje ne pomaže. Znamenke se izdvajaju po tamnom obrubu koji igra crta oko njih: ostaju samo svijetli pikseli do kojih se s ruba slike ne može doći.
Redak smrti: crveno ime protivnika lijevo, ime igrača desno
Smrt je pitanje boje. Crveno ime lijevo, tvoje desno. Ako je lijevo ime u tvojoj boji, to je tvoj vlastiti redak prerezan na oznaci klana, i ne broji se.
Problem 3 · čitač griješi

Nijedno čitanje nije istina. Istina je ono oko čega se čitanja slože.

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:

Redak obaranja: ime, oružje, ikona obaranja, žrtva
0 s: obaranje. Redak se pojavi. Nakon dva do tri čitanja koja se slažu upisuje se obaranje.
Isti redak, izblijedio
4 s: blijedi. Izblijedjeli redak više ne glasa, jer se na njemu ikona i slova čitaju krivo.
Na istom mjestu kill istog igrača, bez ikone obaranja
6 s: kill. Na isto mjesto stane kill istog igrača. Po pomaku i imenu tracker zna da je to novi redak, a ne stari.
Je li to isti redak?Redak s prošlog kadra traži se po položaju (smije se pomaknuti do pet redaka gore), širini lijevog imena i potpisu piksela. Isto ime pomaknuto za cijeli redak je novi događaj, a ne stari.
Ime se slaže znak po znakČitanja Swaggerboe2s, Swaggerbeez4 i Swagperds224 daju Swagger69224: glasa se po svakom znaku posebno, pa rezultat može biti ime koje nijedno čitanje nije pogodilo.
Kill koji stigne kasnoAko je obaranje već upisano, a isti redak naknadno dvaput pokaže kill, događaj se nadogradi umjesto da nastane drugi.
Pouzdanost uz svaki događajKoliko se čitanja složilo zapisuje se uz događaj. Slabiji događaji vide se na stranici Debug i mogu se ručno ispraviti.
PročitanoUpisanoKako
OASIJAL BATTLE ROYALEICasual Battle RoyaleUsporedba 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_AFKBruno_AFKVeliko I, malo l i jedinica u fontu igre izgledaju isto; vlastito ime prepoznaje se i po obliku piksela
DarryTItan_321 · DarryTitan_321DarryTitan_321Dva oblika istog igrača u istom meču spajaju se, a glavno ime je češće pročitano
dogcabin12 · dogcabini2dogcabin12Ista žrtva u istom retku dva puta zaredom ne može biti dva killa
Blitz_DarryxEZ · Blitz_OarryxEZBlitz_DarryxEZObaranje i kill iste žrtve povezuju se i kad se ime drugi put pročita drugačije

Scoreboard kao sudac

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.

Svaka greška postaje test

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.

Brojke

Znamenke se ne čitaju, uspoređuju se

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.

Scoreboard, ćelija po ćelija

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.

Otvoren scoreboard u meču s označenim zaglavljem i retcima tima
Scoreboard. Score, eliminacije, killovi, asistencije, smrti i damage za svakog člana tima. To su službene brojke, i njima se provjerava sve što je pročitano iz killfeeda.
Pozicija smije samo padatiBroj preostalih timova čita se svake tri sekunde. Nova vrijednost vrijedi tek kad je pročitana dvaput zaredom, ne smije narasti, a nerealan skok se zanemaruje.
Brojač se seliU avionu su stupci četiri, a ne tri, pa je sve pomaknuto. Čitač zato ne gleda fiksno mjesto, nego traži par ikona „tim” i „igrač” po obliku i čita broj ispod svake.
Problem 4 · kontekst

Zna gdje si, iako mu to nitko ne govori

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.

Ekran učitavanja meča s označenim regijama: naziv mape gore lijevo i naziv moda dolje lijevo
Ekran učitavanja. Žuto je mod, plavo mapa. Vide se desetak sekundi prije meča, i tracker ih tada pročita.

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.

Uvodna scena gulaga s natpisom CAPTURED
Gulag. Uvodna scena „CAPTURED” jedan je od rijetkih trenutaka u kojima se ulazak može prepoznati.
Gledanje suigrača s natpisom SPECTATING
Gledanje suigrača. Brojač timova i dalje se čita, jer tvoj tim još igra.
Završni ekran After Action Report
Kraj. Pročitan završni ekran odmah zatvara meč i daje konačno mjesto.
Arena gulaga: nema kompasa ni ikakvog natpisa
Arena gulaga. Na ekranu nema ničega po čemu bi se prepoznala.
UlazakUvodna scena „CAPTURED” ili čekaonica s natpisom „YOU FIGHT”, i to samo nakon tvoje smrti u killfeedu.
BorbaU areni nema natpisa, pa tracker samo pamti da si unutra. Killfeed se za to vrijeme ne broji u meč.
PobjedaKompas mora biti na ekranu neprekinuto sekundu i pol. Jedno krivo čitanje kompasa usred borbe ne znači povratak.
PorazNatpis „SPECTATING”, završni ekran ili tri minute bez povratka.
Debug i kalibracija

Pola posla je vidjeti gdje griješi

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.

Stranica Debug: brojke trenutnog meča, popis mojih killova s izrezima killfeeda i odlukama po retku, mreža zadnjih čitanja, zadnji scoreboard
Stranica Debug. Uz svaki tvoj kill stoji izrez killfeeda iz kojeg je zabilježen i odluka za svaki redak. Desno su sumnjiva mjesta: ovdje tracker sam javlja da killfeed ima jedan kill više nego scoreboard. Ispod je mreža zadnjih čitanja i zadnja pročitana tablica.
Zašto je redak prihvaćen ili odbačenUz svako čitanje piše odluka: „kill, novi redak”, „obaranje (nije kill)”, „blijedi, ime se više ne čita”, zajedno s položajem retka i svjetlinom.
Točnost killfeeda uživoSvako otvaranje scoreboarda je mjerenje. Stranica računa koliko se killova iz killfeeda slaže s tablicom i broji i propuštene i višak.
Izvještaj jednim klikomCijelo stanje, zadnji događaji i sumnjiva mjesta kopiraju se kao tekst. Tako je pronađena većina dosadašnjih grešaka.
Dokazi na diskuKadrovi oko tvoje smrti, ulaska u gulag, završnog ekrana i ekrana prije meča spremaju se sami, kružno, da se kasnije vidi što je bilo na ekranu.
Stranica Kalibracija: kadar igre s pravokutnicima regija za killfeed, stanja i scoreboard te popis regija
Kalibracija. Narančasto je scoreboard (zaglavlje, imena i stupci brojeva), zeleno pravila stanja, plavo killfeed. Desno je popis svih regija i odakle je koja: iz ugrađenog profila ili iz tvojih postavki.
Regije se povlače mišemSve što tracker čita definirano je regijama: gdje je killfeed, gdje natpis gulaga, gdje je koji stupac tablice. Namještaju se po stvarnom zadnjem kadru koji je tracker vidio, ili po učitanoj slici.
Udjeli ekrana, ne pikseliRegije su zapisane kao udjeli širine i visine, pa isti profil vrijedi na svakoj rezoluciji istog omjera. Promjena ide u postavke, a prethodna verzija ostaje kao kopija.
Vremenska crta označenog meča: čitanja scoreboarda, događaji trackera i mjesto gdje se scoreboard ne slaže
Vremenska crta meča. Žuto su čitanja scoreboarda, plavo događaji trackera. Crveno je mjesto gdje se tablica i killfeed ne slažu.

Označavanje meča

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č.

  • Mjerenje prije svake verzije. 321 ručno označena slika iz stvarnih mečeva; točnost ispod praga znači da verzija ne ide na računalo.
  • Svaka greška postaje test. Izrez na kojem je tracker pogriješio ulazi u 536 automatskih testova.
Ispod haube

Tehnologija

DioČimeZašto tako
JezgraRust, devet modula: hvatanje, vid, događaji, baza, klipovi, web, overlay, jezgra i aplikacijaBrzina i predvidljiva potrošnja dok igra radi; svaki modul se testira zasebno
HvatanjeDXGI Desktop Duplication, zasebna dretva s međuspremnikomSpor korak obrade ne smije značiti propušten kadar
VidVlastiti kod po pikselima, predlošci znamenki, Tesseract učitan u proces samo za slovaFont i raspored igre su poznati, pa je ciljani kod brži i točniji od općeg OCR-a
PraćenjeGlasanje po retku, spajanje oblika imena, automat stanja za meč i gulagPojedino čitanje smije biti krivo, upisani događaj ne smije
KlipoviSteamova pozadinska snimka (HEVC u komadima od 3 s), rezanje i prekodiranje ffmpegom nakon mečaTracker hvata samo 8 kadrova u sekundi; pravi video već postoji, treba ga samo pronaći po vremenu
BazaSQLite (WAL), verzionirane migracije s kopijom prije svakeJedna datoteka, bez servisa; dashboard čita dok tracker piše
DashboardUgrađeni HTTP poslužitelj, čisti HTML, CSS i JavaScript, osvježavanje uživoNema koraka gradnje ni vanjskih ovisnosti
NadogradnjaNadzornik koji novu verziju uključi tek dvije minute nakon kraja mečaNova verzija stiže usred igre, a praćenje se ne prekida
RazvojPiše se na Macu, prevodi za Windows (cargo-xwin), šalje preko SSH-aCijeli lanac od slike do baze testira se bez Windowsa i bez igre
PrivatnostSamo 127.0.0.1, provjera izvora svakog zahtjevaPovijest, 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.

Iskreno

Gdje je sada i što slijedi

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.

  • Imena tima prije meča. Čitanje suigrača iz uvodne scene, prije prvog otvaranja tablice.
  • Drugi izvori snimke. NVIDIA ShadowPlay uz Steam.
  • Druge rezolucije. Profili za 1440p i ultraširoke monitore.
  • Zajednički server. Svatko šalje svoje mečeve, a statistika se spaja. Hosta ga vlasnik sam.