Spel

All’interno della tecnologia: soluzione per il matchmaking in Roblox

All’interno della tecnologia è una serie di blog che va di pari passo con la nostra Podcast di colloqui tecnici. Qui, approfondiamo una sfida tecnica chiave che stiamo affrontando e condividiamo gli approcci unici che stiamo adottando per farlo. In questa edizione di All’interno della tecnologiaAbbiamo parlato con Ivan Marcin, CTO di Growth Group, per saperne di più sul matchmaking in Roblox.


Quali sfide tecniche stai risolvendo?

Il matchmaking crea servizi che abbinano gli utenti Roblox a un server di esperienza nel processo di abbinamento. Quando qualcuno desidera visitare un’esperienza Roblox, analizziamo migliaia di punti dati da più istanze del motore Roblox e li classifichiamo in modo che corrispondano. Roblox è unico perché le persone e i luoghi cambiano costantemente e il sistema che stiamo costruendo deve tenere conto di queste fluttuazioni.

Per fare ciò, dobbiamo sviluppare tecnologie per risolvere due sfide fondamentali per massimizzare la soddisfazione degli utenti. Il primo è determinare come tracciare e classificare i luoghi a cui abbiniamo le persone in tempo reale. Il secondo è ottimizzare la corrispondenza per l’efficienza su larga scala. Questo sistema ibrido deve garantire ai nostri milioni di utenti simultanei esperienze con latenza minima, orchestrando al tempo stesso le istanze di Roblox Engine nella nostra flotta di data center edge. Questo è ciò che guida il massimo coinvolgimento.

Il processo presenta numerose complessità, ma un buon esempio di una sfida particolare è quello che viene chiamato il “problema della mandria tonante”. Questo è il momento in cui i nostri sistemi riscontrano enormi picchi di carico in un breve periodo di tempo. Ad esempio, quando milioni di persone provano a partecipare a un’esperienza popolare alla stessa ora di sabato mattina.

In questi casi, potremmo vedere un rapido aumento di 10 volte delle richieste. Questo improvviso aumento di pressione mette a dura prova i nostri sistemi e in passato questo tipo di eventi ha causato la caduta della piattaforma. Ma ora, molte esperienze Roblox hanno questo tipo di eventi speciali, versioni limitate o aggiornamenti. Se da un lato aumenta l’impegno, dall’altro ci costringe anche a essere pronti a gestire pacchi regolari e fragorosi.

Il fragoroso problema del gregge è qualcosa che hanno anche altri social network e piattaforme?

Qualsiasi piattaforma può affrontare un improvviso e massiccio aumento di utenti. Ma è particolarmente impegnativo per noi a causa delle nostre dimensioni. Il rilascio di un articolo limitato può essere solo un evento una tantum per un’esperienza, ma ci sono milioni di esperienze su Roblox e molti hanno eventi popolari come questi. Quindi per Roblox gli episodi di mandrie ruggenti non sono rari, isolati o prevedibili. Possono verificarsi in qualsiasi momento in qualsiasi nostra esperienza e dobbiamo essere preparati. Abbiamo rafforzato il matchmaking e altri sistemi per fare più affidamento su questi schemi.

Quali sono alcune delle soluzioni innovative che stiamo creando per affrontare queste sfide?

Avevamo bisogno di creare un sistema di ricerca e raccomandazione personalizzato che indicizzasse costantemente le esperienze Roblox e abbinasse le persone ad esse in tempo reale.

Per inviare gli utenti nel posto migliore e gestire branchi fragorosi sempre e ovunque in Roblox, il sistema considera input come lo stato degli utenti, la posizione, la latenza e altre proprietà dei giocatori. Dovresti anche monitorare e aggiornare lo stato di tutte le esperienze Roblox ogni pochi secondi.

