Paras vastaus
Voin vastata Unityn kysymykseen .
Siellä oli aiemmin kukoistava ekosysteemi selaimen sisäisissä Unity-peleissä, etenkin Facebookissa. Unity-web-soitin oli riittävän kunnollinen, jotta saat hienoa grafiikkaa ja tasaisen kuvanopeuden (edellyttäen, että teit paljon leivontaan ja optimointiin). Työskentelen kerran vakavan pelin / simulaation parissa, joka otettiin käyttöön web-soittimessa, ja ylitin tavallaan sen rajoja, joten tiesin, mistä se pystyy.
Kaikki muuttui, kun Chrome päätti tappaa NPAPI-tuki, johon verkkosoitin perustuu. Mikä on NPAPI? Täydelliset yksityiskohdat ovat täällä – NPAPI – Wikipedia . Lyhyesti sanottuna se on kuitenkin laajennuskehitysmenetelmä useimmille selaimille. NPAPI oli kuitenkin vanha, alttiina tietoturvaongelmille, ja kehotettiin käyttämään HTML5 / WebGL: ää jne., Joten Chrome päätti lopettaa sen.
Suurin ero NPAPI: n ja WebGL: n välillä on, että entinen antoi melkein rajoittamattoman pääsyn paikallisen koneen resursseihin (katso lisätietoja NPAPI-laajennuksista – Google Chrome ). Unity3D WebGL: ssä on kaksi suurta ongelmaa:
Ensimmäinen on se, että HTML5 / WebGL: lle ei ole alkuperäistä koodikokoelmaa. Unity ratkaisi tämän kokoamalla projektin optimoidun JavaScriptin muotoon. Se on suuri tiedostokoon suhteen, koska suurimman osan Unity-moottorikoodista on oltava siellä projektin toteuttamiseksi, eikä Unity ole missään nimessä kevyt. Verkkosoittimen tapauksessa suurin osa moottorikoodista on jo DLL: ssä tai laajennuksessa, joten voit vain ladata itse kohtaustiedot ja suorittaa ne. WebGL-verkkopelissä moottorikoodi on kuitenkin ladattava uudelleen johdonmukaisesti, enkä ole varma, onko siihen vielä ollut ratkaisua.
WebGL-koodi on koon pienentämiseksi pakattava. Tämä tarkoittaa kuitenkin, että koodi on purettava asiakkaan tietokoneessa sen lataamisen jälkeen , mikä tekee kokemuksesta hitaan ja hankalan.
Tappajaongelma on muisti. Toisin kuin NPAPI, kun käytät WebGL-web-soitinta, voit käyttää vain selaimen muistia, joka on suoraan sanottuna käsistäsi. Pelaajalla voi olla yli 100 välilehteä auki, joten muistia ei ole tarpeeksi pelin suorittamiseen. Tai peli voi olla liian suuri selaimen muistirajoituksia varten, jolloin se kaatuu armottomasti lataamisen aikana ilman virheilmoitusta (näin oli 2 vuotta sitten, kun yritin sitä).
Sinulla on käytännössä tyytymään vähemmän yksityiskohtaisiin malleihin, huonolaatuisempiin pelivarastoihin (ääni, tekstuurit jne.), jotta WebGL / HTML5: n avulla voidaan asentaa jotain. Franky, epäilen WebGL / HTML5: n koskaan tarjoavan laatutasoa ja kehysnopeutta, jonka vanhat NPAPI-laajennukset voisivat, joten mielestäni koko verkkopohjaisten Unity-pelien ekosysteemi on pyyhitty pois.
Huomaa, että tämä koskee pääasiassa Unity3D WebGL -soittimia – on olemassa muita pelimoottoreita, jotka pystyvät suorittamaan pelejä WebGL: ssä, vaikka ne ovat yleensä JavaScript-pohjaisia ja optimoituja verkkoon. Unity3D on valtava moottori, ja verkko ei ole enää ensimmäisen luokan kansalainen käyttöönottoalustana.
En kuitenkaan ole käynyt kahden viime vuoden aikana Unity-kohtauksessa, joten toivottavasti joku on ristiriidassa minun kanssa.
Vastaus
Täällä on piilossa sisältöongelma sekä sosiaalinen suunnitteluongelma, mutta olen puhumme teknisistä kysymyksistä. Voit kirjoittaa pari kirjaa kahdesta ensimmäisestä.
TL; DR on, että et voi todella saada samaa AAA-suorituskykyä verkkoalusta, jota voit odottaa natiiviohjelmilta. Joitakin kiertotapoja on, mutta niiden toteuttaminen on kehittäjien kannalta kalliimpaa.
1.) Suoritusajan kokoaminen ja resurssien käsittely
Toisin kuin pelintuotannon tavanomainen menetelmä, verkkopelin on tällä hetkellä koottava koodinsa ja käytettävä siihen liittyviä resursseja reaaliajassa. Historiallisesti pelissä olisi ennalta koottuja resursseja ja koodeja, jotka ladattaisiin ja ajettaisiin kysynnän mukaan. Pelin esikoostamisen avulla voit optimoida pelisi toimimaan paremmin eri tilanteissa. Osa tästä mukautuksesta tapahtuu asennuksen aikana (IE, PC / MAC / konsoli-erot) ja osa tästä tapahtuu, kun asetat pelivaihtoehtoja.
Koska tämä optimointi tapahtuu ennen ajoaikaa, voit ladata pelin nopeammin (tiedät jo, mitä sinun on tehtävä). Suoritusajan kokoaminen tarkoittaa kuitenkin, että sinun on selvitettävä tämä kaikki ajoaikana etukäteen. Tämä pidentää yleensä muun muassa latausaikoja. Teoriassa on mahdollista tallentaa välimuistiin ladatut tiedot, mutta selain (tai onneton käyttäjä) voi ohittaa tekemäsi asiat helposti. Katso # 3.
2.) Palvelimen ylläpito
Web-selaimella voit tallentaa tiedostoja ja resursseja etänä, mutta tämä on peliyrityksille ylläpito-ongelma – se vie aikaa ja rahaa palvelinpalvelujen ylläpitoon. Tätä ongelmaa voidaan vähentää huomattavasti asentamalla peli kerran paikalliselle koneelle ja toimittamalla korjaustiedostoja säännöllisesti jatkuvien suoratoistopäivitysten sijaan. Kaistanleveys = $$$, puhumattakaan tietotekniikan ammattilaisista, jotka edellyttävät palvelimien käyttöä maksimin käyttöajalla.
3.) Selaimen yleiskustannukset / rajoitukset
Minkä tahansa suorittaminen verkkoselaimessa tarkoittaa, että joudut työskentelemään paitsi käyttöjärjestelmän kanssa järjestelmän vaatimuksena, myös selaimen käyttämän ylimääräisen muistin ja käsittelyajan kanssa. Esimerkiksi Chrome käyttää tällä hetkellä ~ 148 Mt vain antamaan minun vastata tähän kysymykseen! Tämä ei todennäköisesti ole huono PC- tai Mac-tietokoneille, mutta se on tappaja taulutietokoneille.
Lisäksi useimmissa selaimissa on suojausominaisuuksia, jotka rajoittavat sitä, miten selain voi olla vuorovaikutuksessa käyttöjärjestelmän ja laitteiston kanssa. Tämä tarkoittaa, että tietyntyyppiset suoritustoiminnot, joita normaalisti voisit tehdä valmiiksi kootulla pelillä, eivät yksinkertaisesti ole mahdollisia selaimessa (usein suora pääsy muistiin).