Come imparare Three.js per lo sviluppo del gioco

Three.js è una libreria / API JavaScript open source utilizzata per creare e visualizzare animazioni grafiche 3D animate su un browser Web, compatibile con l'elemento canvas HTML5, WebGL e SVG. In questo articolo How to Learn, esploreremo le funzionalità di questo motore e condivideremo risorse e suggerimenti per aiutarti a iniziare a sviluppare giochi con esso fin da subito. 


Perché utilizzare Three.js?

Dal momento che Three.js è stato distribuito per la prima volta da Ricardo Cabello a GitHub nel 2010, la base di codici è stata continuamente mantenuta e migliorata da una comunità in crescita e solidale. Il set di funzionalità integrate è ampio e include:

  • renderizzatori (Canvas, WebGL e SVG)
  • scene (può essere modificato in fase di esecuzione, importato ed esportato)
  • telecamere (prospettiche e ortografiche)
  • luci (punto, spot, direzionale e ambient; oggetti possono trasmettere / ricevere ombre)
  • trame e materiali (Lambert, Phong, ecc., incluso il supporto per mappe di rilievo e mappe speculari)
  • geometrie (comprese linee, piani, cubi, sfere, poliedri, cilindri, sistemi di particelle e testo 3D)
  • utilità per esportare file JSON compatibili con Three.js da software di modellazione 3D (come Blender, 3ds Max o Maya) e importare file (come Wavefront (.obj) o Collada (.dae)) direttamente in una scena
  • shader (fornendo accesso completo a OpenGL Shading Language per un controllo più diretto della pipeline grafica)
  • una libreria di shader post-elaborazione (tra cui fioritura, sfocatura, rilevamento dei bordi, Fresnel, seppia e vignettatura)
  • una libreria di effetti stereoscopici (Anaglifo, Parallax / Cross-eyed e Oculus Rift)

Oltre 100 esempi che illustrano queste caratteristiche (e altro) sono inclusi nel repository principale, e molti altri siti forniscono raccolte di esempi con il codice sorgente disponibile. Inoltre, dal momento che la libreria è scritta in Javascript, è facile da installare e utilizzare, oltre a distribuire il tuo lavoro.


Giochi e visualizzazioni notevoli

HexGL

Un gioco di corse futuristico creato da Thibaut Despoulain:


Trigger Rally

Un gioco di corse automobilistiche creato da Jasmine Kent:


Gli articoli di sviluppo correlati sono disponibili sul blog Gamasutra di Jasmine.

ChuClone

Un platform 2.5D renderizzato in 3D, con un editor di live level incorporato, creato da Mario Gonzalez:


Tavolo in marmo

Un gioco di marmo / calcio creato da Jerome Etienne:

fuori strada

Un gioco di labirinti creato da Rye Terrell:

CubeSlam

Un gioco di ping-pong 3D che incorpora la chat video all'interno del gioco, creata da Google:


Maggiori informazioni possono essere trovate nella pagina degli Esperimenti di Chrome del gioco e in questo articolo del dietro le quinte.

Trova la tua strada per OZ

Un viaggio interattivo creato da Walt Disney e UNIT9


Ulteriori informazioni sono disponibili nella pagina Esperimenti di Chrome del gioco.


Iniziare

Poiché Three.js è una libreria Javascript, la configurazione del tuo ambiente di sviluppo è particolarmente semplice: gli unici requisiti sono un editor di testo e un browser web. Detto questo, gli editor di testo con funzionalità quali l'evidenziazione / piegatura della sintassi, la corrispondenza delle parentesi, una mappa dei documenti e così via, come Notepad ++ o Sublime Text, forniranno un'esperienza di codifica migliore.

Per quanto riguarda i browser Web, sia Google Chrome sia Mozilla Firefox hanno un eccellente supporto WebGL. Google Chrome dispone di una serie particolarmente utile di strumenti di sviluppo incorporati che possono semplificare notevolmente il processo del flusso di lavoro, come una console che può essere utilizzata per il debug e l'ispezione di valori e oggetti JavaScript e le impostazioni dell'area di lavoro che consentono di modificare e salvare i file di origine dal browser. Maggiori dettagli sono disponibili sul sito Chrome DevTools.

Mancia: È anche possibile scrivere codice usando Three.js interamente online, usando servizi come jsFiddle, come dimostrato da questo esempio. Tuttavia, questa opzione viene in genere utilizzata solo per la condivisione di esempi o dimostrazioni con piccole quantità di codice.

