'To je jednostavno nemoguće': Devs objašnjavaju zašto se velike online igre uvijek pokvare pri lansiranju





Između fragmentiranog lansiranja od Himna , iznenađujuće lansiranje Apex Legends , i nadolazeće lansiranje Divizija 2 , početak 2019. prepun je velikih online igrica. Kao što je pokazalo najnovije BioWareove i nebrojene igre prije njega, igre za više igrača ovog opsega rijetko se pokreću u briljantnom stanju. Čini se da svaka online igra ima neki tehnički problemi pri pokretanju, bilo da su manji, kao što su bugovi u prvom tjednu u Apex Legends, ili razbijači igre, poput problema s vezom koji su u početku bili osakaćeni Đavo 3 .

Imali smo problema s lansiranjem otkad imamo online igre, ali čini se da razgovor oko problema s lansiranjem zapravo nije otišao nikamo. Svaki put vidimo da se pojavljuju ista pitanja. Zašto se to dogodilo? Zašto programeri to nisu predvidjeli? Zašto je trebalo toliko vremena da se popravi? S toliko velikih online igara koje su objavljene tako blizu jedna uz drugu, s usponom Igre kao usluge u industriji, sada se činilo kao dobar trenutak da se neka od ovih pitanja uputi razvojnim programerima u nadi da će demistificirati zastrašujuće zastoje na dan lansiranja. Zašto se stalno susrećemo s istim problemima prilikom pokretanja igara i kako ih programeri rješavaju?

'Kapacitet je vrlo rijetko problem'



Kad god se igre pokvare ili se sporo povezuju, mnogi pretpostavljaju da je to zato što im je ponestalo prostora na poslužitelju. Da su programeri podcijenili koliko igrača će se prijaviti i, kao rezultat toga, njihovi poslužitelji su pokleknuli pod opterećenjem. U tom slučaju, sve što trebaju učiniti je platiti više poslužitelja, zar ne? Pa, ne, ne nužno; kao što je često slučaj kod izrade igrica, nije tako jednostavno.

'Jedan od načina razmišljanja koji često viđate online je: 'Zašto tvrtka A nema više poslužitelja?', kaže nam Alex Mann, voditelj razvoja i bivši QA analitičar u EA. 'Pri lansiranju vidite najveću količinu prometa na ovim igrama. Svi su uzbuđeni, marketinški tim je dobro odradio svoj posao, svi su stvarno uzbuđeni što će postati online, a u trenutku kada se igra pojavi, svi kliknu 'Idi'. Ali primijetit ćete s životnim ciklusom većine igara da imate ovaj masivni prasak i onda on nestane. Kad bi svaka tvrtka za igre kupila hardver da pokrije sve što im je potrebno u tom početnom nizu, dva tjedna kasnije imali bi 50% svog hardvera koji se tamo nalazio nikad korišten.'

'Ne radi se o 'Hajdemo baciti hrpu novca na to i učiniti ga većim.'



Alex Mann

To otežava programerima da se pripreme za lansiranje bez prevelike potrošnje i kupnje previše poslužitelji. Srećom, programeri sada imaju pristup virtualnim poslužiteljima putem tvrtki poput Amazon Web Services, a oni se mogu aktivirati ili deaktivirati prema potrebi. Ove vrste poslužitelja također su postale neophodne jer su se igre udaljile od peer-to-peer veza – tipa koji je podržavao igre poput Halo 2 2004. – na namjenske servere koji podržavaju masivne, trajne igre poput Sudbina 2 i himna. Međutim, virtualni poslužitelji nisu čudesni lijek i sami imaju problema.



'Kapacitet ne ovisi nužno o broju poslužitelja', kaže Mann. 'Čak i ako očekujemo milijune igrača i imamo poslužitelje, ne očekujemo da će svi doći na portal za prijavu u isto vrijeme. Radi se o tome da na autocesti ima dovoljno traka za prolaz ljudi. Imate dvije zemlje povezane preko mosta, i obje zemlje imaju tone prostora na sebi, ali da biste prešli iz zemlje klijenta u zemlju poslužitelja, koliko velik možete napraviti taj most? Ne radi se o 'Bacimo hrpe novca na to i učinimo ga većim'. Na kraju krajeva, to je često usko grlo koje se temelji na tehnologiji i motoru koji koristite.'

Uobičajene zablude

Jedna zabluda koju Mann često vidi ima veze s načinom na koji razvojni timovi rade – točnije, ideja da svatko može popraviti sve.



'Kada imate posla sa složenim bazama koda koje obuhvaćaju više datoteka koje je izgradilo 200 ljudi, ako pogledam svoje programere i oni su napravili ovo, koder A ne zna cijeli taj projekt', objašnjava on. 'Postoji koncept da svi znaju sve o kodu igre, tako da bi umjetnik razine trebao pomoći s popravkom arhitekture razine. Znate, community manageri ne popravljaju greške.'