Da lì, dobbiamo generare questi consigli sulle partite in tempo reale. Con molti sistemi di matchmaking tradizionali, gli utenti accedono e attendono in una lobby virtuale l’inizio del gioco. Potrebbero volerci diversi minuti, ma in Roblox dobbiamo offrire alle persone le esperienze giuste nel momento in cui fanno clic sul pulsante di partecipazione.

Per fare questo è necessario costruire un sistema di esperienza che reindicizzi i nostri dati ogni pochi secondi. Farlo su larga scala è una sfida fondamentale perché non possiamo utilizzare tecniche di sistemi distribuiti standard, come affidarsi esclusivamente alla memorizzazione nella cache, per gestire i picchi di carico. Ci affidiamo invece alla creazione di un sistema di indicizzazione personalizzato. Ogni istanza del motore Roblox invia costantemente dati a questo sistema. Qualsiasi richiesta di partecipazione a un’esperienza analizza le proprietà di ciascuna posizione attiva, le ordina in più indici e consiglia dove inviare l’utente in base a ciò che sta accadendo in quel preciso momento.

Quali sono gli insegnamenti chiave derivanti da questo lavoro tecnico?

Uno degli insegnamenti chiave di questo lavoro tecnico è che dobbiamo guardare le cose da una prospettiva equilibrata. Abbiamo lavorato duramente per migliorare l’affidabilità della nostra piattaforma, ma stiamo anche sviluppando nuove funzionalità che miglioreranno l’esperienza dell’utente a lungo termine. È come un pendolo che oscilla avanti e indietro perché il cambiamento è costante. Dobbiamo essere in grado di imparare, adattarci e capire cosa possiamo fare a breve termine mentre costruiamo a lungo termine.

Prendiamo, ad esempio, come gestiamo il fragoroso problema della mandria. La nostra comunità di sviluppatori si è resa conto di poter sfruttare la pubblicità del fine settimana per attirare gli utenti verso le loro esperienze. Ciò ha portato masse di persone a partecipare alle esperienze il sabato mattina. Quindi abbiamo dovuto modificare i nostri piani tecnici, poiché quella sfida di scala non era qualcosa che potesse essere facilmente risolta. Quando il contenuto è statico, è possibile risolvere il problema aggiungendo livelli di memorizzazione nella cache e fornendo capacità per i picchi di utilizzo. Ma la natura in tempo reale dei nostri sistemi ha comportato la riprogettazione dei nostri sistemi di indicizzazione e scansione per suddividere le ricerche e ampliare la nostra concorrenza.

Quale valore Roblox ritieni si adatti meglio al modo in cui tu e il tuo team affrontate le sfide tecniche?

Il rispetto della comunità si allinea meglio al modo in cui il nostro team affronta le sfide tecniche. La nostra community è composta sia da utenti che da creatori che creano esperienze e guidano i nostri requisiti tecnici. Entrambi sono ugualmente importanti. Quindi, quando cambiamo qualcosa, dobbiamo pensare attentamente a come ciò influirà su tutti.

Ad esempio, se stiamo pensando di modificare qualcosa come le API che influenzano il teletrasporto, dobbiamo capire come influenzerà sia gli utenti che gli sviluppatori. Abbiamo passato molto tempo a pensare a come convincere le persone a giocare al gioco giusto, ma anche a come offrire agli sviluppatori più opzioni e controlli. Comunichiamo regolarmente con gli sviluppatori per fare brainstorming su nuove funzionalità.

Cosa ti entusiasma di più della direzione in cui sono diretti Roblox e il tuo team?

Tre cose. Innanzitutto, sono impressionato dalla nostra straordinaria crescita. Il secondo è il potenziale di creazione e innovazione in Roblox: le persone propongono costantemente nuove idee ed esperienze, il che ci spinge a essere creativi ed espandere quella creatività. In terzo luogo, l’intelligenza artificiale/ML è in forte espansione e Roblox è in prima linea in questa ondata. Ad esempio, stiamo integrando più ML nel matchmaking e nell’intelligenza artificiale generativa in altri modi unici e all’avanguardia in Roblox. È davvero emozionante.