Tech Talks Episodio 30: SLIM e transcodifica su cloud
SLIM e transcodifica su cloud
Con Varun Mani, Sergey Makeev e Tsvetan Tsvetanov
In questo episodio di Tech Talks, il fondatore e CEO David Baszucki si siede a tavolino con i responsabili di prodotto e ingegneria di Roblox Varun Mani, Sergey Makeev e Tsvetan Tsvetanov per analizzare come SLIM (un sistema gerarchico e dinamico di livello di dettaglio) e il Cloud Transcoding stiano ridefinendo ciò che è possibile fare su Roblox.
La conversazione verte su come Roblox trasmetta in streaming mondi 3D interattivi in tempo reale, su come la transcodifica generi la rappresentazione ottimale delle risorse per ogni dispositivo e su come SLIM comprima ambienti complessi e avatar in modelli compositi leggeri. Il gruppo esplora inoltre come questi sistemi consentano una maggiore libertà ai creatori, mondi multiplayer più vasti e un percorso verso l'upsampling assistito dall'IA e una tecnologia del motore a prova di futuro.
Trascrizione completa
Dave: Ciao, sono Dave Baszucki, fondatore e CEO di Roblox, e state ascoltando o guardando Tech Talks. Oggi parleremo di cosa caratterizza un motore di gioco di seconda generazione, di come coinvolge il cloud e di come aiutiamo gli utenti a collegarsi istantaneamente ad alta risoluzione. Abbiamo qui il dream team tecnico, ehm, che fa parte di Roblox.
Quindi abbiamo Varun Mani, Sergey Makeev e Tsvetan Tsvetanov e ci immergeremo in tutto ciò che riguarda lo streaming. Parleremo di slim, parleremo di transcodifica delle risorse, di tutto ciò che permette a Roblox di supportare, in definitiva, centomila giocatori. Se guardiamo all'industria dei videogiochi degli ultimi 10 o 20 anni.
C'è un modo tradizionale in cui tutti questi contenuti 3D. Ti vengono presentati e, ehm, e, e ci sono alcuni problemi con questo modo tradizionale. Perché quello che stiamo cercando di fare a Roblox è un'esperienza istantanea. Ehm, stiamo cercando di far funzionare le stesse esperienze sia su un telefono che su un PC gigante. Ehm, stiamo cercando di farlo senza alcuna latenza, e quando guardiamo al modo in cui funzionano i giochi tradizionali, non è proprio la stessa cosa, giusto?
Ricordo che, ai miei tempi, venivano distribuiti su questi oggetti chiamati floppy disk. Ma anche oggi, giusto, distribuiamo i giochi su... grandi DVD, credo. È corretto?
Varun: Sì. E penso che la chiave di tutto sia che è tutto confezionato insieme. Sì. Giusto? Quindi, che si tratti di un DVD o che tu stia scaricando un gioco oggi, arriva come un unico pacchetto gigante che non puoi, non puoi dividere.
Quindi devi aspettare che tutti i 4,7 gigabyte, o 10 gigabyte in alcuni casi, siano stati scaricati completamente prima di poter iniziare.
Sergey: Sì. E come ha detto Varun, per alcuni giochi potrebbero essere, sai, tipo 20, 40 gigabyte, e devi aspettare, tipo, un sacco di tempo prima di poter iniziare a giocare. E questo, sai, è un po' come uccidere il flusso, giusto?
Perché, tipo, vuoi giocare, hai forse un'ora o due ore, tipo dopo il lavoro, vuoi giocare e poi devi aspettare tipo 30, 40 minuti, mentre si aggiorna e cose del genere. Praticamente, è molto simile alla mia esperienza, tipo quando ci gioco. Tipo
Dave: quindi non è un po' simile a quello che abbiamo visto nei video e nei film?
Ricordo un tempo in cui i film venivano distribuiti su DVD e poi ricordo un'epoca con BitTorrent, per esempio. Si scaricava tutto e poi finalmente siamo arrivati al punto in cui vado su Amazon o Netflix o Hulu o Tubi e posso guardare subito. Ma io, io non credo che sia ancora successo nel mercato dei videogiochi.
Non ancora. Non ancora. Penso di no.
Tsvetan: Siamo gli unici a puntare
Dave: questo. Quindi, storicamente, Roblox ha sempre funzionato così, dietro le quinte, ehm. La maggior parte delle persone potrebbe non accorgersene, ma quando vai sulla homepage di Roblox e clicchi su "Gioca", puoi partecipare all'istante. In realtà è un approccio molto non tradizionale, perché quando uso alcune piattaforme di gioco molto sofisticate, mi è capitato di vedere download di ben 200 gigabyte prima di poter giocare.
Quindi, stiamo già facendo questo gioco istantaneo? Sì.
Tsvetan: Ehm, Roblox, per quanto ne so, è l'unica piattaforma che permette di unirsi e giocare all'istante. Oh sì,
Varun: sì, scusa. E, e un po' come quando parlavi dello streaming video, giusto? Cioè, cosa stai facendo in realtà quando fai uno streaming video in cui non voglio scaricare l'intero film, sto solo scaricando la parte del film che ho davanti e lo chiamiamo buffering.
Sto, sto guardando il film in streaming. Giusto? Quindi è vero, ma questo è solo in una dimensione. Perché lì c'è solo la dimensione temporale. Sì, questa è la differenza fondamentale. È questo il difficile nel farlo su Roblox perché è un mondo 3D completamente interattivo dove devi trasmettere in streaming sia le istanze che le risorse, che sono un po' i mattoni fondamentali di tutto in
Dave: Roblox A a e, ehm, direi che questo ha reso le cose ancora più difficili perché nel mercato tradizionale dei videogiochi
Tendo a vedere diverse versioni dei giochi su PC di fascia alta e dispositivi mobili di fascia bassa. E quello che, il modo in cui lo interpreto è che sui PC di fascia alta, dove posso scaricare centinaia di gigabyte, ci saranno queste risorse davvero grandi e complesse, mentre sui dispositivi mobili è quasi come se i creatori, penso, realizzassero una versione separata
Sergey: in qualche modo.
Ehm, sì. Quindi, questo, questo, questo è un ottimo punto, perché, come nei giochi tradizionali, sai, hanno questo processo chiamato "asset cooking". Quindi preparano una versione molto ottimizzata, per ogni piattaforma. E se ci pensi, da una prospettiva più, sai, di streaming video, allora è come su un DVD.
Ehm, il video è stato codificato una sola volta, giusto? Sì. Ma su qualsiasi piattaforma di streaming ci sono diverse codifiche per lo stesso video, quindi si adatta automaticamente al tuo dispositivo. E, ehm, tutti i giochi attuali, sai, preparano in anticipo le loro risorse e le distribuiscono in modo molto specifico, mentre qui è triplex.
Quindi siamo in grado di generare una versione ottimizzata di una risorsa per piattaforma sul cloud. Esatto.
Dave: Allora, teniamo a mente questo, ok? Perché un po' di tempo fa avevamo questa visione: se sei un giovane creatore e realizzi la tua esperienza, questa può funzionare in qualsiasi linguaggio. Avevamo la visione che potesse funzionare su qualsiasi dispositivo e con varie risoluzioni su qualsiasi dispositivo.
Ci addentreremo nell'argomento. Quindi, il mercato dei giochi tradizionale, sai, in formato fisico o scaricabile. Ehm, vogliamo risolvere quei problemi di accesso immediato, pubblicazione su qualsiasi dispositivo, bassa latenza e tutto il resto. E quindi oggi parleremo di qualcosa chiamato letteralmente 3D e 40 streaming.
Parleremo di, ehm, contenuti nel cloud. Parleremo di qualcosa chiamato "slim", che penso entusiasmerà davvero tutti. E quindi forse, ehm, per addentrarci nell'argomento, Varun, prima un po' di visione su cos'è "slim" e cosa. Ehm, lo chiamiamo "cloud Transco". Sì. E cosa significa tutto questo?
Varun: Allora, se facciamo un passo indietro, se pensate alla nostra visione d'insieme, stiamo cercando di raggiungere il 10% del mercato dei videogiochi.
Sì. Il modo in cui lo facciamo è dare ai creatori completa libertà su ciò che realizzano. Ehm, e se pensi a come cresciamo, ci sono due dimensioni. Si può fare l'espansione della piattaforma oppure l'espansione del genere. L'espansione della piattaforma è: come facciamo a far funzionare lo stesso contenuto su qualsiasi piattaforma?
Quindi si crea una volta sola. Roblox, assicurati che funzioni ovunque. E nell'espansione dei generi. Vogliamo che tu crei cose sempre più impressionanti e sempre più folli là fuori.
Dave: E quando dici "funziona ovunque", letteralmente, immagina qualcosa di davvero grande, folle e divertente. Grand Theft Auto, Red Dead Redemption, console di fascia alta.
Funzionante su un telefono Android da due gigabyte e su qualsiasi dispositivo intermedio. Esatto. Per
Varun: dal PC fino a un Android da due gigabyte, dovrebbe funzionare senza che il creatore debba fare lavoro extra. Quindi questa è la visione. Esattamente. Cloud, transcodifica e Slim sono solo due dei primi passi che abbiamo iniziato a compiere in quella direzione.
Dave: Ok, questo è un piccolo assaggio. Spiegheremo cos'è Slim e spiegheremo, penso che probabilmente spiegherai cos'è la transcodifica, ma prima presentiamo tutti. Allora Sergey, ehm, sei tornato, puoi raccontarci un po' del tuo background nell'ottimizzazione dei motori? Una delle cose più divertenti al mondo, vero?
Linguaggio assembly C++ come cm D, puoi raccontarci un po' su cosa hai lavorato?
Sergey: Ehm, sì, come hai detto prima, sì, ho lavorato praticamente sui giochi o sui videogiochi e per tutta la vita mi sono occupato di ottimizzazione, a partire dalla Xbox regionale e cose del genere.
Ehm, e... Sai, quando ho scoperto Roblox per la prima volta, sono rimasto a bocca aperta all'idea di un gioco creato una sola volta, o meglio, non proprio un gioco. Forse un'esperienza creata una sola volta, che poi è in grado di funzionare ovunque, su qualsiasi piattaforma, su qualsiasi dispositivo, senza richiedere alcun input aggiuntivo da parte dell'utente.
E questo è un problema ingegneristico estremamente impegnativo. Ehm, come, ehm, come tutti possono immaginare, giusto? Quindi, ehm, e questo richiede un sacco di, ehm, sapete, ottimizzazioni tradizionali, come CMD, multi-threading, una gestione molto attenta della GPU, la pianificazione, tutto questo. Ma allo stesso tempo, sapete, c'è un limite, ehm, a quanto possiamo scalare su un singolo dispositivo.
Fortunatamente per noi, abbiamo sempre il nostro cloud, giusto? Quindi, possiamo caricare parte di questo lavoro sul nostro cloud e aiutare quei dispositivi a renderizzare in modo più efficiente per visualizzare muri più grandi. In un certo senso, quando riusciamo a renderizzare muri che non entrano nemmeno nella memoria fisica di un dispositivo, perché esistono anche sul lato server e il server aiuta tutti i client a renderizzarli in modo efficiente.
Dave: Sì. E quindi, solo per sottolineare, penso che parte del suggerimento che condivideremo sotto sia che i motori di gioco tradizionali sono tipicamente scritti in C++, e si scaricano tutte le risorse. Ma diciamo che un gioco a cui vorresti giocare fosse il mondo intero, per esempio, nessuno può mettere il mondo intero su un DVD.
E quindi quello a cui stai alludendo, e lo vediamo già con Google Maps e altri servizi simili, Non c'è modo, ehm, di mettere tutto questo nello stesso posto. E quindi parte di ciò di cui parleremo quando diciamo streaming è la stessa cosa per i giochi e poi per Enton. Puoi raccontarci un po' come sei arrivato a Roblox, qual è stato il tuo percorso e magari darci un piccolo accenno su cosa sia la transcodifica cloud?
Allora,
Tsvetan: ehm, prima di entrare in Roblox, ho maturato la mia esperienza professionale in due ambiti. Uno è il software di progettazione e simulazione 3D per l'architettura, l'edilizia e l'ingegneria meccanica. Il secondo era il calcolo distribuito su larga scala. Posso applicare le mie conoscenze di entrambi questi ambiti a Roblox perché, in pratica, è proprio questo che fa Roblox.
Dave: Sì. Passiamo allo streaming su Roblox e parliamone. Allora, sappiamo cos'è lo streaming video. Lo streaming video è una cosa lineare, giusto? Mi serve solo un fotogramma. Dopo un fotogramma, ne inviamo uno dopo l'altro. Puoi spiegarci cosa significa lo streaming in 3D in tempo reale?
Varun: Se guardi effettivamente cosa, ehm, quasi tutto in un gioco ROBLOX oggi è composto da istanze o risorse, giusto?
Le istanze, una sorta di struttura del mondo. E poi una risorsa è ciò che effettivamente alimenta quell'istanza per il contenuto vero e proprio. Ehm, se pensi allo streaming, si tratta di trasmettere in streaming le istanze e anche quelle risorse. È quello che devi fare. Quindi, se in uno streaming video hai solo una risorsa, quella è il video.
In Roblox, lo facciamo migliaia, 10.000 volte, ehm, ancora e ancora e ancora. Quindi quando si parla di streaming istantaneo, si sta semplicemente cercando di trasmettere in streaming una parte sufficiente del mondo circostante e non si sa cosa farà il giocatore. Il giocatore potrebbe andare da questa parte, il giocatore potrebbe andare da quella parte. Si vuole trasmettere in streaming o caricare in buffer una quantità sufficiente del mondo.
E poi, in quel mondo che hai caricato, vuoi caricare le risorse esattamente con la giusta qualità. Quindi, come ha detto Sergei, hai diversi livelli di qualità per i video. Abbiamo la stessa cosa per le mesh, la stessa cosa per le immagini.
Dave: Quindi, se lo analizziamo, sarebbe corretto dire che le istanze sono cose che potremmo conoscere bene?
Un'auto, un albero, un'altra persona, una collina, qualcosa del genere. E poi le risorse sono gli elementi tecnici che compongono quelle istanze. Come all'interno di quegli oggetti 3D. Quando siamo tutti in un gioco, abbiamo come dei blocchi di triangoli, abbiamo blocchi di texture e quindi stiamo parlando di scegliere quali di questi
Da caricare in qualsiasi momento.
Varun: Sì. E quale rappresentazione di essi. Quindi mentre cammini, mentre attraversi il mondo, è come se il dispositivo dicesse: "Ok, voglio quell'albero" o "ho bisogno di quell'albero". Quell'albero è composto da un insieme di mesh e da un insieme di texture, e forse anche, in futuro, da animazioni, audio e così via.
Quindi poi decide. Ok. In base alla posizione di quell'albero, alla sua importanza, a quanto spazio occupa sullo schermo. Voglio la texture ad alta qualità. Voglio la mesh a qualità media. E poi l'audio, forse non ho ancora bisogno dell'audio, quindi non trattenere l'audio. Quindi sta costantemente facendo queste...
Dave: quindi, in un certo senso, è un po' come quando uso un programma di mappatura, importo solo le piccole immagini, un piccolo pezzo della mappa.
Stiamo parlando delle versioni 3D di questo e, sai, anche di componenti 3D interattivi. Ok. E c'è qualcosa di davvero essenziale qui dietro le quinte. Direi che la nostra visione è sempre stata: indipendentemente dal dispositivo o da ciò su cui ti trovi, cerchiamo di inserire quelli giusti il più rapidamente possibile.
E io, e a volte diciamo che vogliamo inserirli il più rapidamente possibile per massimizzare la percezione umana della magia. Come se tu fossi semplicemente, wow, il mondo è apparso davanti a me. Quindi Sergey, come scegliamo e, e come decidiamo cosa caricare e cosa inserire.
Sergey: Beh, sì. L'ottimizzazione, tipo, per la percezione, sai, come la latenza.
Questo è molto importante perché, come ha appena detto Varun, capisci. Misuriamo costantemente, capisci, l'area dello spazio sullo schermo, quanto è importante l'oggetto. Ad esempio, se vedi un albero a una distanza molto ravvicinata, o se vedi esattamente lo stesso albero a una distanza molto grande, potrebbero sembrare due alberi diversi, giusto?
Quindi, se lo vedi da lontano, non ti interessano davvero i dettagli della texture, o cose del genere. Quindi possiamo sempre usare, sai, una texture a bassa risoluzione per l'albero. Ehm, non sarai in grado di distinguere, sai, se si tratta di una struttura a basso rischio o ad alto rischio perché, beh, è semplicemente molto piccola sullo schermo.
D'altra parte, però, possiamo caricarla quasi immediatamente perché in questo modo ci sono meno dati. Ma quando ti avvicini a quelle tre, caricheremo progressivamente sempre più dati e apparirà più dettagliata. Quindi non sarai in grado di vedere la transizione, non sarai in grado di notare la differenza, ma sarai immediatamente, immediatamente in grado di vedere e interagire con quella.
Dave: E, e parte di questo è quando uso il mio, sia il mio telefono Android da due gigabyte che il mio PC da gioco, e voglio partecipare a qualcosa all'istante. Anche se Internet è davvero veloce, non abbiamo. Larghezza di banda, come se stessimo cercando di spingere il mondo attraverso quel tubo, che tu abbia 10 megabit al secondo o cento megabit al secondo, e bilanciare ciò che spingiamo attraverso di esso.
E, e io, un modo in cui, a volte, ci penso è un albero che è vicino a me. Ehm, può usare le stesse informazioni di cento alberi che sono lontani da me e, in sostanza, i cento alberi che sono lontani da me possono avere la stessa importanza visiva di quello che è vicino e li visualizziamo a risoluzioni diverse.
Come quello che mi sta vicino, che ha una fedeltà molto più alta rispetto a quelli lontani.
Sergey: Sì, ehm, è esattamente così. Ehm, e, e, ehm, il punto importante che hai menzionato è che non stiamo solo misurando, sai, quanto è importante l'oggetto, ma anche quanta, quanta risorsa del computer, diciamo, abbiamo a disposizione?
Quanta memoria abbiamo? La larghezza di banda della rete, tutto. Quindi, ehm, teniamo conto di tutto ciò che influisce sull'esperienza dell'utente, e questo include le prestazioni. Sai, quanta memoria abbiamo, e tutto il resto.
Dave: Quindi, abbiamo parlato delle istanze come se fossero l'albero, mentre le risorse sono la mesh o le texture.
Puoi dirci di più su come sono diversi e, e cosa stiamo facendo realmente dietro le quinte con lo streaming delle risorse. Ok.
Tsvetan: Sì. Ehm, per esempio, nello streaming dal server, i siti, cosa è importante? Sì. E in base, ehm, all'importanza che, ehm. G fornisce queste informazioni, le invia a ogni client, e ogni client riceve effettivamente un'istanza diversa, ehm, a seconda.
È visibile? Non è visibile. Partecipa al quadrante interattivo o no? Per lo streaming delle risorse? È il client che effettivamente trasmette ciò che era nel mondo. Ehm, in base alla qualità a cui miriamo, come ha detto Sergey, in base alle capacità del dispositivo, miriamo solo a quelle esatte, ehm, rappresentazioni basate sulla qualità e sulla capacità del dispositivo.
Più o meno è così che funziona. Ehm, quindi
Dave: quegli alberi lontani in lontananza, si spera, sono molto compatti, giusto? Una risoluzione più bassa, che non occupa molto spazio. Così possiamo dedicare più tempo e più potenza di calcolo a un albero che è più vicino a me. E quindi abbiamo questa cosa chiamata pipeline dei contenuti o pipeline delle risorse.
Puoi spiegarmi un po' come funziona questa pipeline di transcodifica dal punto di vista di un creatore di giochi? Ad esempio, sto usando Roblox Studio e costruisco un'auto davvero bella. Cosa succede dietro
Tsvetan: le
Dave: le scene?
Tsvetan: A causa dei, ehm, miglioramenti al motore, volevamo anche preservare l’intento artistico dei designer e degli sviluppatori di giochi.
Così ci è venuta questa idea del transcodifica cloud che ci permette di, ehm, ehm, acquisire il contenuto dal, ehm, negozio dei creatori. Ottimizzarlo in base al dispositivo di sviluppo, ehm, ai dispositivi e alle capacità di cui, ehm, ehm, il cliente ha bisogno. E, ehm, questa pipeline è end-to-end. È "lazy on demand". Ciò significa che quando il cliente richiede una rappresentazione specifica, solo allora, se non disponiamo di quella rappresentazione, avviamo un'elaborazione.
Altrimenti, la restituiamo se esisteva già. Quindi siamo molto ottimizzati sulla, ehm, larghezza di banda e l'elaborazione, ehm, che stiamo fornendo al cliente. Quindi
Dave: se io, ehm, e noi, c'è stato un tempo, molto tempo fa, quando non avevamo questo, o forse in realtà abbastanza di recente, in cui dovevamo porre dei limiti alla fedeltà di queste risorse.
Ad esempio, penso che avremmo detto che puoi avere solo un certo numero di triangoli nella tua auto, e più triangoli ci sono, più l'auto appare accurata. Oppure avremmo detto che puoi avere solo un certo numero di pixel nelle dimensioni di una texture. Quello che stiamo dicendo ora è che, credo, puoi caricare quell'auto comunque tu l'abbia costruita, e poi quando dici "transcodifica dietro le quinte".
Creiamo diverse versioni di quell'auto con sempre meno triangoli.
Tsvetan: Sì, è corretto. O meglio, in futuro. Sì. E, ehm, quindi ora abbiamo questa capacità che ci permette, ehm, a seconda dei miglioramenti del motore e, ehm, della potenza di calcolo che abbiamo, possiamo, ehm, migliorare la rappresentazione del numero di triangoli o delle texture, delle mappe, dell'audio, del video, dell'animazione, di qualsiasi cosa ci serva.
Quindi,
Dave: quindi questo è on demand, e penso a quello che dicevi prima, Sergey. Cioè, prima si usava una tecnica chiamata baking, come se si cuocesse la parte di alta qualità. Noi, in sostanza, stiamo facendo il baking on demand. Molte versioni di quell'auto a varie risoluzioni. Sono tutte lì. E poi l'auto che vedo in lontananza potrebbe essere una di quelle a risoluzione più bassa.
E questo è, ehm, credo sia quello che chiamiamo transcodifica. Sì. Quindi, come funziona la transcodifica? Cioè, come si fa a prendere un milione di triangoli e trasformarli in mille triangoli? Intendo dire, ehm.
Tsvetan: Ehm, acquisizione. Sì. Quindi in studio, noi, ehm, acquisiamo effettivamente quella, ehm, mesh da 1 milione di triangoli. Poi la archiviamo nel, ehm, nostro backend, ehm, piattaforma di contenuti, ehm, backend, ehm, sistema.
E poi, ehm, su richiesta, eseguiamo effettivamente l'elaborazione LOD,
Dave: che sta per livello di dettaglio. Livello di dettaglio, il che significa
Tsvetan: a seconda di ciò, cerchiamo di preservare il più possibile la qualità per quella, ehm, rappresentazione limitata della mesh. O della texture.
Dave: Quindi, ehm, forse Varun, se pensassimo a come funziona su diversi dispositivi, tu sei, ehm, quindi tu sei il creatore.
Hai inserito questa gigantesca auto ad alta risoluzione. Io sono su un dispositivo Android di fascia bassa. Tu sei su un PC da gaming di fascia alta. Speriamo di poter giocare comunque allo stesso gioco. Esatto. Cosa succede a entrambi? E,
Varun: e quindi, in pratica, quando il mio client si connette, è come se dicesse: "Ehi, sono un dispositivo Android di fascia bassa. Voglio questo specifico", perché una cosa che non abbiamo menzionato, in realtà, è che non si tratta solo del livello di dettaglio, ma anche di una rappresentazione specifica per la piattaforma.
Quindi Android, iOS, ognuna di queste diverse piattaforme ha rappresentazioni molto specifiche in cui puoi comprimere le texture, puoi effettivamente adattarle in modo tale che funzionino in modo molto più ottimale. Quindi il mio dispositivo Android si collegherà e dirà: "Ehi, voglio la versione Android. Di una texture di fascia bassa per quell'albero", e poi il cloud si attiverà e la creerà per me, e la memorizzerà nella cache in modo che il prossimo dispositivo Android che si collegherà
Non dovrà farlo di nuovo, potrà semplicemente inviare la versione che ho creato. Quando il tuo PC si connette, è come se dicesse: "Ehi, ho tutte le risorse del mondo. Dammi la versione di alta qualità, dammi la versione non compressa. Voglio solo la massima fedeltà". E poi procede e la memorizza nella cache, il che significa che questo è infinitamente a prova di futuro.
Dave: E anche infinitamente istantaneo. Adoro Grand Theft Auto, e loro hanno questa nuova versione che sarà assolutamente sbalorditiva, cosa che mi entusiasma molto. Se fossi un artista che, ehm, volesse modificare una risorsa. Nel nostro, speriamo, futuro sistema, la ricaricherei in circa cinque secondi.
Il tuo e il mio gioco attiverebbero una nuova transcodifica di quello. E letteralmente, sai, al picco di concorrenza, tipo coltivare un giardino con 25 milioni di persone, potresti in cinque o dieci secondi avere tutte quelle nuove persone. Che forse ottengono quella nuova risorsa. Ecco perché penso che sia, in un certo senso, il futuro, perché, penso che parte della, ehm, bellezza di Grand Theft Auto sia che loro, ci mettono dentro tantissima qualità.
Lo metteranno su un DVD gigante. Devono assicurarsi che sia perfetto e non c'è modo di iterarlo. Devi renderlo assolutamente perfetto proprio lì. E, e, e quindi io, io, immagino finalmente. Per quanto riguarda la preparazione per il futuro, oltre ai cambiamenti istantanei, c'è qualcosa che sembra positivo nel conservare l'intento artistico, sai, conservare l'opera d'arte originale.
In un certo senso, puoi, puoi dirci come questo potrebbe aiutarci? Ehm,
Sergey: sì. Quindi, dato che stiamo cercando di catturare il più possibile il contenuto artistico originale e lo stiamo conservando, stiamo conservando la versione sorgente, esatto. Di tutte le risorse. E questo, come puoi immaginare, ci permette, sai, di poter
Non solo ridurne la risoluzione generando versioni più semplici di una texture, ma anche aumentarla in futuro perché abbiamo già catturato quella semantica, cioè quale fosse l’intento originale, quindi possiamo migliorare la qualità di questa risorsa in futuro. E senza richiedere alcun intervento da parte dell’utente.
Possiamo migliorarne l'aspetto.
Dave: Questo, e questo sarà un grande indizio man mano che ci avviciniamo al futuro. Ehm, quindi aggiungiamo, ehm, aggiungiamo una seconda componente a ciò di cui abbiamo parlato. Quindi stiamo trasmettendo in streaming. Apportiamo correzioni istantanee. Transcodifica cloud, forniamo qualsiasi LOD. E poi, come abbiamo accennato all'inizio, lo completeremo con qualcosa chiamato Slim.
Quindi Slim non è un programma di allenamento. Non è come Roblox, non sono gli snack di Roblox che, si spera, ci faranno sentire tutti davvero bene e pensare con chiarezza, ehm, cos'è Slim nel contesto del motore Roblox.
Sergey: Quindi, sì. Ehm, quindi. Ehm, lasciami fare un passo indietro, tipo, ehm, e ehm, riporto questo, ehm, esempio di nuovo, tipo con un albero, giusto?
Quindi abbiamo, ehm, hai un albero, e come ho detto, dove potresti avere più alberi, tipo, ehm, in lontananza, ehm, Slim è ciò che trasforma tutti quei singoli alberi, tipo, in una foresta e li ottimizza, tipo, non più come singoli, ma li ottimizza come qualcosa di più grande, è un'aggregazione, tipo di singole risorse e, ehm.
Ed è la tecnologia Slim. Ottimizza sempre quelle risorse, in un contesto specifico. Quindi diciamo che hai un edificio, giusto? E, tipo, un sacco di, ehm. Ehm, stanze all'interno di quell'edificio. Tipo, se sei fuori dall'edificio, non ti interessano le stanze all'interno dell'edificio. Quindi, Slim è consapevole di questo contesto, e può rimuovere in modo molto efficiente tutte le parti interne dell'edificio, come in quel caso, e ottimizzare e generare una versione molto ottimale di quella risorsa per te.
Dave: Quindi ci sono, ci sono tre casi d'uso a cui, mentre lo progettavi, abbiamo pensato, sai, io ho pensato. Quindi un caso d'uso è che le persone stanno creando avatar sempre più complessi. E storicamente su Roblox siamo stati molto attenti a quanti strati di vestiti puoi indossare? Quanti gioielli posso indossare, quante cose.
Ma in futuro gli avatar potrebbero avere tantissime cose, tipo un centinaio. E penso che i nostri creatori siano molto esperti in termini di prestazioni. Potrebbero effettivamente limitare la fedeltà degli avatar perché vogliono prestazioni elevate. Avatar complessi, numero uno. Numero due, come hai detto tu, potrebbero esserci un centinaio di alberi laggiù, lontani in lontananza, e nessuno interagisce con loro.
E poi il terzo potrebbe essere un edificio con delle stanze all'interno. Ehm, penso che quello che, ehm, cercheremo di fare qui è che, indipendentemente da cosa sia, un avatar in movimento, un gruppo di alberi o un edificio, questo stesso identico sistema verrà essenzialmente ridotto a un unico oggetto, una singola mesh, una singola texture, e questo è assolutamente sbalorditivo.
Ehm,
Sergey: sì, hai proprio ragione. Quindi, quella è una buona parola. Per esempio, quel sistema genera dinamicamente una rappresentazione composita, come di più risorse, e determina, sai, i confini di questa composizione, il livello di dettaglio per quella composizione, in modo dinamico, operando sempre in questo contesto di mondo.
Quindi esattamente come in due esperienze diverse, che potrebbero essere ottimizzate in modo diverso in base al dispositivo di destinazione, in base al contesto in cui vengono utilizzate, e... Eh, supportiamo anche aggiornamenti dinamici per quel contenuto. Quindi non è sempre così, non è un'ottimizzazione statica.
Se qualcosa, ehm, cambia, nel corso del tempo, ehm, questo si rifletterà nella rappresentazione snella perché, dato che possiamo aggiornarla dinamicamente.
Dave: È, è quasi... uno dei motivi per cui mi piace davvero è che mi sembra quasi di essere uno sviluppatore di Roblox. E volevo davvero una scala enorme e, ad esempio, avatar davvero complessi.
Potrei sognarlo, tipo, posso avvicinarmi a qualcuno vicino a me. Possono togliersi il cappello, possono indossare dei nuovi gioielli, ed è così che questo sistema funzionerà con gli oggetti vicini, magari con una fedeltà alta. E poi, man mano che quell'avatar si allontana, si riduce in un unico oggetto.
E man mano che si allontana con il LOD. Ehm, scherziamo dicendo che il massimo è un avatar in lontananza che potrebbe essere composto da 12 triangoli e, ehm, una texture davvero piccola. Quindi questo è, questo è quasi come ciò che uno sviluppatore, credo, ha sempre sognato. E poi, penso che questo renda, ehm, una delle cose che questo rende possibile è un mondo più vasto.
Su tutti i dispositivi.
Varun: Assolutamente. Voglio dire, ciò che Slim sta essenzialmente facendo è darci un nuovo asse di scalabilità. Abbiamo parlato così tanto della transcodifica cloud a diversi livelli di dettaglio. Ora stiamo aggiungendo un altro livello di un altro asse qui, che riguarda la composizione. Giusto? E, e puoi pensare a una matrice due per due qui, e qualsiasi punto su quella è un'esperienza valida.
Esatto. Quindi potresti avere alta qualità e basso compositing, oppure alta qualità e alto compositing se sei su un dispositivo di fascia molto bassa o su un dispositivo diverso. E tutti questi punti hanno senso. Quindi, se parliamo di un mondo enorme, quell'intero mondo potrebbe essere composto da 12 triangoli. Inoltre, se sei abbastanza lontano, o se non fa differenza.
Dave: E quindi, pensando all'esperienza utente e a come Slim possa portare a un'esperienza utente migliore. Se pensiamo al LOD, pensiamo al cloud transcoding. Se pensiamo a Slim, pensiamo allo streaming rispetto a Roblox oggi o, o un anno fa, come. Come può questo influenzare l'esperienza utente?
Tsvetan: Sì, quindi Slim, ehm, abbiamo creato Slim con l'idea di, ehm, consentire agli sviluppatori di creare mondi più ricchi, grandi e complessi che, ehm.
Ehm, comportarsi e interagire con l'utente finale. Siemens? Ehm, sì, molto facilmente. Come senza, ehm, e l'utente finale, ehm, l'esperienza utente è esattamente la stessa che si avrebbe con la, ehm, macchina più potente. E, ehm, Slim è, ehm, questo sistema che oggi consente, ehm, modelli statici. E noi stiamo, ehm, sai. In futuro, avatar e modelli dinamici che vengono, ehm, generati, ehm, gerarchicamente, ehm, in modo da poter, ehm, rendere il sistema il più veloce possibile per l’utente finale,
Dave: il che per l'utente finale potrebbe significare mondi più ricchi su dispositivi di fascia bassa.
Potrebbe essere sul mio telefono di fascia bassa. Posso giocare con te sul tuo PC da gaming. Ehm, i creatori possono realizzare modelli più, ehm, senza preoccuparsi del numero di strati di vestiti su un avatar. Veicoli più complessi, ehm, complicati. Ehm, anche gli oggetti meccanici verranno compressi da Slim, il che sarà davvero, davvero fantastico.
E poi. Ehm, forse riflettendo su come funzionano insieme. Abbiamo parlato di transcodifica cloud, ehm, quindi di offrire un LOD più basso. Poi abbiamo parlato di Slim, che consiste in modelli davvero leggeri. Funzionano insieme?
Varun: Hai assolutamente ragione. Ed è proprio quello che intendevo con quella cosa dell'accesso. Quindi anche tutti i modelli Slim passano attraverso la stessa identica pipeline di transcodifica cloud.
Perché una volta che li si compone, e una volta che slim è deciso in base al contesto e al contenuto, questo è ciò che dovrebbe essere il composito. Passa attraverso la stessa pipeline di transcodifica e poi genera una versione a bassa qualità, una versione ad alta qualità, una versione Android, una versione iOS per tutto.
Quindi è, è, è molto, molto complementare, ehm, tra,
Dave: e quindi per il creatore è quasi un doppio smacco, un modo molto complicato di lavorare con l'avatar a distanza, composito in un modello slim, poi la transcodifica. Quell'avatar, ancora una volta, potrebbe essere composto da 12 triangoli e avere un solo colore. E, e cosa
Varun: speri di vedere, o quello che mi aspetterei di vedere, è una sorta di primo ordine.
Tutte le esperienze esistenti possono semplicemente iniziare a funzionare su dispositivi di fascia sempre più bassa.
Dave: Sì.
Varun: Ma la cosa davvero entusiasmante sono gli effetti di secondo ordine, giusto? I creatori iniziano a rendersi conto: "Oh, posso inserire più cose nel mondo. Oh, posso aggiungere". Beh, ci pensi
Dave: a questo, ehm, se sto realizzando un video. È quasi come se la telecamera fosse progettata in modo piuttosto accurato.
Sai, prendo la mia videocamera 4K e non mi preoccupo mai, ovunque la punti, posso girare un filmato come faccio di solito. Ma i nostri creatori oggi non hanno quella videocamera. Se puntano la videocamera nel posto sbagliato... Il mondo potrebbe esplodere, giusto? Tipo, troppa risoluzione, come se puntassero la telecamera su una folla di 10.000 persone, è come... quindi questo è quasi come liberare la telecamera 3D immersiva,
Varun: ma dando libertà ai creatori.
Quindi possiamo espandere la piattaforma e poi il genere. Sì,
Dave: e, e penso che ci sia un momento, non sappiamo quando, in cui sarà un mix di legge di Moore, calcolo Slim 3D, streaming AI, upscaling locale, o qualsiasi altra cosa. Dove potrebbe essere che questa telecamera non sia più un limite, dove se volessi centomila persone in uno stadio gigante, fotorealistiche, che si divertono con i tuoi amici, in streaming su un dispositivo di fascia bassa con bassa latenza, sarebbe fantastico.
Quello sarà, penso, quando diremo che la telecamera immersiva a 40 telecamere è matura, la, ehm, la buona notizia o la cattiva notizia è che c'è molto lavoro da fare. Quindi questo rende il nostro lavoro piuttosto interessante. E io, credo, in questo contesto di cosa sia e di quanto velocemente ci stiamo muovendo verso quella telecamera tridimensionale e quadridimensionale definitiva, ehm, Sergei, qual è il prossimo passo per Slim e, tipo, cosa ottimizzeremmo dopo questo?
Quindi
Sergey: per Slim, ehm. Abbiamo davanti a noi alcuni grandi passi da compiere. Quindi, il prossimo passo è rendere Slim completamente dinamico, in modo che supporti avatar, veicoli in movimento, meccanismi mobili e tutto il resto. Ma il passo più importante dopo quello è rendere Slim gerarchico, come ha detto Barron, perché Slim genera risorse praticamente identiche a quelle normali.
Passano esattamente attraverso la stessa pipeline di streaming. Li ottimizziamo perché ogni modello Slim ha le sue caratteristiche individuali e cose del genere. Ma, e se potessimo spingerci ancora oltre, e se potessimo combinare più Slim in uno solo, tipo un mega-Slim, e poi ancora e ancora in questo modo, in modo frattale?
Dave: Quindi questo faceva parte della nostra domanda di progettazione. Perché quando tu, io ho proposto inizialmente lo slim, stavamo guardando gli avatar e avevamo un progetto separato. Pensando a come avremmo potuto mettere insieme un centinaio di avatar e, e come, come avremmo simulato centomila persone in uno stadio? E cosa è stato davvero, c'è stato questo giorno affascinante in cui penso che tu abbia detto, sai una cosa, potremmo essere in grado di prendere gli avatar slim e poi metterne un centinaio in una collezione di cento avatar con esattamente la stessa tecnologia.
Ed è un po' quello che abbiamo detto. Ti ha lasciato a bocca aperta, quella natura gerarchica?
Sergey: Ehm, sì, ehm, è esattamente così. E se porti questo esempio all'estremo, puoi pensare a qualcosa del tipo: ok, quindi la nostra telecamera virtuale può vedere l'intero pianeta. Quindi vediamo l'intero pianeta ed è come, sai, una sfera, con la sua texture.
Quando la telecamera si avvicina, vedrai i singoli continenti, poi vedrai le singole città e poi potrai scendere fino allo stadio pieno di gente perché, come dire, abbiamo tutta la simulazione in esecuzione sul server e il client non ha bisogno di sapere, ehm, del mondo intero.
È chiaro, sai, che non puoi far stare, sai, l'intero pianeta nella memoria di un dispositivo, anche se sei su un PC potente. Ma i nostri server sono molto potenti e, generando questa rappresentazione essenziale per la semplificazione, sai, possiamo passare dalla scala planetaria fino alla scala di una stanza, o addirittura al microcosmo.
Dave: Beh, giusto. Potremmo arrivare fino all'orologio che tu o io indossiamo, guardando la piccola manopola sull'orologio e anche oltre. E quindi, se ci pensiamo, ehm, Satana, come potrebbe questo cambiare ciò che i creatori iniziano a fare? Giusto. Ce ne libereremo, speriamo di liberarci di quel "oh mio Dio, devo preoccuparmi delle prestazioni di un avatar".
Ehm, ci sono altri cambiamenti che pensi potremmo vedere?
Tsvetan: questo eliminerà, ehm, secondo me tutte le limitazioni che hanno oggi. Loro, come hai detto, non devono pensare a, ehm, quanto sia complesso il mondo che stanno creando. Devono solo pensare a cosa vogliono presentare come dinamica di gioco ai loro, ehm, giocatori.
Nient'altro. Tutto il resto verrà gestito automaticamente da noi.
Dave: Bene, approfondiamo un po' questa parte automatica. Sai, nel vecchio Roblox tradizionale facevamo una cosa chiamata "texture atlas". Avevamo un modello per una texture e tu dovevi capirne il funzionamento. Immagino che con un modello snello sia completamente automatico.
Ehm, come la generazione di quella texture a risoluzione più bassa.
Tsvetan: Sì. Sarà automatico, così come la determinazione di quei, ehm, elementi costitutivi che Sergei ha spiegato nel mondo dinamico gerarchico.
Dave: Ok, quindi ora, ehm, ora ci lasceremo davvero a bocca aperta e parleremo di, ehm, è facile immaginare che qualcosa sia più semplice, giusto?
È quasi come se fossi un artista, è molto facile immaginarlo. Rendere qualcosa più grezzo e appiattirlo è molto più facile che immaginare qualcosa che raggiunga una risoluzione più alta. E quindi voglio, voglio approfondire un po' il futuro dell'IA e lì, c'è molto lavoro in corso sull'IA, come il modo in cui genereremo videogiochi e streaming immersivo in tempo reale e modelli del mondo e tutto il resto.
E io... sento sempre di più che scopriremo che non si tratta di una cosa monolitica. Sarà una pila di 3, 4, 5 o sei modelli che lavorano tutti insieme, inclusa, sai, una riga di comando dove, se siamo in giro, possiamo semplicemente dire, come facciamo con il 4D: "Trasforma il Monumento a Washington in Godzilla" e boom, succederà proprio lì.
Ehm, e, e alla fine generare oggetti o mondi o giochi completi. Ehm, e speriamo in un contesto multiplayer. Quindi noi, noi ci giriamo insieme, noi quattro, e diciamo: "Ehi, laggiù, noi quattro vorremmo progettare un nuovo gioco e farlo apparire magicamente". C'è un aspetto secondario. Ehm, oltre al Prompt dei Comandi, al World Gen e al 3D, che è quello di cui parlavi, ehm, c'è l'upsampling e, ehm, se, se a volte immagino il classico Crossroads, che è un gioco di 20 anni fa su Roblox, in realtà ci sono abbastanza informazioni lì.
Se prendessimo il classico Crossroads e, Sergey, come hai detto tu, lo rendessimo simile a una versione medievale fotorealistica in cui il gameplay potesse rimanere lo stesso. Sai, tutti questi piccoli e divertenti strumenti come il lanciarazzi sono gli stessi, ma all'improvviso tutto ha un nuovo aspetto. Quindi, come funzionerebbe questo nel contesto?
Non so chi voglia intervenire. Sul LOD, perché ora il LOD deve aumentare invece che diminuire.
Varun: Penso che uno dei punti sollevati prima da Sergey, giusto? Si tratta di conservare il più possibile l'intento artistico originale in modo da poter fare alcune di queste cose in futuro. E, il mio esempio preferito, ed è un esempio a caso, ma immagina che io stia usando una texture, ma quella texture fosse in realtà una foto scattata da qualcuno se avessi effettivamente memorizzato l'apertura.
Dimensioni, se avessi memorizzato il valore f-stop quando è stata scattata quella foto. Ora il mio algoritmo Uprising ha molto più contesto. Sì. Se so dove viene utilizzata quella texture, se so che viene utilizzata su un castello, viene utilizzata sul pavimento? Il mio algoritmo Uprising può essere molto più intelligente nel realizzarla e nel mantenere l'intenzione originale del creatore fino in fondo su quel PC di fascia alta o su qualche PC futuro che non è stato ancora inventato.
Quindi
Dave: l'abbiamo mostrato all'RDC, credo che abbiamo mostrato un video di circa 15 secondi di Crossroads sottoposto a upscaling. Ehm, possiamo parlare di cosa potrebbe succedere realmente? Le risorse sono nel cloud, gli oggetti 3D, le texture. Ehm, c'è un prompt aggiuntivo inviato al nostro sistema di contenuti che dice: "Ecco, tutte queste risorse fanno parte di, ehm, quello che dovrebbe essere un mondo medievale molto più fotorealistico di quanto si possa immaginare".
Quindi tutti quei diversi LED vengono rigenerati per essere molto più vicini alla versione fotorealistica tramite quello che chiameremmo un campionatore 3D UPS o, in realtà, un creatore generativo 3D. Allora, ehm, chi vuole approfondire cosa potrebbe succedere al, al castello, per esempio?
Sergey: Io, io, penso proprio come ha appena detto Baron, sai, sembra che stiamo catturando molto di più a livello semantico, da quel mondo.
È proprio questo che è estremamente importante. Ad esempio, per questo esempio dell'incrocio, giusto? Quindi, se guardi il castello. Ehm, dalla mia prospettiva di singoli asset, proprio come, sai, una serie di blocchi, sono solo scatole. E non hai abbastanza contesto, capisci, non puoi far sembrare quei blocchi migliori.
E il castello è, ehm, è più di semplici blocchi singoli. È la somma di essi. Ehm, e Slim, dato che Slim opera in questo contesto, Slim è consapevole di questa cosa nel suo insieme. Quindi, ora qualsiasi assemblaggio ne saprà molto di più sul castello nel suo insieme, non sui singoli elementi.
Quindi, può creare una versione molto migliore di quel castello upscalato perché, è come se, capisse semplicemente che
Dave: e, e, e in un certo senso, si potrebbe immaginare di non avere quel castello di Crossroads esistente. E giusto perché tutti lo sappiano, Crossroads è un gioco Roblox molto vecchio, dall'aspetto squadrato.
Quel castello è in realtà un ottimo aiuto per il prompt. "Costruiscimi un castello". Quello è un prompt piuttosto aperto. Come se dovessimo ottenere un castello casuale di una forma casuale. Ma il, il castello in Crossroads, in realtà le dimensioni, tipo, sono un sacco di buone informazioni di prompt da upscalare in un castello davvero di alta qualità.
Sergey: Ehm, sì. Ehm, è esattamente così. Quindi, dato che, ehm, ehm, questa parte tridimensionale del castello, prima di tutto, sarà molto importante dal punto di vista del gameplay, giusto? Quindi non puoi semplicemente generare un castello qualsiasi e farlo funzionare per il gioco. Ehm, perché. Ma se riesci a catturare tutte le dimensioni, tutta la, sai, la semantica, in tutti i contesti, in cui, ehm, quell'asset è stato usato, allora puoi upscalarlo in modo molto efficiente.
E, e tu, non rovinerai il tuo gioco facendo questo. Perché, come questa, un'altra cosa molto importante. Non vuoi sovracampionare un asset che può rendere il tuo gioco ingiocabile.
Dave: Beh, beh, penso che ci sia un mondo futuro in cui, oltre a tutte le tue informazioni 3D, potrai modificare sia le tue informazioni 3D che il tuo prompt.
Entrambe si uniscono per generare quel mondo in modo che... L'aggiornamento di cinque secondi di cui abbiamo parlato, che è una modifica delle risorse in futuro. Potrebbe essere un aggiornamento del prompt di cinque secondi e un piccolo suggerimento in più nel prompt. E poi generare quel mondo in modo pigro su richiesta. E, e poi penso che ci sia un'ultima cosa, ehm, quando pensiamo a tutte le dimensioni di come l'IA possa unirsi per rendere queste cose fotorealistiche, non lo siamo.
C'è un livello finale, che è il livello 2D. Cosa sta succedendo sul tuo PC da gioco? Cosa succederebbe in un dispositivo video nel cloud dove potrebbe verificarsi un upscaling ancora più elevato? Quindi, ehm, per esempio, capelli perfetti sulla mia testa. Il posto migliore per realizzare quei capelli potrebbe essere localmente con un upscaler 2D. So che hai lavorato su molti giochi che cercano di realizzare i capelli in 3D.
Qual è la tua opinione, pensi che un giorno tutti i capelli saranno realizzati con l'upsampling 2D o saranno capelli 3D?
Sergey: Sì, assolutamente. Penso che ci stiamo muovendo in quella direzione perché alcune cose si possono fare solo nello spazio dello schermo, è più efficiente. Mettiamola così: è più efficiente farlo nello spazio dello schermo.
Ad esempio, come i capelli, il rendering, giusto? Quindi, o... Molti motori di gioco oggi usano l'upsampling basato sul ML, passando da 1080p a 4K. Ma si può fare molto di più, giusto? Si può cambiare l'ombreggiatura, si può cambiare l'aspetto delle cose.
E se si porta questo esempio all'estremo, un motore di gioco può semplicemente renderizzare, sai, alcune informazioni semantiche, come per un algoritmo di ML, e poi questo algoritmo di ML genererà, sai, capelli dall'aspetto realistico, o materiali dall'aspetto realistico. Come nello spazio di rendering, la direttiva.
Dave: Fantastico. Ehm, quindi, e poi mentre iniziamo a concludere, forse per tutti i programmatori C++ là fuori, i programmatori in linguaggio assembly, che, ehm, io, vorrei essere come loro, è una delle cose più divertenti al mondo. Stiamo facendo qualcosa di molto difficile qui, giusto? Stiamo cercando di, ehm, far funzionare tutte queste tecnologie su tutti i dispositivi.
Domanda sulla transcodifica. La domanda sulla transcodifica è: so che molti PC hanno ottimizzazioni, ehm, con registri SIMD e cose del genere per far funzionare queste cose più velocemente. Abbiamo iniziato a sperimentare con il SIMD in uno dei nostri transcodificatori, o è un'ottimizzazione futura?
Tsvetan: Ehm, quindi prima di tutto, a proposito, la transcodifica oggi può funzionare anche sul motore.
Ok. Eccellente. Bene. Quindi stiamo sfruttando le ottimizzazioni CMD, ma stiamo, ehm, guardando anche oltre utilizzando le GPU e, ehm, altro,
Dave: quindi la transcodifica su GPU è in arrivo?
Tsvetan: Beh, sì, lo stiamo valutando.
Dave: Ok. Il che è super, super divertente. Ok, quindi, ehm, ottimo aggiornamento a tutti, ehm, ehm, per chi vuole qualcosa di visivo, forse RDC, presentazione sul palco principale.
Penso che dovremmo, avevamo immagini di gran parte di questo. Tutto ciò di cui abbiamo parlato è in cantiere. Ehm, lo stiamo osservando attentamente e io, io, penso davvero che, ehm, tutti voi e i vari team dietro di voi stiate davvero contribuendo a quello che sarebbe, quello che a volte chiamo "game engine 2.0", ehm, che è fortemente basato sul cloud.
Fortemente supportato dai Transcoder in tutta questa tecnologia. Quindi grazie a tutti. Penso che oggi abbiamo lasciato tutti a bocca aperta. Lo apprezzo davvero.
Tsvetan: Grazie.
Dave: Ok, ehi, sono Dave. Ehm, ancora una volta, tech talks e non vediamo l'ora di rivedervi la prossima volta. Grazie a tutto il team. Grazie.



