mercoledì 2 settembre 2015

Soltanto una serie di tubi...


https://flic.kr/p/9tYsSH
Ipotizziamo di avere un bel motore grafico 3D in grado di visualizzare oggetti, avatar e quant'altro. Per poter "condividere" la simulazione con altri client avete la necessità di comunicare alcuni dati sugli oggetti presenti a video. E da questo nascono infiniti problemi che devono essere risolti: quale protocollo usare nella comunicazione? Ma soprattutto quali dati trasmettere? Cercando idee e suggerimenti in rete ho visto che pochi esperti trattano queste tematiche a livello tecnico e divulgativo. Per fortuna di chi vuole approfondire queste tematiche, uno sviluppatore, Glenn Fiedler, ha creato alcuni articoli introduttivi sulla programmazione via internet di giochi. Scopriamo quindi subito che è necessario abbandonare come protocollo TCP ed adottare UDP. Questo scelta è dettata dal fatto che il protocollo TCP è stato creato  per una comunicazione sicura nell'invio e ricezione del dato, situazione questa che non può essere adottata nei moderni MMO che hanno tempi di reazione dell'ordine dei millisecondi. Non è possibile in nessun modo attendere la verifica dell'avvenuta consegna del pacchetto e l'eventuale reinvio, questo creerebbe dei ritardi su una comunicazione che è già piena di ritardi. Il "lag" o ritardo è infatti intrinseco al funzionamento di internet che non può essere considerato come una "serie di tubi", ma come una rete di reti dove milioni di router, switch e computer dialogando ricevendo e ritrasmettendo pacchetti. Non dobbiamo poi dimenticare il limite fisico di propagazione della luce che comunque su lunghi tragitti inizia ad essere sensibile (se si parla di millisecondi). Ecco allora la strategia vincente:  trasferire piccole quantità di dati (quanto più possibile compresse ed in formato binario), su protocollo UDP (che è anche più snello del TCP), riscrivendo un semplice sistema per il sequenziamento dei diversi pacchetti e la conferma della ricezione. Nei tutorial e negli esempi tutto questo viene spiegato nel dettaglio, ma soprattutto vengono mostrate alcune strategie di "lag compensatio" ovvero compensazione del ritardo e di "prediction" ovvero di predizione ad esempio della posizione degli oggetti. Queste ultimi concetti sono molto utili soprattutto negli FPS in cui è essenziale una corretta gestione degli obiettivi colpiti e della posizione degli avversari. Non sono riuscito a capire se questi algoritmi siano utili nei Metaverse alla SecondLife e se ad esempio siano stati utilizzati proprio in SL per minimizzare l'onnipresente lag delle sim.

Sito principale: http://gafferongames.com/networking-for-game-programmers/
Codice di esempio: https://code.google.com/archive/p/netgame/

Studiare tutto questo non è certo uno scherzo, ma per fortuna esistono delle librerie che hanno già implementato queste logiche (o parte di esse). Soprattutto ENET sembra essere la soluzione ideale per l'ottima documentazione e per i numerosi esempi in rete. Riporto qui di seguito una breve lista di librerie:


Un bello studio che dimostra i problemi nell'utilizzo del TCP nei giochi:
Con questo secondo post credo ci sia tutto il materiale necessario per la creazione di una semplice demo. Uno spazio tridimensionale in cui inserire oggetti e magari spostarli, ruotarli e scalarli. Possiamo dire che ci potremmo trovare dinanzi ad un microscopico abbozzo di "Metaverse". Parlo di abbozzo perchè mancano ancora tantissime possibilità che che non sono state nemmeno indagate. Manca infatti l'utilizzo di un motore fisico, i sistemi per la gestione delle collisioni, l'uso di mesh animate e tantissimo altro. Questo a dimostrare l'estrema complessità di questi software che richiedono anni ed anni di pratica oltre a conoscenze che spaziano dalla matematica alla programmazione avanzata cross-platform.  Per non parlare poi della VR che aggiunge ulteriore complessità al sistema. Se infatti, secondo i consigli di Oculus, i motori grafici per avere un'ottima visualizzazione in VR devono girare a ben 75 FPS, allora tutte le latenze di rete devono essere attentamente valutate ed aggirate per creare l'illusione perfetta di un' ambiente virtuale tridimensionale condiviso.

