mercoledì 7 gennaio 2015

HighFidelity


E alla fine il sogno è diventato realtà. Da anni desideravo che qualcuno realizzasse quanto ho potuto leggere in libri come Snow Crash e Ready Player One, in film come il Tredicesimo piano ed il Tagliaerbe ed ecco che Philip Rosendale crea e sviluppa HighFidelity.

Ma vediamo nel dettaglio come funziona la piattaforma di HighFidelity. Possiamo definirla a tutti gli effetti come una Shared Virtual Reality Application ovvero una piattaforma in grado di condividere "oggetti" ma anche "agenti" intesi come Avatar via Internet. Il sistema di comunicazione è prevalentemente peer to peer, ma esiste anche una comunicazione client - server soprattutto per l'autenticazione dei diversi "agent" sulla piattaforma e la condivisione/commercializzazione di oggetti di ogni tipo.
Il diagramma di seguito illustra nel dettaglio l'architettura presente e futura della piattaforma:


L'intera sistema può essere programmato, tramite apposite API, con un sistema di scripiting interno basato su Javascript. La scelta di Javascript è stata riconosciuta da molti sviluppatori come molto indicata, vista l'enorme diffusione del linguaggio ed il riutilizzo di molte librerie e codice già scritte e pronte all'uso. Anche AltVR ad esempio ha annunciato questa scelta segno che si è imparato dalle precedenti esperienze, prima fra tutte quelle di Second Life in cui è stato sviluppato un'apposito linguaggio definito LSL. Questo è stato letto da molti come un errore di molti sviluppatori che tendono "a reinventare la ruota" non basandosi ed avvantaggiandosi di linguaggi di programmazione già molto utilizzati e rodati.

Il client, scritto in C++, è fortemente basato sulle librerie grafiche OpenGL e non a caso usa la libreria GLUT e per l'esattezza la sua versione opensource freeglut. L'interfaccia grafica è basata sulle ottime e note librerie QT che permettono lo sviluppo di applicazioni cross-platform (quindi per Windows, Mac OSX e Linux). La scelta delle OpenGL, delle QT, oltre al sistema di creazione/compilazione CMAKE è pensato per essere profondamente multi-piattaforma nell'intero ciclo di sviluppo.

Per la parte di grafica 3D non è stato utilizzato alcun motore grafico predefinito, ma, da quello che ho potuto capire, si è deciso di programmare direttamente a basso livello usando le OpenGL. Il motivo di questa preferenza è dovuto alla volontà di avere un occhio di riguardo alle performance. Stiamo infatti parlando di sistema VR che deve quindi garantire un numero di Frame per secondo molto alto (i documenti di OculusVR parlano da almeno 60 FPS per un buona fruizione in ambito VR). Non a caso il sistema implementa un gigantesco motore Voxel condiviso. Un suggerimento, questo, nato nel 2011 da John Carmack che, in una famosa intervista, ha parlato di questo tipologia di motori grafici 3D come gl'unici in grado di garantire tutte le performance per un sistema massivo condiviso. L'esperienza di Philip Rosendal in questo ambito è nota a tutti, Second Life si basava sul concetto di Prim non molto dissimile da quello implementato nei motori voxel. Le potenzialità sono enormi e gli sviluppatori hanno davanti a loro l'esempio ben conosciuto di un sistema Voxel come Minecraft. Ritornano mente le parole di Iribe quando parlava di una piattaforma che dovesse reggere non milioni di utenti, ma miliardi. E' necessario quindi fare delle scelte architetturali particolari proprio per soddisfare i requisiti di velocità e condivisione massiva delle informazioni.

Per il sistema di chat interno ci si è avvalso del protocollo XMPP basato sulla libreria QXMPP (XMPP conosciuta anche come Jabber è stata alla base del sistema di chat di Google e Facebook).

Il client porta con se poi tutte le librerie per l'interfacciamento con OculusVR, sistemi di input come Leap Motion e Razer Hydra. E' veramente sbalorditivo osservare due avatar giocare in tempo reale in VR a Morra Cinese (siamo ben oltre Second Life signori ;-):



Ulteriore punto di forza del progetto é il rilascio sotto licenza Open Source di buona parte dell'intera piattaforma. L'intero codice sorgente è visitabile (e compilabile) al seguente indirizzo:
https://github.com/highfidelity/hifi

HighFidelity si candida quindi a tutti gli effetti ad essere il vero Metaverse da lungo atteso. Sarà fondamentale aver quanto prima una descrizione dettagliata del protocollo di comunicazione usato così da poter sviluppare librerie in altri linguaggi per accedere a High Fidelity. La "chicca" finale riguarda la moneta virtuale che il sistema utilizzerà. La scelta non è stata ancora fatta, ma si vocifera a gran voce che potrebbe essere il tanto discusso ed amato Bitcoin

Il canale YouTube di HighFidelity:

Nessun commento:

Posta un commento