Čuo sam istu stvar od Fredrika Brönjemarka, direktora usluga uživo u Massive Entertainmentu, studiju iza The Divisiona. 'Velike online igre iznimno su složeni komadi softvera koji se oslanjaju na ogromnu infrastrukturu mrežnih poslužitelja koja ih podržava', objašnjava Brönjemark. 'Povrh toga, imate i dodatni sloj usluga prve strane, tako da postoji mnogo različitih načina na koje stvari mogu poći po zlu! Za nas u The Divisionu, glavne vrste incidenata koji bi mogli uzrokovati zastoje ili probleme s povezivanjem bili su nestabilnost softvera za igre koji se izvodi na poslužiteljima ili problemi s pružateljem usluga hostinga. Nedostatak kapaciteta poslužitelja vrlo je rijetko problem. Na The Division 2, naši poslužitelji automatski se mijenjaju ovisno o broju igrača koji žele igrati igru.'

Bilo koji broj stvari može poći po zlu na dan lansiranja, a češće nego ne, sam broj igrača je relativno nizak na popisu za praćenje. Moglo bi doći do curenja memorije, do jedne, ali katastrofalne linije netočnog koda, ili do mjesta kašnjenja zakopanog negdje u ogromnom poslužiteljskom kanalu. Igra može imati problema s određenim ISP-om, ili kao što je Brönjemark spomenuo, usluge prve strane na koje se igra oslanja mogle bi se pokvariti. Problem može biti bilo gdje, ali bez obzira gdje se nalazi, problem je svih. Nitko nije otok kada su u pitanju online igre, a to može učiniti odgovor na probleme nevjerojatno teškim i dugotrajnim.

'Svako lansiranje je drugačije'

Svi programeri s kojima sam razgovarao opisali su sličan proces trijaže za rješavanje problema. Mann je ponudio pregled kako bi popravak mogao izgledati od početka do kraja. Prvo, programer mora procijediti simptome problema kako bi identificirao stvarni uzrok. Zatim dovode ljude koji su odgovorni za to područje igre kako bi razradili rješenje. Je li to nešto što mogu ažurirati sa svoje strane ili trebaju izdati zakrpu? Nakon što pronađu rješenje, morat će ga testirati kako bi bili sigurni da ne pokvari ništa drugo, pogotovo ako je zakrpa.

'Postoji provjera prije nego što se nešto objavi', kaže Mann. 'Postoji puno naprijed-natrag s nositeljima platformi [kao što su Sony i Microsoft] kako bismo bili sigurni da zajedno radimo na uspjehu; moramo proći kroz QA korake. I dok prolazimo kroz tu zakrpu, ako odmah reagiramo i popravimo ovo, ali onda pola sata kasnije moramo napraviti drugi zakrpu u istom danu, bit će nered. Stoga moramo reći: 'Radimo ovu zakrpu; koje druge kritične probleme možemo riješiti kao dio ovoga? Što još nije u redu?' Ne možete napraviti flaster za pola sata. Morate biti sigurni da ste pametni s načinom na koji krpate taj sadržaj.'

Nakon što je sve to učinjeno, ako svemir dopušta, programeri mogu progurati zakrpu i početi je nadzirati i komunicirati o njegovim efektima putem svojih društvenih kanala. Ali 'nema pola sata okretanja', kaže Mann, dodajući, 'možda ima stotine ljudi koji će to dotaknuti prije nego što se ugasi.'

Frank Sanchez, bivši predstavnik zajednice BioWare i Gazillion Entertainment s inženjerskim iskustvom, dobro poznaje ovu paradigmu. Kao netko tko je proveo puno vremena u prikupljanju odgovora i izradi bilješki o zakrpi, vidio je obje strane procesa ažuriranja, od povratnih informacija igrača do slanja zakrpe. On također zna bolje od većine koliko komplicirani popravci mogu postati i koliko frustrirajući problemi s pokretanjem mogu biti podjednako za igrače i programere.

'Mi smo zadnji ljudi koji žele vidjeti kako se poslužitelj povećava, a zatim dva sata kasnije kasni tako da se ljudi ne mogu prijaviti,' objašnjava Sanchez. 'Jamčim vam ako [programeri] pokrenu poslužitelj za beta verziju i on ne radi kako treba, to je vjerojatno na repu nekoga tko je uložio vrijeme izvan onoga što su već pokušavali da ga dovede u stanje u kojem je mogao pokrenuti. Dakle, kada netko na mreži kaže 'Pa, samo su lijeni', to je potpuno i očito lažno. Posao je uložen, izazov je kako odgovoriti na probleme i komunicirati s igračima kada se dogode. To je nesavršena znanost… svako lansiranje je drugačije. Čak i ako su dvije igre razvijene na Unity-u ili bilo čemu već, čak i ako je žanr isti, proces je drugačiji. Ne možete reći 'Ova igra je bila u redu, u čemu je problem s ovom igrom', jer svaka igra ima puno jedinstvenosti.'