martedì 1 settembre 2015

OK, abbiamo la data ed adesso?

Logo ufficiale Project Sansar da VRFocus.com
La notizia è rimbalzata sulla rete ovunque: l'Oculus Rift nella sua versione Consumer Version 1.0 sarà commercializzata a partire dal primo trimestre del 2016. Abbiamo finalmente la tanto attesa "data" che ha fatto così discutere sviluppatori, utenti ed appassionati. Eppure un misto di agitazione ed ansia pervade la mia mente: la VR è finalmente diventata una tecnologia consolidata e sopratutto utilizzata? Può un visore con l'attuale e più avanzata tecnologia essere lo scopo ultimo del mondo del gaming? Incomincio a pensare che l'arrivo dell'Oculus VR sia sicuramente una tappa molto importante nel cammino della Realtà Virtuale, siamo però ben lontani dall'avere una piattaforma che possa esprime tutte le potenzialità legate a questa tecnologia. Non si sono ancora visti protocolli e/o standard capaci di far "dialogare" i diversi dispositivi, ma sopratutto sono ancora pochi e di nicchia i sistemi che offrono la possibilità di condividere l'esperienza virtuale tra più utenti.  Non comprendo la foga e la rincorsa di singole avventure grafiche sicuramente ben realizzate grazie a motori grafici 3D come Unity ed Unreal Engine che tuttavia trascurano altri sistemi per l'interazione dell'utente con l'ambiente virtuale. Si é un po' troppo utenti passivi immobilizzati in una meravigliosa avventura quando invece potremmo essere i "demiurghi" in grado di creare un nuovo mondo. Va oltre tutto fatto notare che i Mondi Virtuali Immersivi in lavorazione stanno ancora implementando sistemi per offrire agli utenti la possibilità di inserire contenuti di vario tipo. La discussione è quanto mai accesa al riguardo: gli strumenti necessari devono essere inseriti nel mondo stesso oppure si devono utilizzare programmi appositi per la creazione?
La risposta è la più diversa (ma non troppo ;-): HighFidelity.io prevede per il momento la possibilità di importare mesh (e non solo) e di operare su di essi, in parte, anche attraverso gli strumenti in-world. Le operazioni base di traslazione, rotazione ed ingrandimento sono sempre possibili, come il rezzing di oggetti base, tuttavia creare oggetti complessi richiede l'utilizzo di modellatori avanzati come Maya o Blender. I problemi tecnici alla base di queste scelte non sono banali. Un oggetto potrebbe essere infatti composto di milioni di triangoli e quindi troppo oneroso nella sua ricostruzione a video ed anche nella sua trasmissione da client a server (o tra peer ;-) Ci sono quindi diversi trucchi sia nella visualizzazione come l'uso di diversi Livelli di Dettaglio (o LOD) della singola mesh, sia sistemi per rendere l'oggetto più semplice e quindi più facilmente visualizzabile. Il formato scelto per il salvataggio delle mesh nel caso ad esempio di HighFidelity, ma anche di altri motori grafici, è FBX. Si tratta di un formato proprietario di Autodesk molto utilizzato per via dei diversi modellatori della stessa casa che lo utilizzano per l'esportazione ed è quindi intuibile che i motori grafici 3D l'abbiano subito adottato da Unity ad Unreal Engine.
Il famoso e tanto atteso Project Sansar sta adottando, molto probabilmente, lo stesso sistema di caricamento delle mesh, tanto che viene dichiarato sul loro comunicato (libera mia traduzione) "..che un ristretto numero di persone potrà caricare modelli 3D creati con Maya(R)..":

The small group of initial creators invited to help test Project Sansar will create 3D content using Autodesk’s Maya® software and will export their creations to the new platform.
Vedi:http://www.lindenlab.com/releases/linden-lab-invites-first-virtual-experience-creators-to-project-sansar-testing

