„Firefox“ ir „Chrome“ virsta žaidimų platformomis

Komentarai Prisijungti

Viršuje:   Seniausi | Naujausi

rwc 2011-11-29 15:00
Tik laiko klausimas, kada WebGL programos veiks taip pat sparčiai kaip ir kompiliuotos OpenGL/Direct3D. Daugiausia pajėgumų suryja visokie shaderiai ir tekstūros, kurios WebGL'e aprašomos C kalbos poaibiu ir kompiliuojamos tiesiai į GPU kodą. Javascriptas lieka tik žaidimo logikai ir primityvų sukonstravimui. Privalumas tas, kad vienas kodas veikia nepriklausomai nuo OS, 3D draiverių ir GPU - tas pats žaidimas eis ir Linuxe, ir Windowsuose, ir Androide. Kol kas WebGL/Chronos/Canvas/SVG+SMIL tėra neišbaigtos technologijos, tad ir tobulybės teks palaukti. Bet IE artinasi sunkūs laikai, nes Mozilla, Google ir Opera nubėgusios toli į priekį. Flash/Silverlight, beje, irgi: HTML5 platforma tampa vis patrauklesnė.
KeeperMustDie 2011-11-29 16:09
Nuo kada 3d grafika veikia nepriklausomai nuo draiveriu ir GPU? WebGL yra paremta OpenGL - tai tas pats kas rasyti zaidima ant OpenGL - nei daugiau, nei maziau. Jau dabar galima sakyti - OpenGL leidzia kurti tarp platforminius zaidimus - narsykles tam visai nereikia.
Vytax 2011-11-29 19:32
OpenGL kaip ir DirectX sprendžia tik vieną problemą, sukuria bendrą API visiems GPU. T.y. tam kad nereikėtų rašyti atskirų žaidimo versijų Nvidia, ATi ir Intel vaizdo kortoms. Bet dar yra ir kiti faktoriai kaip CPU architektūra ir OS, kurių suderinamo OpenGL nesprendžia. Sutik, kad kaskart ruošti pvz. aštuonis binarinius failus (skirtus Windows ,Linux, Mac OS, iOS, Android, PS3, XboX, Wii) naujai žaidimo versijai yra nesąmonė. O štai HTML5 su WebGL veiks visur kur tik bus tam pritaikyta naršyklė. Nesvarbu kokia OS ar CPU bebūtų.
KeeperMustDie 2011-11-29 19:50
As tik patikslinu - cia kalbam apie labai dideliu zaidimu kurima(auskciau rasiau, kad tokie projektai kaip quake live turetu buti labai tinkami WebGL), todel kompiliuoti 8 platformoms yra blogai, bet juk iOS ir Android nesiskaito(del to, kad jie tiesiog nepritaikyti AAA zaidimams, nekalbant jau apie galia), o PS3, XboX ir Wii atveju WebGL tuo labiau nieko neissprendzia(cia tiesa yra dar viena is pagrindiniu problemu - konsoles). Ant linuxu niekas kurti tiesiog nenori(yra nemazai zaidimu skirtu Mac ir Windows, bet ju kurejei dazniausiai nepakelia pirsto portinti Mac versijos linux'ams). O del OS suderinanamumo - tai kiek as zinau OpenGL ji sprendzia(pataisyk jei klystu) - juk funkcijos tos pacios kaip ir po win, lango sukurimas biski skiriasi, galbut yra kazkokie specifiniai reikalvimai ir aisku reikia kompiliuoti atskiras versijas, bet is esmes - cia ir visi skirtumai tarp OpenGL ant Windows ir Linux. Tiesiog kurejei daznai renkasi DirectX ir baigtas kriukis, pagal mane cia tik drambliuko svajones, kad kadanors AAA lygio zaidimai butu kuriami narsyklems.
rwc 2011-11-30 13:13
GPU sprendžia problemas, kurios šiaip surytų 99% CPU resursų - matomumas, šešėliai, atspindžiai, kreivių glotninimas, tekstūros, subpikseliai... Nėra didelio skirtumo, per kokį API tuos objektus sukiši į GPU. Scenos valdymas ir objektų perstumdymas nuo senų laikų programuojamas skriptais - REXX, Lua ir panašiomis kalbomis, kurių interpretatoriai nė iš tolo našumu ir galimybėmis negali lygintis su JägerMonkey, Tamarin, jau nekalbant apie MSIL ar JRE, kurių našumas gali smarkiai lenkti prekompiliuotą C++ kodą priklausomai nuo uždavinio ir algoritmo. Jei rašysi žaidimą su Canvas API arba SVG - tai tas pats kaip su BGI ar VESA. Turi geriausiu atveju interaktyvius 2D primityvus plokštumoje, kuriuos gali pritaikyti arkadai, stalo žaidimams, bet realistinio 3D taip paprastai nepadarysi, ir visas 3D transformacijas tektų rašyti su Javascript. Ar .NET'e yra 3D API palaikymas - tiesą sakant, nežinau. Apskritai, nematau prasmės 3D variklio rašyti su C#, jei jis veiktų tik po Windowsais ir Direct3D, ir tas 3D kodas CSIL atžvilgiu būtų unmanaged. Tuo tarpu, ką duoda bibliotekos kaip Khronos/WebGL arba Java3D - tai kad leidžia programuoti žemo lygio OpenGL/Direct3D iš managed kodo. Tai yra tik plonas abstrakcijos sluoksnelis, kompiliuojantis 3D komandas, "programas", shaderių algoritmus. Kaip minėjau, WebGL atveju jie aprašomi net ne Javascriptu, o visai kitu C kalbos poaibiu, kuris kompiliuojamas ir vykdomas visai kitaip nei "paprastas" JS. Ir tai daroma ne kiekviename kadre, o užkraunant atitinkamą shaderį ar pan., todėl teoriškai tai turėtų veikti taip pat optimaliai, kaip ir įprastuose kompiliuotuose varikliuose (aišku, niekas netrukdo shaderių programas generuoti dinamiškai iš JS atskirai kiekvienam kadrui, bet nelabai įsivaizduoju tam būtinybės). Taigi, kritika apie JS arba CSIL lėtumą čia kaip ir netinka. Dėl Direct3D vs. OpenGL vs. thin layer - tai daugiausia skonio reikalas. Savaime suprantama, kad pagal egzotiškas galimybes D3D visuomet bus pusmečiu priekyje, nes API diktuoja Microsoft, o plokščių gamintojai stengiasi jam įtikti dar plokščių projektavimo stadijoje. OGL/WebGL yra atviri standartai, kuriuose dėl kiekvieno API pakeitimo turi susitarti daugybė rinkos žaidėjų nuo plokščių/GPU gamintojų iki OS, žaidimų, bibliotekų, grafikos programų autorių, ir dar prisideda naršyklės bei Web standartų organizacijos. Kai tėra viena platforma, gali vartotojui pasakyti "parsisiųsk DirectX 11 iš [čia]". Dėl konsolių ir kišeninių aparatų - tai nesutinku, kad juose nėra rinkos. 3D spartinimą palaiko bene visi šiuolaikiniai telefonai su J2ME, ir jiems yra pridaryta visokių lenktynių žaidimukų, Androidams - Google Earth, vartotojo sąsajų su kompozicijom, tekstūrom bei 3D langų vartymais ir panašių. Tame ir yra 3D aparatūros gerumas - kad ji nupiešia tiek efektų, kiek spėja, neapkraudama CPU. Gal nespės užmauti tekstūros, paskaičiuoti atspindžio ar suglotninti kreivės - bet vis tiek matysi kampuotus 3D objektus. N.B. QuakeLive nenaudoja WebGL, todėl jo sparta nėra rodiklis. Čia reiktų prisiminti dar vieną technologiją - Google nativeclient Plugin'ą, kuris naršyklės "sandboxe" vykdo kompiliuotas C/C++/whatever programas ( http://code.google.com/intl/fr-CH/chrome/nativeclient/ , http://www.gonacl.com/ , https://chrome.google.com/webstore/deta ... lfndbjhjcn ). Teoriškai, Quake sukompiliuotas jam, turėtų veikti naršyklėje tokia pat sparta, kaip ir sukompiliuotas konkrečiai architektūrai.
KeeperMustDie 2011-11-30 14:47
Situo projektu domejausi anksciau, bet kazkaip jis ne per smarkiai stumiamas.
rwc 2011-12-01 11:51
palaikomoms platformoms. Išnaudoti tą patį know-how visur, pradedant FPS ir baigiant reklamos banneriais.
KeeperMustDie 2011-12-01 13:56
Nieko? WebGL stebuklingai neispres problemu kurias turi OpenGL.
rwc 2011-12-01 14:41
išspręsti. Aukšto lygio frameworkai tam ir rašomi, kad išspręstų tokias problemas kaip žemesnio lygio nesuderinamumai. Ilgainiui jie patys tampa standartais. Nenustebsiu, jei kitąmet NVidia pademonstruos low-end plokštę, tiesiogiai palaikančią WebGL.