Ne možete reći 'Ova igra je bila dobra, u čemu je problem s ovom igrom', jer svaka igra ima puno jedinstvenosti.

Frank Sanchez

Sanchezovi komentari dotiču se još jednog uobičajenog pitanja koje se pojavljuje u vrijeme lansiranja: zašto ovo niste predvidjeli? Možda je igra X naišla na probleme prije nekoliko mjeseci. Sigurno su programeri igre Y to mogli vidjeti i poduzeti mjere da izbjegnu te iste probleme, zar ne?

Ako ostavimo na stranu razlike u pojedinim utakmicama, svi s kojima sam razgovarao rekli su da se neki problemi ne mogu predvidjeti. Interno testiranje može učiniti samo toliko, i nikada se ne može istinski usporediti sa stvarnim pokretanjem igre.

'Samo nema simulacije za live'

'Ne možete planirati uživo [istodobne igrače]', nastavlja Sanchez. »To je jednostavno nemoguće. Ne postoji zamjena. Vidio sam svaku metodu internog testiranja nečega na stres prije nego što to stavite tamo, i jednostavno nema simulacije za uživo.'

Ovdje na scenu stupaju testovi stresa prije pokretanja i beta razdoblja. Nisu savršeni, ali su najbolji način da se procijeni kako će izgledati pokretanje igre i što treba popraviti prije udarnog termina. 'Beta su od velike pomoći', kaže Mann. 'Ne možete dobiti veličinu i mjerilo koje radite s internim beta testom. Jednostavno ne možete unajmiti toliko ljudi da pogode vaše poslužitelje. Najbolji način testiranja uživo je uživo. Ako pogledate puno alfa i beta verzija, postoji koncept da nema dovoljno poslužitelja, da ima bugova i drugih problema, ali u roku od tjedan dana oni su triažirani i najnovije ili posljednje izdanje nema tih problema . To je samo zato što je doživljeno [uživo] i istraženo tijekom tih beta verzija.'

'Nedavno je jedan studio pokrenuo beta verziju za svoju igru ​​i hrpa mojih prijatelja je skočila uzbuđeno igrati, a naletjeli su na bug gdje su zaglavili u tutorialu jer se ključna stavka nije pojavila na poslužitelju, kaže Mann ja, napominjući kako teško može biti predvidjeti nedostatke u lansiranju online igre. 'Jamčim da je u svim QA testiranjima te igre ta stavka uvijek bila tu. Jedini način na koji ćete to pronaći je testiranje ovog protoka u masovnim razmjerima. Pretpostavljam da su ti dečki sada dobro svjesni toga i cijelog tog problema da se popravi za pokretanje, a sve zbog tog beta rada.'

Ne možete sve popraviti

Ako su beta verzije tako sjajne, zašto ih programeri ne drže više i zašto ih ne drže mjesecima prije pokretanja? Kao što je često slučaj u igrama, tehnologija i vrijeme ne dopuštaju programerima da rade točno ono što žele. Zbog načina na koji je većina igara napravljena, one se ne spajaju tek na kraju, zbog čega se beta verzije pojavljuju tako blizu lansiranja. I bez obzira na to što programeri nauče iz beta verzije, bez obzira na probleme koje ona može otkriti, ne mogu realno odgoditi svoju igru ​​kao odgovor na njih. Pružatelj web usluga ne želi da tim propusti datum početka svog poslužitelja isto kao što izdavač želi propustiti datum pokretanja. Zbog toga, kao što se neki problemi ne mogu predvidjeti, neki se bugovi jednostavno ne mogu popraviti na vrijeme za pokretanje.

Division 2 Beta

The Divizija 2 beta raspored je bio prilično opsežan, s privatnim i otvorenim beta verzijama, kao i ciljanijim testom na stres. Ne mogu sve igre to zamahnuti, ali one koje imaju ogromnu korist od onoga što Brönjemark naziva 'završnom probom'. Njegova prva otvorena beta verzija planirana je za 1. do 4. ožujka, dva tjedna nakon lansiranja.

'Volio bih isporuku bez grešaka', smatra Sanchez, komentar koji ćete čuti od bilo kojeg programera koji je prošao pakao i vratio se kako bi zapravo isporučio proizvod. 'Ali svaki tim će vam reći da je to vrlo teško učiniti. To je samo stvarnost. Popis stvari koje treba popraviti stalno se mijenja. Morate razumjeti da kada su u pitanju bugovi, postoje greške koje se potencijalno isporučuju, a postoje i greške otkrivene nakon pokretanja. Sve se to mora postaviti po prioritetima i planirati protiv i o tome se priča. Trijaža je. Sretnija lansiranja su ona koja imaju bugove, ali nemaju bugove sakaćenja.'