Per una più dettagliata disamina delle possibili caratteristiche di Project Sansar potete vedere qui. Dalle dichiarazioni fatte tuttavia si evince che saranno presenti successivamente anche strumenti direttamente in-world e l'importazione anche da altri modellatori 3D. 
Si procede quindi in ordine sparso, ma soprattutto in modalità diverse senza appoggiarsi a formati non proprietari od a protocolli open source e questo è un vero peccato per la diffusione di questi nuovi mondi virtuali. Sophia Elizabeth su medium.com ha scritto un bel articolo in due parti che mostra la vera e propria "battaglia" che sta iniziando tra le diverse piattaforme e che agli occhi di un programmatore sembra uno spreco di risorse e denaro incredibile. Dove sono protocolli e gli standard aperti e comuni su cui creare un Metaverso diffuso così come è successo per il Web. Se esiste HTTP, HTML e tanti altri standard e protocolli perchè non creare un "Metaverse Transfer Protocol"? I tentativi nel passato al riguardo ci sono e non hanno portato ahinoi a nulla di concreto. Perchè non utilizzare e rendere completamente open source/royalty free standard e protocolli di comunicazione e dare a tutti la possibilità di entrare in un "mercato" più vasto con regole comuni? Domande forse a cui mai potremo dare una risposta...

The fight for metaverse articolo:

  1. https://medium.com/@sophiaedm/the-fight-for-the-metaverse-811aef87d16a
  2. https://medium.com/@sophiaedm/the-fight-for-the-metaverse-part-ii-f68f91283a6d 
  3. http://recode.net/2015/07/31/in-the-shadow-of-second-life-virtual-reality-startups-say-this-time-itll-work-really/
Mi consola il fatto che il creatore di ConVRge abbia rilasciato dei bellissimi tutorial per creare un mini-metaverse basato su Unity 3D utilizzando la piattaforma di comunicazione Photon:
E non sarà certo un caso che molte delle "nuove" piattaforme siano basate sul motore 3D Unity per la sua estrema semplicità di integrazione. Rimane tuttavia il problema per me fondamentale di come queste piattaforme siano state realizzate. Quale gli algoritmi, le tecniche e le tecnologie, i protocolli utilizzati? Forse è meglio ripartire dalla base ed iniziare un bel corso sulle librerie grafiche OpenGL. Un primo e piccolo passo verso forse un Metaverse completamente Open Source basato su standard/protocolli quanto più possibili aperti e liberi. Un sogno o forse un' utopia, ma il MayaVerse non è forse questo?

Corsi OpenGL:


lunedì 1 giugno 2015

Cookie: informativa estesa

Cookie: informativa estesa

In questa pagina trovate l'informativa estesa relativa ai cookie, come richiesto dal Garante per la protezione dei dati personali tramite il provvedimento datato 8 maggio 2014 “Individuazione delle modalità semplificate per l’informativa e l’acquisizione del consenso per l’uso dei cookie” e nel rispetto dell’art. 13 del Codice privacy (D.Lgs. n. 196/2003).

Cosa sono i cookie? 

I cookie sono file di testo che un sito visitato invia al browser del visitatore. La funzione dei cookie è quella di monitorare l'attività svolta durante la visita a un sito, tenendo in memoria, per esempio, chiavi di accesso o preferenze, così che il visitatore non debba inserire i dati nuovamente a ogni sessione di utilizzo di internet.

Informativa sui cookie di questo blog 

Questo blog, come è evidente dall'indirizzo, è ospite della piattaforma Blogger a titolo del tutto gratuito. Questo significa che i cookie presenti sono gestiti dalla piattaforma Blogger e il titolare del blog non può intervenire sui criteri della gestione né conoscere il contenuto dei cookie.

Questo sito può presentare collegamenti ad altri siti e collegamenti ad applicazioni di social network (per esempio i bottoni di condivisione). Anche i cookie di tali applicazioni e siti sfuggono del tutto al controllo del titolare di questo blog. Per i criteri di gestione dei cookie di terze parti si deve fare riferimento ai criteri esplicitati dalle parti stesse: FacebookTwitterGooglePinterest.

Cosa fare se non volete accettare i cookie di questo blog 

Se non volete installare i cookie di questo blog non dovete far altro che modificare le impostazioni del vostro browser in maniera tale da rifiutare l'installazione (usualmente i browser sono configurati per accettare i cookie, così da rendere la navigazione su internet meno farraginosa). Potete trovare qui di seguito le istruzioni per modificare la configurazione dei principali browser per PC. Mi raccomando, se usate un altro dispositivo, premunitevi di configurare il browser come preferite. Per modificare le impostazioni relative ai cookie sui vostri browser potete consultare i seguenti link: ChromeExplorer,FirefoxOperaSafari.
***

