scelta tecnologia sul motore grafico

Il Domandatore

Nuovo Utente
77
6
Ciao a tutti, in questi giorni ho scambiato alcune frasi con un volontario che sviluppa un visualizzatore grafico di un browser game. La scelta mi ha lasciato perplesso; WebGL. Non mi sembra il massimo della compatibilità per i browser e c'è gente che si lamenta anche per la sua pesantezza.

Io essendo su un vecchio Mac, non posso vedere come funziona.

Ho proposto all'utente di usare i CSS sprite e lui più volte ha detto di no e mi ha detto che non ha voglia di fare delle cose apposite per altri. Quindi, al momento bisogna prendere quello che ci dà, però sto facendo un pensiero per il futuro;

quale motore usare per leggerezza, compatibilità e da poter usare con il browser?

Lui mi ha mandato un link sulla comparazione tra WebGL e Canvas, ma non so se era quello che avevo in mente io. So che con delle immagini "unite", si possono creare delle animazioni sui browser e con html5 è possibile fare compatibile su quasi tutti i browser.
 

pabloski

Utente Èlite
2,868
916
Cioè tu hai comunque il vincolo del browser. E allora l'amico che hai contattato ha ragione. WebGL è l'unica scelta possibile. A parte usare plugin appositi come si faceva ai tempi di Flash, non c'è un altro modo.

La Canvas non è un'alternativa a WebGL, in quanto non implementa nessuna delle funzionalità per la grafica 3D e soprattutto non sono accelerate via GPU.

CSS sprite. Si ok, metti tante belle immagini in un unico sprite. E poi? Come le tiri fuori? Come le disegni? Come le sposti/manipoli? E stiamo comunque parlando di sola grafica 2D. Col 3D non c'entra manco per sbaglio. Al massimo li puoi usare in quei giochi 2.5D, cioè quelli prerenderizzati che danno l'idea della prospettiva, ma che in realtà sono, in tutto e per tutto, grafica 2D.

Sul perchè è bene evitare CSS per questo genere di cose, vale lo stesso discorso che si può fare quando si cerca di usare HTML e il DOM per creare un'UI sofisticata. Cioè, scaricati Atom e Visual Studio Code. Mettili a confronto. Il primo usa il DOM, il secondo la Canvas. Noti la differenza? Abissale!

Lo stesso discorso vale nel caso si voglia usare CSS per gestire la grafica. Non è pensato per elaborare tantissimi elementi dinamici. Canvas è la soluzione ottimale. WebGL nel caso 3D.
 

Il Domandatore

Nuovo Utente
77
6
Quindi, ho parzialmente ragione io. Infatti quello che dici sui css sprite era quello che immaginavo io; va bene per la grafica in 2D. Ad esempio, un travian, va bene con i css sprite.

Il gioco ha due visualizzatore grafico 2D e 3D. Per il 2D si potrebbe pensare di evitare di usare il web assembly.

Ho notato un grave probema di compatibilità con il WebGL. Essendo un browser gae, dovremo aver più compatibilità rispetto ad un software e questa mancanza stona. Sopratutto perchè il gioco non punta esattamente sulla grafica, ma solo per vedere una gara in 3D...
 

pabloski

Utente Èlite
2,868
916
Quindi, ho parzialmente ragione io. Infatti quello che dici sui css sprite era quello che immaginavo io; va bene per la grafica in 2D. Ad esempio, un travian, va bene con i css sprite.

E' decisamente meglio usare Canvas e altri metodi ( più diretti ) per lo storage degli sprite, però.

Il gioco ha due visualizzatore grafico 2D e 3D. Per il 2D si potrebbe pensare di evitare di usare il web assembly.

No fermo. Webassembly è ancora un'altra cosa. E non c'entra con l'API usata per renderizzare la grafica. Webassembly è preferibile rispetto a Javascript, per le maggiori performance in praticamente tutti i casi.

WebGL non ha niente a che vedere con Webassembly. Hanno solo quel prefisso Web in comune.

Ho notato un grave probema di compatibilità con il WebGL. Essendo un browser gae, dovremo aver più compatibilità rispetto ad un software e questa mancanza stona. Sopratutto perchè il gioco non punta esattamente sulla grafica, ma solo per vedere una gara in 3D...

I browser implementano WebGL in vari modi e con vari gradi di compatibilità e completezza, oltre che performance. Stiamo parlando di una tecnologia nuovissima, praticamente quasi ancora un prototipo.

Se si vuole usare WebGL proficuamente, la scelta del browser ricade necessariamente su Chrome. Che è l'unico a supportare le ultimissime aggiunte all'API.

E comunque capisco il tizio che hai contattato. Essendo il gioco sia 2D che 3D, preferisce usare WebGL per entrambe le modalità, piuttosto che fare doppio lavoro. Che poi significherebbe anche creare script più grandi e più pesanti.
 
Ultima modifica:

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!