Povrh toga, izrada beta verzije može biti sama po sebi dugotrajan i radno intenzivan zadatak. Programeri ne mogu jednostavno hakirati dio svoje igre i prenijeti ga na Xbox Live ili PlayStation Network. Beta verzije se često razvijaju odvojeno od (ali u tandemu) igre, što zahtijeva više vremena i novca. Zbog toga problemi koji su odavno riješeni u glavnoj verziji igre još uvijek mogu biti prisutni u njenoj beta verziji. To smo vidjeli u Anthemovim demo verzijama i u najnovijoj beta verziji za The Division 2, na primjer.

'Često čujem ljude kako misle da su beta testovi samo marketinške kampanje, a programeri ionako od njih ne mogu ništa naučiti jer je igra u tom trenutku već gotova', kaže mi Brönjemark. »Želio bih razbiti taj mit. Čak i kada je igra već ispisana na disku i zakrpa prvog dana je već gotova, još uvijek postoji ogromna količina stvari koje možemo riješiti na strani poslužitelja, kako u smislu tehnologije, tako i u smislu igranja i balansiranja .'

S druge strane, Sanchez kaže, 'rasporedi objavljivanja i vremenski okviri razvoja igara vrlo su agresivni, ponekad previše agresivni. Kada se nešto isporučuje, koliko sredstava vam je ostalo, koliko dugo ste u razvoju. Ponekad uspjeh lansiranja doista ovisi o tome koliko ste puta morali pomaknuti svoje prekretnice, koliko ste puta odgodili lansiranje jer ste imali nešto za ispolirati. Neke igre se mogu isporučiti samo s određenom količinom laka. Ne možete reći da je potpuno i potpuno u redu nakon što postane zlatni. Postoje slučajevi u kojima će se igra isporučiti u stanju koje je spremno za lansiranje, ali možda je potrebno malo dotjerati.'

Lansiranje je više od prvog dana

I programeri i igrači žele da njihove igre rade savršeno kada ih prvi put pokrenu, ali stvarnost razvoja igara je da postoji toliko mnogo pokretnih dijelova i toliko nepomičnih ograničenja da će neki problemi proći kroz pukotine, a izgledi za to samo rastu kako igre postaju sve veće i veće. Sanchez smatra da je to razlog zašto na ovakva lansiranja trebamo gledati holistički. Izvedba igre na dan lansiranja je važna, ali nije sve.

'To nisu problemi, oni će se uvijek dogoditi', kaže Sanchez. 'To je način na koji rješavate ta pitanja. Ako ste spori ili im se ne obraćate kako treba, ili ako ste neprijateljski raspoloženi prema svojim igračima, to će ostati s njima. Ako postoji jedna stvar koju bih volio da igrači razumiju, to je da se problemi događaju bez obzira na to koliko dobro ih planirate. Trebali biste smatrati programere odgovornim za način na koji će odgovoriti. Ako imate problema tjedno nakon lansiranja, stavite ih na vatru i recite 'Hej, nemam dobro iskustvo, zato sam zabrinut da ti problemi nisu riješeni.' To su stvari o kojima želimo čuti.'

Problemi se događaju bez obzira na to koliko ih dobro planirate.

Frank Sanchez

Nijedna igra se ne pokreće savršeno. To se jednostavno ne događa. Kao što Sanchez kaže, 'sve što biste smatrali glatkim lansiranjem je samo nešto što se nikada nije popilo na razinu na kojoj je igrač shvatio da nešto nije u redu.' Iza kulisa se uvijek događa strka. Mann je to opisao kao hrpu programera skupljenih u 'ratnoj sobi' koji promatraju zid monitora za povratne informacije i potencijalne probleme. Ponekad te probleme uhvate rano, ponekad se ne pojave nekoliko sati, a ponekad se ne mogu riješiti još nekoliko sati ili čak nekoliko dana.

Poanta je da će masivne online igre uvijek imati nekih tehničkih problema pri lansiranju. Kvragu, sve moderne igre imaju problema pri lansiranju. To je samo priroda današnje tehnologije i današnje industrije. To ne znači da bi igrači trebali slijepo propuštati igre koje su izbačene zbog katastrofalnog dizajna ili drugih problema, ali to prosječno lansiranje stavlja u perspektivu. Igra može imati manje probleme koje čak i ne primjećujemo ili može imati očite probleme s igrom. U svakom slučaju, sve što svatko može učiniti je nadati se najboljem, pripremiti se za najgore i prozivati ​​probleme kada oni neizbježno isplivaju na površinu.