Chi volesse informazioni precise sulla normativa le può trovare sul sito del Garante

domenica 29 marzo 2015

Bookmark Virtuali #1...

Le novità nel mondo della Realtà Virtuale si susseguono ormai senza sosta. Non abbiamo ancora nessuna data certa per la commercializzazione della versione CV1 dell'Oculus Rift, ma questo non impedisce certo la creazione di giochi, esperienze e mondi virtuali immersivi incredibili ed innovativi.

Sul fronte dei visori HMD abbiamo un nuovo ed importante "giocatore", ovvero Valve che, in collaborazione con HTC, ha realizzato un nuovo visore con molte ed interessanti caratteristiche tecniche. Le diverse notizie che girano in rete dicono che sono stati usati due diversi schermi per i due occhi, invece della scelta dell'attuale Oculus DK2 di dividere lo schermo in due parti una per l'occhio destro e l'altra per quello sinistro. HTC Re Vive è integrato in un vero e proprio sistema VR con un particolare apparato di tracciamento laser per una stanza e relativo sistema di input. 

Qui tutte le informazioni per approfondire: http://www.htcvr.com/

OSVR: rilascio del sorgente dell'intero repository ed integrazione con Leap Motion

L'intero repository su GitHub.com del progetto OSVR è stato reso completamente disponibile agli sviluppatori. E' possibile quindi accedere ai plugin relativi allo sviluppo per i motori grafici 3D Unreal Engine ed Unity. E' stato poi annunciata l'integrazione diretta nel visore del sistema "Leap Motion".

Link di referimento:
http://osvr.github.io/
https://www.leapmotion.com/news/osvr-hacker-dev-kit-to-include-motion-control-with-embedded-leap-motion-technology


Second Life 2.0 ovvero Next Generation Platform

Dopo la prima dichiarazione "ufficiosa" avvenuto circa un anno fa, ecco i primi dettagli per lo sviluppo ed il rilascio della nuova piattaforma immersiva di Linden Lab:

https://danielvoyager.wordpress.com/2015/03/18/ebbe-linden-talks-about-education-second-life-and-next-generation-platform-at-vwbpe-2015/

Una start-up da tenere sott'occhio: Improbable.io

La improbable.io ha appena ricevuto venti milioni di dollari di finanziamento per l'ulteriore aggiornamento e sviluppo del suo "system in the cloud". Si tratta di una sorta di sistema distribuito per la creazione di mondi virtuali facilmente interfacciabile con tutti i motori grafici 3D. Quello che si sa è che è stato realizzato in Scala e che la Bossa Studios ha creato con esso un MMO in tempi molto minori del normale sviluppo fino ad oggi conosciuto. Un video mostra la demo sviluppata:



Ready Player One: versione cinematografica con la regia di Steven Spilberg

Ready Player One: il libro di culto in buona parte ambientato in un gigantesco Gioco di Ruolo Immersivo definito O.A.S.I.S. L'adattamento per il mondo cinematografico sarà diretto dal regista Steven Spielberg.

Virtnet: il primo libro della nuova saga del creatore di Maze Runner edita da Fanucci

Vedi copertina e link: http://www.fanucci.it/blogs/news/17856608-novita-in-libreria-virtnet-runner-il-giocatore-di-james-dashner


Ultima notizia, non meno importante delle altre, sono stato accettato tra gli utenti della Alfa di HighFidelity. So stay tuned and see you in the metaverse!

sabato 7 marzo 2015

La guerra silenziosa

È in corso una guerra sanguinosa combattuta a colpi di texture, pipeline ed editor grafici. Non è una guerra, per fortuna,  pericolosa, ma sta mietendo vittime tra i poveri sviluppatori. Avrete forse capito che mi sto referendo alla vera e propria guerra commerciale che si sta svolgendo silenziosamente tra i diversi motori grafici 3D. E' di oggi l'annuncio incredibile, da parte di EpicGame, del rilascio totalmente gratuito del loro incredibile motore grafico Unreal Egine 4. Nel dettaglio sarà possibile usufruire gratuitamente di tutta la suite di sviluppo e perfino poter accedere ai sorgenti dell'intero motore grafico presenti su github.com (al repository principale saranno aggiunti anche i codici del motore Physx su iniziativa di Nvidia: https://www.unrealengine.com/blog/nvidia-opens-physx-code-to-ue4-developers).



