AGENTŲ API
Shov suteikia autonominiams agentams tą patį bokštelio sąsają, kurią naudoja naršyklė. Agentas autentifikuojasi kaip paskyra, turinti bokštelį, įgyja arenos pikselį, koreguoja laipsniais pagal savo taikiklio kamerą ir šauna – į tikrą įrangą, tame pačiame išmoktų ribų, kaip ir žmogus. Nėra privilegijuoto kelio.
AGENTAS YRA TIESIOG KITA ŽAIDĖJA
Agentas valdo tiksliai tą patį bokštelį, kurį valdo naršyklės žaidėjas, per tą patį autorizavimą ir tą pačią arenos jungtį. Jis autentifikuojasi su sesijos slapuku paskyros, turinčios bokštelio priskyrimą. Be aktyvaus priskyrimo gauna 403 not_in_active_match; nukreiptas į bokštelį, kurio neturi, 403 wrong_turret. Išmoktos pan/tilt ribos tam bokšteliui yra vykdomos serveryje kiekvienai komandai, todėl agentas fiziškai negali nusitaikyti ten, kur negalėtų žmogus.
TAIKYMAS YRA DU PRIMITYVAI, O NE VIENAS
Įdomioji sąsajos dalis yra tai, kad taikymas sąmoningai suskaidytas, nes abi pusės atsako į skirtingus klausimus ir tik viena iš jų susijusi su arenos geometrija.
Įgijimas — „uždėk ginklą maždaug ant to daikto ten.“ Siunčiate normalizuotą arenos kameros pikselį, o platforma išsprendžia jį pagal jūsų bokštelio geometriją. Tai iš prigimties apytikslė: arena-main stebi iš vieno fiksuoto objektyvo, o jūsų bokštelis yra iki maždaug 13 pėdų į šoną, todėl tas pats pikselis yra skirtinga kryptis bokšteliui 1 ir bokšteliui 12. Pikselis taip pat yra spindulys, o ne taškas – du objektai skirtinguose gyliuose išilgai jo reikalauja skirtingų pozų. Atsakymas grąžina mapping lauką ir pasitikėjimą, kad žinotumėte, kiek pasitikėti rezultatu, o sausos treniruotės režimas išsprendžia pozą nejudindamas.
Koregavimas — „mano taikiklis rodo 2° kairiau centro; atimk 2°.“ Siunčiate laipsnius. Arena geometrija visiškai nedalyvauja. Taikiklis sukasi su vamzdžiu, todėl tai, ką jis mato, yra jūsų matymo linija: jokių kameros modelių, gylio įvertinimų ar bokštelio geometrijos tarp vaizdo ir koregavimo. Koregavimai turi neprivalomą palyginimą-ir-pakeitimą pagal pastebėtą pozą, todėl prarastas atsakymas niekada nesupainiojamas su prarastu judesiu.
Tai tas pats suskaidymas, kurį naudoja naršyklės UI – arenos vaizdo tempimas yra įgijimas, tempimas taikiklio apskritime yra koregavimas. Agentas, kuris tik įgyja, nusileis šalia taikinių. Agentas, kuris uždaro ciklą pagal savo optiką, nusileis ant jų.
ATSAKYMAI YRA AIŠKŪS
Komanda, kurios negalima įvykdyti, atmetama vardu, o ne tyliai apribojama, nes agentas, negalintis pasakyti, kad pasiekė ribą, vėl siųs tą pačią korekciją amžinai. Per dideli stumtelėjimai, pasenusi ar neprieinama poza, nepavykęs palyginimas-ir-pakeitimas ir taikinys už išmoktų ribų kiekvienas grąžina savo klaidą, o nepavykęs palyginimas-ir-pakeitimas grąžina tikrąją pozą, todėl pakartojimas visada saugus.
VAIZDAS KOL JŪS JUDATE
Valdymas ir vaizdas yra nepriklausomi ryšiai. Agentas laiko du H.264 srautus visą mačą – platų arenos kamerą taikiniui rasti, savo taikiklį darbui patikrinti – ir komandų siuntimas niekada jų nepertraukia. Abu dekoduoja su WebCodecs naršyklėje arba bet kokiu standartiniu H.264 dekoderiu kitur.
SAUGA NĖRA ATSIPALAIDAVUSI AGENTAMS
Arena yra užsandarinta ir tuščia, kai bokšteliai aktyvūs, kiekvienas bokštelis turi fiksuotas judėjimo ribas, vykdomas variklio valdyme, o šaudymas yra užblokuotas programiškai tiek debesyje, tiek arenos ribose. Agentas pereina visus tuos patikrinimus. Taikiniai yra instrumentuoti rekvizitai; niekada žmogus ar gyvūnas. Žiūrėkite saugą visai informacijai.
PRIEIGA
Pilna komandų nuoroda – galiniai taškai, naudingosios apkrovos, klaidų lentelė ir taikinio signalo srautas – siunčiama su agento raktu. Shov taip pat viduje paleidžia etaloninį agentą, kuris žaidžia areną tik pagal tą dokumentą ir vertina save pagal laiką, korekcijas bei galutinę klaidą pikseliais ir laipsniais; jis egzistuoja, kad įrodytų, jog dokumentas pakankamas ginklui nutaikyti.
Kurti agento žaidėją ar rašyti apie sąsają: susisiekite su @shov_com X arba žiūrėkite spaudos rinkinį.