Per configurare Three.js, prima vai al repository GitHub. Ci sarà un pulsante che dice "Download ZIP" che ti permetterà di scaricare tutto il codice nel repository come file ZIP. (Esistono altre alternative, come la clonazione o la forking del repository usando Git, che non sono necessarie per l'utente medio: queste opzioni sono principalmente utili solo se si intende contribuire al codice sorgente o alla documentazione online.)

Post correlati
  • Git e GitHub per Game Developers

Una volta scaricato e decompresso il file in una directory di tua scelta, rimane un altro passaggio importante prima di poter visualizzare la maggior parte degli esempi sul tuo computer. Molti progetti Three.js riguardano il caricamento di contenuti da file esterni (come le immagini), ma, per ragioni di sicurezza, i browser Web limitano questo comportamento per impostazione predefinita. Le due opzioni per risolvere questo problema sono modificare le impostazioni di sicurezza nel browser Web o eseguire file da un server locale.

La prima opzione è la più semplice (ad esempio, è possibile modificare le impostazioni di Google Chrome in Windows creando una scorciatoia per Chrome e modificando il percorso per includere la bandiera --permettere-file-access-from-file). Le istruzioni per entrambe le opzioni sono disponibili nella wiki ufficiale, nella pagina intitolata Come eseguire le cose localmente.

JavaScript

Three.js è scritto in Javascript, quindi è consigliabile avere una conoscenza pratica di questa lingua. C'è una miriade di risorse liberamente disponibili su Internet per questo; due risorse interattive particolarmente rilevanti sono:

  • Codecademy, che contiene un gran numero di lezioni interattive con feedback reattivo e intelligente, nonché un glossario di facile utilizzo
  • Eloquent Javascript, un libro di testo digitale gratuito scritto da Marijn Haverbeke, che include un ambiente di codifica interattivo che esegue tutti gli esempi inclusi e consente al lettore di modificare e sperimentare con il codice di esempio

Three.js

Per sapere come impostare una scena di base in Three.js (inclusa una discussione su scene, telecamere, renderer, mesh e loop dell'animazione, visita: il manuale ufficiale Un'altra introduzione alla creazione di una scena di base è l'articolo Introduzione con Three.js di Paul Lewis

Un'indagine introduttiva più approfondita delle capacità di Three.js è l'eccellente presentazione di James Williams (un video e una presentazione) su Introduzione a WebGL e Three.js.


Prossimi passi

La documentazione di Three.js, disponibile su http://threejs.org/docs/, è un work in progress ma è un buon primo posto per avere un'idea per molte delle funzioni disponibili.

Un modo più completo per conoscere il funzionamento interno della biblioteca è quello di sfogliare il codice sorgente della raccolta ufficiale di esempi su http://threejs.org/examples/, che sono spesso intitolati dall'aspetto della biblioteca che hanno più caratteristica prominente. Un'altra risorsa, composta da esempi semplificati e dettagliati scritti per principianti, è la raccolta su http://stemkoski.github.io/Three.js/. Inoltre, molti progetti Three.js sono annunciati su Twitter con l'hashtag #ThreeJS o il subreddit Three.js.

Due collezioni particolarmente impressionanti e di grande ispirazione di progetti avanzati di Three.js sono:

  • AlteredQualia, creato da Branislav Ulicny (@alteredq, uno dei maggiori contributori alla libreria Three.js)
  • JavaScript + WebGL, creato da Klas Kroon (aka OutsideOfSociety, @oosmoxiecode)

Alcuni siti Web e blog che trattano lo sviluppo e spesso includono i progetti Three.js includono:

  • Learning WebGL, originariamente creato da Giles Thomas; l'attuale redattore capo è Tony Parisi
  • Learning Three.js, scritto da Jerome Etienne
  • I post Three.js di japh (r), scritti da Chris Strom

Per saperne di più sulle basi della grafica 3D, dai un'occhiata a Interactive 3D Graphics, un corso online gratuito insegnato da Eric Haines che prevede lezioni video e esercizi di programmazione interattiva usando Three.js.

Se è necessario incorporare funzionalità oltre a quelle fornite da Three.js, è facile (e pratica comune) incorporare librerie Javascript aggiuntive, come ad esempio:

  • Tween.js: una libreria per l'interpolazione automatica dei valori, utile per animazioni fluide
  • Physi.js: un motore fisico progettato per l'uso con Three.js
  • dat.GUI: un'interfaccia utente grafica leggera per la modifica delle variabili
  • Gamepad.js: una libreria che semplifica l'elaborazione degli input da gamepad e joystick

Se si desidera creare effetti grafici avanzati oltre a quelli inclusi in Three.js, è necessario imparare a scrivere shader, che sono funzioni eseguite direttamente sulla GPU. Due eccellenti introduzioni agli shader, scritte appositamente per gli utenti di Three.js, sono:

  • Introduzione a Pixel Shaders in Three.js, scritto da Felix Turner
  • Un'introduzione agli shaders, scritta da Paul Lewis

Infine, se sei interessato a implementare il tuo progetto per Android o iOS, CocoonJS di Ludei è una piattaforma che fa esattamente questo. Il processo è ben documentato e relativamente facile, poiché la maggior parte del lavoro è automatizzata dal sistema di compilazione cloud CocoonJS.


Dove andare per aiuto

Se hai una domanda che non riesci a capire guardando gli esempi o le risorse di cui sopra, il posto dove cercare aiuto è Stack Overflow, il sito di domande e risposte di prima qualità per programmatori professionisti ed entusiasti. Per prima cosa, cerca se la tua domanda è già stata posta; in caso contrario, registrati per un account e chiedilo lì!


Conclusione

Con queste risorse a tua disposizione, è ora di iniziare a creare! Three.js ha una comunità attiva e vivace, quindi dovresti sempre sentirti libero di fare domande, partecipare alle discussioni e mostrare il tuo lavoro. La migliore fortuna per te nei tuoi sforzi!