In un bel post del blog Cybereality appare quanto mai chiaro quanto ormai sia del tutto inutile cercare di sviluppare un nuovo motore grafico 3D ex novo. In circa due anni di sviluppo il blog Cyberality era divenuto il punto di riferimento per chi volesse creare un motore grafico 3D from scratch. Ma le considerazioni fatte dal bloggeri n uno dei suoi ultimi post devono mettere in guardia coloro che tentino soltanto di ipotizzare lo sviluppo di un software di questo tipo. Riporto dal post (http://cybereality.com/?p=728):
The crux of the matter is that all-in-one engines like Unity and Unreal are just too complex and mature to expect to compete with. That’s not to say a small team or a single hero-coder can’t produce something great. They can. However, using a pre-built engine cuts out a *lot* of time and risk. Had I been working on a project for a client, I would have never even contemplated a custom engine. It just doesn’t make sense. Both Unreal and Unity have huge teams of expert engineers working solely on engine development. Unless you work for a huge AAA studio with a monster budget, I just can’t see coming up with something better in any reasonable amount of time. Even some huge companies (like Capcom and Square-Enix) are dropping in-house engine development for Unreal 4. Not a good sign for indies or bedroom coders working on their own engines.
Non ci resta quindi che l'imbarazzo della scelta. Anche Unity 5, infatti, è completamente gratuito (per il singolo sviluppatore e con alcune piccole limitazioni) ed è considerato uno degli ambienti di sviluppo 2D/3D più utilizzati soprattutto da singoli sviluppatori, appassionati e piccole case di produzione di videogiochi.


Per inasprire ancor di più la battaglia Valve ha da pochi giorni dichiarato che il suo motore grafico Source 2 sarà anche lui disponibile gratuitamente per gli sviluppatori.
La domanda che rimane è quindi solo questa: chi vincerà? E soprattutto quale motore scegliere?


domenica 1 marzo 2015

Ci vediamo nel "Metaverse"!

La notizia di pochi giorni fa ha scosso il panorama degli Immersive Virtual Worlds: HighFidelity ha ricevuto dalla Vulcan Capital un finanziamento di 11 milioni di dollaro per l'ulteriore sviluppo della piattaforma. HighFidelity, inoltre, lancerà presto la possibilità di creare e condividere propri server con la piattaforma sviluppata che è attualmente in fase ALFA.
Di seguito l'interessante presentazione con l'annuncio del finanziamento e le possibilità lavorative annesse:


Per chi non conoscesse HighFidelity, si tratta di una startup fondata da Philip Ronsedale e soci per la creazione di un vero e proprio "Mondo Virtuale Immersivo" che può essere sicuramente considerato come l'approssimazione più vicina al citatissimo e bramatissimo "metaverse". E' da ricordare che HighFidelity è tra gli sponsor del visore OSVR.

HighFidelity è sicuramente una piattaforma molto  interessante, ma altre possibilità si fanno avanti. E' questo il caso di JanusVR, definito come  un vero e proprio VR Web Browser.  Questo denominazione è dovuta alla facilità con cui è possibile passare da una stanza simulata ad un'altra semplicemente "cliccando" sul portale di accesso che riporta un indirizzo web ed una breve descrizione del mondo collegato. Da quello che ho potuto vedere utilizzando Javascript ed oggetti in formato Wavefront (.obj) è possibile "creare" una propria stanza visitabile e collegata. Scorrendo il binario ho notato che lo sviluppatore principale James McCrae ha utilizzato, come in HighFidelity, le librerie QT. L'applicazione è sviluppata ovviamente in C++ ed è gratuita, tuttavia i sorgenti non sono disponibili. Ecco uno dei filmati introduttivi che spiegano molto bene il funzionamento di JanusVR:



Per chi invece volesse solo un semplice luogo di ritrovo è possibile utilizzare gratuitamente CONVRGE, un "social virtual environment".  Tutto il progetto è realizzato in Unity. Di seguito un breve video introduttivo preso in world:


sabato 7 febbraio 2015

Letteratura e Mondi Virtuali: due realtà comunicanti...(prima parte)

La letteratura fantascientifica ha spesso anticipato tecnologie del futuro con una buona precisione. Questo è ancora più vero nell'ambito informatico, dove non si è soltanto anticipato i tempi, ma spesso, quanto raccontato, è divenuto persino fonte di ispirazione. Un esempio su tutti si pensi alla fortuna del concetto di "Metaverso".


Il vero nome, Vernor Vinge, 1981

In un futuro non troppo lontano degli hacker si interfacciano con "The Other Plane, TOP" tramite dei sistemi che oggi potremmo definire di "Brain Computer Interface". TOP viene rappresentato come un immenso gioco di ruolo fantasy in cui gli "stregoni" sono coloro che hanno l'abilità di modificare oggetti, entità e regole del sistema attraverso la "magia". Una metafora quanto mai calzante per descrivere la stretta correlazione tra sviluppatori "hacker" ed il mondo del fantasy alla "Signore degli anelli". Legame che si sarebbe poi dimostrato quanto mai valido con l'arrivo di "Ultima On Line"





Neuromante, William Gibson, 1984

Che dire di più:

« Cyberspazio: un'allucinazione vissuta consensualmente ogni giorno da miliardi di operatori legali, in ogni nazione, da bambini a cui vengono insegnati i concetti matematici... Una rappresentazione grafica di dati ricavati dai banchi di ogni computer del sistema umano. Impensabile complessità. Linee di luce allineate nel non-spazio della mente, ammassi e costellazioni di dati. Come le luci di una città, che si allontanano [...]. »



Snow Crash, Neal Shepenson, 1992

Siamo in un futuro distopico governato dalle corporazioni e dalla mafia. Esiste tuttavia un universo parallelo ricreato al computer in cui si muovono avatar (dai più semplici ad i più complessi)  ed agenti AI in cui è possibile ricreare ambientazioni di ogni tipo.










Snow Crash è stato ed è tuttora la fonte principale di ispirazione per la creazione di mondi virtuali a cominciare da Habitat per passare poi all'importantissimo AlphaWorld il cui maggior programmatore aveva preso il nickname per il suo avatar di "Protagonist" come il personaggio principale del romanzo di Sthephenson "Hero Protagonist". Molte delle idee alla base di AlphaWorlds ora ActiveWorlds sono state poi migliorate in SecondLife.

martedì 13 gennaio 2015

Open Source Virtual Reality...

Nell'arena dei dispositivi HMD per la realtà virtuale entra un nuovo importante giocatore. Si tratta dell'iniziativa Open Source Virtual Reality, un visore quindi a codice aperto sia nella sua parte hardware che software. Un interessante progetto che con buona probabilità abbasserà i costi e soprattutto darà modo, con il contributo di appassionati ed esperti di crescere e migliorarsi. Il progetto è capeggiato da Razer, ma tra gli aderenti, a sorpresa, anche il nostro amato HighFidelity:

Senza dimenticare comunque che tutti gli schemi dell'Oculus DK1 sono scaricabili su github:

https://github.com/OculusVR/RiftDK1

domenica 11 gennaio 2015

Fotorealismo Motori Grafici 3D, Realtà Virtuale ed altre disquisizioni...

L'ottimo libro sulla gestione del software "Joel sul software" dedica un capitolo a quella che viene definita  giustamente come la "Teoria dell'Iceberg" (http://italian.joelonsoftware.com/Articles/TheIcebergSecretRevealed.html).
Avrete sicuramente notato quanto si parli molto spesso di un'applicazione in referimento solo e soltanto alla sua interfaccia grafica. Siamo focalizzati su cosa venga mostrato a video, ma non pensiamo all'enorme quantità di algoritmi, protocolli, standard siano necessari per l'elaborazione di quei pixel mostrati. Spesso ci si lamenta dell'etichetta sbagliata o del colore non correttamente abbinato, nel mondo della grafica 3D viene troppo spesso preso come metro di qualità il fotorealismo delle immagini. É indubbio che la resa grafica sia un elemento importante per il successo di un software, tuttavia non sempre é l' elemento essenziale per il corretto funzionamento di un'applicazione, si tratta solo della famosa "punta dell' Iceberg". Soprattutto nelle applicazioni VR la velocità di aggiornamento delle immagini è fondamentale per una corretta fruizione ed interazione. Certamente l'uso di sistemi grafici per la resa fotorealistica contribuisce al senso di "presenza" così importante nella VR, ma può diventare un ostacolo insormontabile qualora si voglia condividere la creazione e modifica di oggetti tra più utenti.

Immagine da: http://www.polycount.com/forum/showthread.php?t=146060

Immagine da: http://www.polycount.com/forum/showthread.php?t=146060
Le immagini precedenti sono esempi di funzionamento del motore CryEngine 3 di Crytek create da sviluppatori indipendenti che hanno avuto molto successo e fatto discutere in rete. Tuttavia non sono utilizzabili nell'ambito di mondi virtuali massivi sandbox a meno di ricorrere ad alcuni "trucchi" per la condivisione dell'ambiente simulato. Ed anche per i sistemi VR siamo al limite delle possibilità considerando che lo stesso sviluppatore afferma che la demo gira a circa 55-60 FPS (e le linee guida di Oculus consigliano 75 FPS). Non ci addentriamo poi negli innumerevoli problemi relativi alla condivisione via Internet  e ci limitiamo, per ora, a riportare un link (affronteremo questo problema in futuri post):

http://www.networkedgraphics.org/

sabato 10 gennaio 2015

Non è questa la fine che faremo con la Realtà Virtuale ...


Credo che questa bellissima immagine (probabilmente un quadro di cui non sono riuscito in nessun modo ad identificare l'autore e la provenienza dell'immagine) rappresenti molto bene la paura che molti hanno nei confronti della Realtà Virtuale. Ma potete esserne certi non faremo questa fine: rannicchiati in un angolo, vestiti di cenci, sporchi ed immersi o, sarebbe meglio dire, persi nella Virtual Reality. Potremmo ipotizzare che questa sia la naturale reazione di chi non conosce questo tipo di tecnologie. Dobbiamo però ricrederci, anche esperti del settore avanzano dubbi ed incertezze, come testimonia una nota di uno sviluppatore su Github che ha fatto molto discutere:


And having an immersive virtual environment - hey, MMORPGs even without VR get people to sink lots of time into them, and if anything that's probably gonna be more pronounced in the VR version - that is set up to, ultimately, generate ad revenue (and hence prioritize the needs of the advertisers over the desires of its users) is just an inherently gross concept to me.

Il breve scritto riporta alcune parti di una discussione tra colleghi. I due sviluppatori sono entusiasti della tecnologia, ma allo stesso tempo preoccupati delle possibili conseguenze.

La realtà fortunatamente è ben diversa da quanto percepito ed ipotizzato. I "padri fondatori" di questo vero e proprio nuovo paradigma di interfacciamento ai computer non hanno mai pensato alla VR come ad una mera copia della Realtà che ci circonda. La VR é a tutti gli effetti un potenziamento della Realtà come la percepiamo. I sensi umani sono limitati ed imprecisi, ma nulla vieta di ricreare un mondo in VR in cui "vedere" le onde elettromagnetiche e percepire i profumi in forma di colori. Le opportunità superano di gran lunga i possibili pericoli che accompagno comunque ogni strumento che l'essere umano inventa ed usa. Certamente i mondi virtuali non immersivi hanno dimostrato la possibilità (se pur minima) di dipendenze anche molto gravi, ma non possiamo per questo lasciarci sfuggire l'occasione di creare una vera e propria rivoluzione nel campo dell'interazione uomo-elaboratore che potrà condurci verso nuove ed incredibili prospettive.

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:

martedì 6 gennaio 2015

Shared Virtual Reality nel 2015?


Secondo quanto riportato dal blog New Worlds Notes il 2015 non sarà l'anno di lancio della versione consumer dell'Oculus Rift. Sono tuttavia in sviluppo ben tre diverse piattaforme per la condivisione di Realtà Virtuale che non è possibile non pensare al 2015 come all'anno della riscossa della VR (Virtual Reality). Soprattutto High Fidelity può essere considerato come il precursore del Metaverso tante volte agognato e sognato. Ne vedremo comunque delle belle....

Di seguito alcuni link interessanti: