EA Play FIFA 23 F1® 22 Madden NFL 23 Apex Legends Battlefield™ 2042 The Sims™ 4 Pagina principale Electronic Arts Electronics Arts Home Ultimi giochi Prossimamente Giochi gratuiti EA SPORTS EA Originals Libreria dei giochi Offerte EA app PC PlayStation Xbox Nintendo Switch™ Dispositivi mobili Pogo Per EA app EA Play Test di gioco Società Lavora con noi Notizie Technology EA Studios Partner EA I nostri impegni Gioco positivo Persone e cultura inclusiva Impatto sociale Ambiente Aiuto Forum della comunità EA Filtro famiglia Accessibilità Stampa Investitori Ultimi giochi Prossimamente Giochi gratuiti EA SPORTS EA Originals Libreria dei giochi Offerte EA app PC PlayStation Xbox Nintendo Switch™ Dispositivi mobili Pogo Per EA app EA Play Test di gioco Società Lavora con noi Notizie Technology EA Studios Partner EA I nostri impegni Gioco positivo Persone e cultura inclusiva Impatto sociale Ambiente Aiuto Forum della comunità EA Filtro famiglia Accessibilità Stampa Investitori

Come funziona Apex Legends: un approfondimento sui server e sul codice di rete

Ricklesauceur, programmatore capo di Apex Legends, ci parla dei problemi più comuni, delle cause e delle soluzioni adottate dal team.

Introduzione

Ciao a tutti! Sono @ricklesauceur, programmatore capo di Apex Legends, e oggi voglio parlarvi dell'infrastruttura online su cui si basa il gioco.

In passato non abbiamo parlato spesso dei server, del codice di rete e dell'infrastruttura online di Apex Legends, ma oggi vogliamo iniziare a cambiare le cose. In breve, ecco cosa intendiamo fare con questo post:

  • Condividere qualche dettaglio in più su cosa stiamo facendo per migliorare la vostra esperienza di gioco online
  • Riconoscere e spiegare alcuni dei problemi online più comuni e i problemi di connettività che potreste riscontrare mentre giocate
  • Analizzare nello specifico le domande più frequenti su argomenti quali la lentezza dei server, la registrazione dei colpi e il funzionamento del nostro sistema di compensazione per il lag
  • Offrire spiegazioni più esaurienti sul tickrate dei nostri server e chiarire perché pensiamo abbia un impatto su alcune cose e non altre

Attenzione: questo sarà un post molto lungo perché lo scopo è proprio quello di spiegare nel dettaglio l'infrastruttura online di Apex Legends, cosa che i giocatori chiedono a gran voce da molto tempo. 

Noi lo vediamo come il punto di partenza di un dialogo più articolato. Anche se gli argomenti trattati oggi saranno moltissimi, infatti, probabilmente ne restano ancora molti altri (attacchi DDoS, bug che causano l'arresto dei server ecc.) da affrontare. Se questo post è di vostro gradimento, fateci sapere quale argomento vi piacerebbe trattassimo la prossima volta e ne pubblicheremo degli altri.

A tutti coloro che non vedono l'ora di scoprire di più sul codice di rete, i server, il tickrate e altro... benvenuti! Prima di tutto vorrei elencare alcuni dei miglioramenti che abbiamo implementato di recente.

ACCORCIAMENTO DEI TEMPI DI RISPOSTA CON L'OPZIONE "PRESTAZIONI"

Nella Stagione 6 abbiamo introdotto l'opzione "Prestazioni". Il riquadro ha questo aspetto e vi fornisce informazioni di base sulle vostre prestazioni nelle partite.

"In entrata" e "In uscita" indicano la banda usata dal gioco (in kb/s). Ad accompagnarle c'è la latenza (in millisecondi). La perdita e il choke dei pacchetti sono indicati come percentuale di pacchetti al secondo.

Questi numeri aiutano voi, ma anche noi, a capire cosa succede mentre giocate. In altre parole, possiamo tradurre le vostre "sensazioni" in informazioni tecniche utili.

Prima di questa aggiunta, spesso i giocatori ci dicevano che "qualcosa" non andava, senza però riuscire a identificare il problema. Ora invece potete dire "ho una perdita di pacchetti del 10%, 300 ms di latenza" e così via. Questo cambia tutto perché spesso e volentieri sono quei numeri a portarci dritti al problema. Ritornerò sull'argomento tra un attimo.

Mentre lavoravamo all'opzione "Prestazioni", abbiamo anche iniziato a registrare i dati chiave delle prestazioni dei giocatori e dei server. Ciò vuol dire che, se qualcuno segnala dei problemi, possiamo risalire alla sua partita e vedere i dati di tutti i giocatori presenti, incluse le informazioni sul server che ospitava la partita in questione. 

È stato questo il nostro primo grande sforzo volto a fornire al team dei mezzi di analisi più personalizzati e mirati. Questo approccio si è rivelato utile in alcuni casi, ma crediamo che non possa funzionare sul lungo termine. Prima dobbiamo ricevere una segnalazione, poi incaricare un programmatore di risalire alle cause del problema, e infine cercare di risolverlo (a seconda delle cause).

Nelle ultime stagioni siamo ricorsi all'aiuto del nostro fantastico data science team per raccogliere e analizzare i dati di settimana in settimana, al fine di rilevare eventuali perdite di pacchetti eccessive e problemi di server. Questo approccio ha già iniziato a dare i suoi frutti. Ad esempio, abbiamo scoperto che parte dell'apparecchiatura di rete in uno dei nostri centri dati era difettosa, e che peggiorava notevolmente le prestazioni di rete di alcuni server. Non c'era nulla che non andasse con i server in sé, ma l'hardware che li collegava ai giocatori causava una perdita di pacchetti eccessiva. Ci imbattiamo in situazioni simili con grande frequenza.

Il vantaggio principale di un'analisi costante dei dati è che ci consente di confrontare le informazioni con i giocatori per capire se esiste una certa sistematicità. Perciò, settimana dopo settimana, possiamo dire con certezza se il funzionamento dei nostri server è migliorato o peggiorato. Inoltre, l'analisi dei dati è uno strumento utilissimo per i nostri partner nella risoluzione dei problemi che esulano dal nostro controllo. Invece di dire che qualcosa non va, possiamo dire "questo non va", facendo risparmiare tempo all'intero team (a proposito, potete disattivare l'opzione in qualsiasi momento se lo volete. Per farlo vi basterà andare su "Gioco" e selezionare "Condivisione dati d'uso" nelle impostazioni). 

Quindi, l'automazione ci è di grande aiuto. Ma da sola non basta. 

Con questo approccio, infatti, siamo ancora un po' lenti nella risoluzione dei problemi. Dobbiamo aspettare una settimana per raccogliere dati attendibili, e spesso ci vuole un'altra settimana per analizzare il problema in modo approfondito. Dal momento in cui iniziate a notare dei problemi, potremmo impiegarci due settimane per arrivare a una completa risoluzione, e anche di più se è necessaria una patch per il server.

Possiamo fare di meglio. E lo faremo. Ma ora parliamo di soluzioni.

Prima di tutto, al nostro report settimanale abbiamo aggiunto delle notifiche in tempo reale. Queste ci forniranno le stesse informazioni che abbiamo ora, ma più velocemente. Potremo risolvere i problemi di hardware immediatamente, o iniziare ad analizzare i bug e a lavorare a una patch. Sappiamo quanto possa essere frustrante l'attesa, e per questo facciamo tutto il possibile per accorciare i tempi che intercorrono tra la segnalazione e la risoluzione.

Inoltre, aggiungeremo un nuovo ID server univoco ("SID") al riquadro delle prestazioni per individuare più rapidamente il server sul quale state giocando. Al momento, voi ci fornite una data e un'ora e noi confrontiamo queste informazioni con i dati a nostra disposizione per trovare il server su cui giocavate. Presto tutto questo non sarà più necessario. 

Entrambe le soluzioni sopraelencate dovrebbero essere implementate nel corso della prossima stagione: Origini. I giocatori dovrebbero quindi notare una risoluzione più tempestiva per i problemi di server, a volte addirittura due volte più veloce.

UN'ANALISI APPROFONDITA DEI PROBLEMI PIÙ COMUNI

E ora veniamo alla parte più divertente. Prima di tutto classifichiamo in modo generico i problemi di server. La lista che segue non è completa, ma mi auguro risponda alla maggior parte delle vostre domande.

Il server è lento.

Il problema più amato. I nostri server vanno a 20 Hz. Ciò vuol dire che simulano l'intero stato del mondo una volta ogni 50 ms (1 secondo, o 1.000 ms, diviso 20).

Quando parliamo di prestazioni dei server non usiamo il termine "FPS" (fotogrammi al secondo) perché i server non riproducono immagini. I server elaborano "stati", ma il principio di base è identico. Prendono gli input degli utenti (dalla rete), eseguono calcoli fisici, rimandano il nuovo stato del mondo al client e ricominciano da capo. Se questa procedura impiega sistematicamente più di 50 ms, il gioco rallenta per consentire al server di completare la simulazione. Ed è lì che il server inizia ad andare a rallentatore.

Immagine del tempo frame di un server. La colonna 5 indica l'obiettivo di 50 ms. Qualsiasi valore inferiore indica una maggiore velocità. Come potete vedere, questo server era più stabile e veloce del necessario.

Al contrario, questo server non ha mai raggiunto il tempo frame ideale, e funzionava con un tempo frame di 200 ms (quattro volte più lento). Un valore comune per i server lenti.

Le cause possono essere molteplici, ma a volte il problema è dovuto al malfunzionamento delle apparecchiature dei centri dati. Pensate ad esempio a un rallentamento dei processori, a un surriscaldamento e così via. 

Quando rileviamo problemi di questo tipo, generalmente le apparecchiature difettose vengono rimosse. Ciò vuol dire che dobbiamo letteralmente chiamare l'ISP, segnalare il problema e chiedere che l'apparecchiatura venga disattivata. 

Una volta implementata nella prossima stagione, la nuova tecnica di rilevamento in tempo reale di cui parlavamo dovrebbe migliorare il problema notevolmente. Ci stiamo impegnando molto per arrivare a una completa risoluzione, perciò seguiremo con attenzione eventuali sviluppi.

La latenza oscilla.

Se usate il Wi-Fi per giocare, non possiamo fare molto per aiutarvi! In caso contrario, a volte una latenza variabile potrebbe essere dovuta alle prestazioni del server.

Come ben sappiamo, anche se generalmente un gioco gira a 60 FPS, le cose possono cambiare quando gli elementi sullo schermo sono tanti. Anche quando la perdita dei fotogrammi è minima, la differenza è netta. Per i server funziona più o meno allo stesso modo. In questo caso, la tecnica di rilevamento automatico non ci aiuta a determinare le cause del problema. In passato abbiamo ricreato le condizioni del rallentamento su un server riservato agli sviluppatori, ma si è rivelato dispendioso in termini di tempo e anche un tentativo un po' alla cieca. Probabilmente il vostro computer non usa lo stesso hardware dei server e ha impostazioni diverse, perciò una riproduzione fedele diventa impossibile.  

Per fortuna il nostro team operativo ha creato uno strumento che ci consente di estrarre quello che noi chiamiamo "file RPROF". Si tratta di una panoramica di quello che il server fa in ogni fotogramma (simulazione balistica, traffico di rete in entrata e in uscita, movimenti dei giocatori e altro). I file RPROF ci aiutano a capire le cause del rallentamento, e a quel punto uno dei nostri programmatori può iniziare a lavorarci su. Di solito il problema ha a che fare con delle esigenze più elevate in termini di prestazioni, dovute alle nuove funzionalità aggiunte di stagione in stagione. 

Alcuni di voi ricorderanno, ad esempio, la schermata dei campioni rallentata all'inizio delle partite nelle stagioni 7 e 8. Il rallentamento era dovuto all'ingresso di tutti i giocatori nello stesso posto nello stesso momento, uno sull'altro (ed era anche impossibile da vedere a causa dell'interfaccia). Le simulazioni fisiche odiano gli oggetti che si accavallano. Il nostro motore fisico provava quindi a distanziare i giocatori, mandando in sovraccarico la CPU sul server.

Ecco la percentuale delle partite penalizzate dalle scarse prestazioni dei server (non necessariamente lenti) per regione. Come potete vedere, la situazione migliora in alcune regioni ma peggiora in altre (l'asse X è il tempo).

Una panoramica dettagliata della regione occidentale degli Stati Uniti che ci consente di rilevare le apparecchiature guaste (l'asse X è il tempo). In questi schemi, le interruzioni sono piuttosto evidenti. Alcune apparecchiature ne risentono, mentre altre rimangono stabili.

Crediamo che i file RPROF ci aiuteranno a ottimizzare le nuove funzionalità, riducendo inoltre la latenza in futuro. La riduzione della latenza è un obiettivo molto importante per noi, e l'uso di strumenti migliorati come questo ci darà una mano a risolvere il problema. 

Eccessiva perdita di pacchetti/choke dei pacchetti.

Questo è un problema estremamente complesso. Probabilmente non dipende da voi, e di solito nemmeno da noi! 

Ha a che fare con il modo in cui il traffico di rete viaggia dal vostro router al centro dati e viceversa. All'inizio, il traffico è sulla rete del vostro ISP. In caso di interruzione dei servizi da parte dell'ISP, le vostre informazioni (e quelle di altri clienti) andranno perse. Di conseguenza, il client del gioco non saprà cosa sta succedendo ai giocatori intorno a voi e il server non saprà che volete aprire il fuoco o muovervi in una determinata direzione. Esiste anche una correlazione tra la rete del vostro ISP e quella dei nostri centri dati. Lungo questo percorso, i problemi potrebbero sorgere ovunque.

Quando va tutto liscio, questo processo viene chiamato "peering". Nella maggior parte dei casi, i problemi di peering si verificano quando c'è un anello debole nel collegamento tra due reti. Passaggi come questo sono molto frequenti. E poi, ovviamente, tutte le informazioni provenienti dai nostri server devono tornare a voi, e spesso seguono un percorso diverso. È questo che rende complesso il problema. 

Se vogliamo trovare una soluzione, la prima cosa da fare è riuscire a individuare il punto in cui avviene l'interruzione. È difficile automatizzare la procedura, poiché abbiamo bisogno sia dei dati forniti da voi che di quelli del server per analizzare il problema da entrambe le "prospettive" e provare a individuarne la causa. 

A partire da oggi chiederemo ai giocatori di fornirci delle tracce di rete, e noi estrarremo le nostre informazioni dai centri dati per individuare il punto di congestione. La procedura richiede moltissimo tempo e lo stesso vale per la risoluzione del problema, perché a seconda dei risultati dovremo rivolgerci a diversi partner commerciali in tutto il mondo. Ci auguriamo che l'automazione ci aiuti a migliorare questo sistema, e abbiamo iniziato a lavorare ad alcuni miglioramenti. 

Per quanto riguarda i problemi di rete, la buona notizia è che di solito tendono a verificarsi tutti insieme e non uno alla volta. Ciò vuol dire che, risolvendone uno, di solito riusciamo a risolverne molti altri. Stiamo inoltre lavorando per ridurre l'utilizzo della banda da parte del gioco, il che dovrebbe contribuire a migliorare la situazione.

Host Migliore Media Peggiore ISP locale 22 31 264 ISP 1 27 185 515 ISP 2 24 194 652 Server di gioco 31 263 522
Host Migliore Media Peggiore
ISP locale 22 31 264
ISP 1 27 185 515
ISP 2 24 194 652
Server di gioco 31 263 522

Questa è una traccia di rete che indica la latenza di uno dei nostri migliori giocatori. Va dal suo modem a uno dei nostri server. La situazione viene analizzata più volte per valutare lo stato della connessione a Internet. Come potete vedere, l'utente gioca nelle condizioni migliori quando la latenza è pari a 31 ms. Ma la peggiore si aggira intorno ai 522 ms. In questo caso, quindi, la sua esperienza di gioco è estremamente negativa a causa delle oscillazioni di connessione di 500 ms. Sulla rete locale del suo ISP la connessione è un po' instabile, ma la media ci indica che si tratta un evento piuttosto raro (media di 31 ms con il picco più basso a 264 ms, perciò deve essere un caso isolato). Poi però vediamo un aumento di latenza tra l'ISP locale e l'ISP1, che è uno dei nodi tra il giocatore e uno dei nostri server. Possiamo affermare quasi con certezza che tra i due esistono problemi di routing e perdita di pacchetti. La questione esula dal nostro controllo, ma possiamo sempre segnalare il problema ai partner interessati. Di solito risolvere la situazione è nell'interesse di tutti.

I nemici riescono a uccidermi attraverso i muri e le porte, e a volte il mio personaggio indietreggia verso una posizione precedente.

Questo è un argomento scottante. La questione ha a che fare con la compensazione del lag. 

Sin dall'uscita dei primissimi giochi online, il problema principale degli sviluppatori è sempre stato quello di dover riuscire a simulare l'azione in tempo reale in qualcosa che non opera in tempo reale. In parole povere, tutto quello che fate nei giochi online avviene in ritardo a causa della latenza da e verso il server. A questo si aggiungono altri fattori: input, rendering e persino il tickrate dei server. 

E come se non bastasse, con molta probabilità i vostri avversari giocano con un livello di latenza diverso dal vostro. Per risolvere il problema, non solo i nostri server devono costantemente gestire quello che succede a voi e ai vostri avversari in un determinato momento, ma anche quello che è già successo sia dalla vostra prospettiva che da quella degli avversari nel momento in cui avete premuto dei comandi. La compensazione del lag è l'arte di fondere più esperienze di gioco leggermente diverse in un'unica realtà condivisa. 

Non esiste una soluzione perfetta. Non esiste un'unica verità. In fin dei conti, il server è una specie di macchina del tempo. Riavvolge costantemente lo stato del mondo per vedere se i proiettili sparati hanno colpito qualcuno, e poi aggiorna il mondo per tutti i giocatori. 

Per spiegare questo principio, il mio collega Earl Hammon ha analizzato brevemente la questione della correttezza e della compensazione del lag, chiarendo come funziona in Apex Legends. Voglio condividere le sue osservazioni con voi:

Prendiamo in esame diversi scenari che possono verificarsi in Apex Legends tra due giocatori, che chiameremo ALTO e BASSO. Ad ALTO diamo un ping alto di 300 ms, mentre a BASSO un ping basso di 50 ms. Tra di loro c'è una differenza di 250 ms.

Cosa succede se entrambi si sparano a vicenda nello stesso momento? Beh, i colpi sparati da BASSO raggiungono il server molto prima di quelli di ALTO, perciò BASSO ha un vantaggio.

Che cosa succede se uno di loro gira l'angolo e improvvisamente i due giocatori si vedono? Anche qui BASSO ha un vantaggio. BASSO è meno "nel passato" rispetto ad ALTO, perciò vede il suo avversario per primo. Ancora una volta il ping aiuta BASSO. A questo si aggiunge il fatto che i colpi inflitti da BASSO raggiungono il server più velocemente.

Questi due casi sono "ingiusti" perché BASSO parte avvantaggiato, ma allo stesso tempo "giusti" perché è ragionevole aspettarsi che il giocatore con il ping più basso abbia un vantaggio in situazioni del genere.

Ora, che cosa succede se BASSO gira l'angolo per mettersi al riparo? Beh, ALTO è ancora nel passato quando BASSO non ha ancora raggiunto la copertura, perciò ALTO può sparargli prima che si metta al riparo. Ma BASSO lo scoprirà solo quando i pacchetti di ALTO avranno raggiunto sia lui che il server. Nel frattempo, BASSO si è messo al riparo ma è stato comunque colpito. Dalla sua prospettiva, questo non ha senso.

Ma la situazione è praticamente identica a quella che poco fa gli aveva gli aveva permesso di avere la meglio su ALTO! Quando BASSO abbandona la copertura per attaccare ALTO, lo vede e gli spara quando ALTO crede che BASSO che sia ancora nascosto. Dalla prospettiva di ALTO tutto questo è assurdo, perché è appena stato colpito da qualcuno che era ancora nascosto. Il problema non può essere risolto. Può solo passare da un giocatore all'altro, perché la realtà dei fatti è che il ping esiste e non è uguale per tutti. 

Secondo alcuni non è giusto che ALTO riesca a sparare a BASSO quando quest'ultimo crede di essersi già messo al riparo. L'alternativa suggerita è che ad ALTO venga data la possibilità di compensare il ping alto da sé. Per poterlo fare dovremmo implementare un sistema scorretto e sbilanciato per la gestione della latenza. 

BASSO non è felice di essere stato colpito a causa del ping quando ormai pensava di essersi messo al riparo. ALTO non è felice di essere stato colpito a causa del ping prima ancora che potesse vedere BASSO. Ma gli svantaggi sono equamente distribuiti.

Vogliamo fare chiarezza su una cosa: non tutti i giochi online funzionano come Apex. Alcuni giochi avvantaggiano sempre i giocatori con un ping più basso, ma noi abbiamo scelto di non adottare questo tipo di approccio. La decisione è stata dettata da un'attenta analisi dei compromessi, tenendo sempre a mente l'equità della competizione. 

Per spiegare il nostro sistema in parole povere, i giocatori con un ping basso non partono sempre avvantaggiati rispetto a quelli con un ping alto, e a volte anche loro si trovano davanti a delle assurdità (per noi questo è un termine tecnico). 

È un compromesso che abbiamo integrato nel nostro sistema di proposito. Ma la cosa positiva è che potrete giocare ad Apex Legends relativamente bene anche con una latenza più alta della media, il che è davvero essenziale per i giocatori delle aree rurali e per quelli che vivono in regioni in cui la connessione a Internet è instabile. Crediamo che sia nostro dovere ridurre questa "assurdità" a ogni occasione utile, ma quando dobbiamo affrontare situazioni decisamente poco ideali vogliamo farlo senza intaccare l'equità della competizione.

Quasi tutte le volte che venite colpiti dietro a un muro o subito dopo aver girato un angolo, le ragioni sono probabilmente da ricercare nell'inevitabile variazione della latenza tra i giocatori e nel modo in cui viene distribuita dal nostro sistema. Detto questo, continueremo a lavorare per ridurla ogni volta che potremo. Vogliamo che la vostra esperienza di gioco sia non solo corretta ma anche divertente.

A volte i colpi non vengono registrati.

Bene, parliamo della registrazione dei colpi. Per "mancata registrazione" intendiamo i casi in cui credete di aver colpito un avversario ma il server non è d'accordo. Dalla vostra prospettiva, il fatto che il colpo sia andato a segno viene confermato dagli schizzi di sangue e dai suoni, ma il conteggio dei danni non sale. In uno sparatutto come Apex Legends, questo può essere molto frustrante. 

I motivi per cui ciò accade sono molteplici. A volte la latenza alta o la perdita dei pacchetti può avere un impatto negativo sulla sincronizzazione con il server. Quindi voi credete di aver sparato in direzione del nemico, ma in realtà avete sparato nel punto in cui si trovava poco prima. Purtroppo non lo scoprirete subito, ma solo quando la vostra versione del mondo si rimetterà in pari.

Altre volte potrebbe semplicemente trattarsi di un bug nella simulazione fisica del gioco. Per darvi un feedback immediato, noi facciamo affidamento su un concetto chiamato "previsione". Quando sparate, noi conosciamo già i dati balistici dell'arma che state usando, perciò possiamo prevedere dove finirà il proiettile senza che sia il server a dirvelo. Questo rende il gioco più reattivo. 

Di norma il client e il server sono d'accordo, e il proiettile va dove avevamo previsto. In passato abbiamo avuto a che fare con dei bug relativi al calcolo dei dati balistici e alla traiettoria dei proiettili (per ogni arma con dei proiettili con una diffusione). Questi bug sono difficili da scovare, perciò durante i nostri playtest ci serviamo di una visuale che ci aiuta a individuarli immediatamente. A causa della banda, però, il codice diagnostico è troppo pesante da far girare nel gioco live, perciò possiamo solo fare affidamento sui nostri test interni.

Ogni volta che i colpi non vengono registrati, disegniamo la hitbox e la traiettoria del proiettile (la traiettoria dovrebbe seguire una leggera curva, ma va bene lo stesso). Questo ci aiuta a capire quando il problema si verifica e ci torna utile quando diamo un'occhiata ai log dei server.

Per risolvere il problema, stiamo adottando due soluzioni:

Per prima cosa cerchiamo sempre di individuare le cause dei bug che interferiscono con la registrazione dei colpi. Abbiamo sviluppato degli strumenti che ci aiutano ad automatizzarne il rilevamento, per evitare che gli sviluppatori ne introducano di nuovi per errore. In questo senso, da parte nostra l'impegno sarà costante.

La seconda è collaborare con voi! Quando i giocatori ci inviano dei video che mostrano una mancata registrazione dei colpi, questo ci aiuta a capire se il problema è dovuto a un bug oppure no. Spesso guardando i video ci rendiamo conto che il problema ha a che fare con la latenza e non con la registrazione dei colpi, perciò vi preghiamo di controllare il riquadro delle prestazioni prima di inoltrare una segnalazione. Ad ogni modo, come abbiamo già detto, grazie ai vostri video abbiamo già trovato e risolto diversi bug in passato, perciò le vostre segnalazioni ci sono molto d'aiuto. Grazie in anticipo!

 

Parliamo dei bug che ci impediscono di accedere al gioco, come ad esempio "code:net"?

"Code:net" è un messaggio d'errore generico che appare quando la connessione del gioco con il server è scaduta. Il problema può essere causato da molteplici fattori, che riguardano sia noi che voi. A dire il vero, abbiamo scoperto che alcuni dei bug code:net più seri (e anche quelli come code:leaf ecc.) potrebbero avere più a che fare con i servizi di Respawn che supportano il gioco.

Per limitare i bug code:net abbiamo adottato una serie di misure, e molti giocatori riescono a risolvere il problema dopo aver contattato il team dell'assistenza. Se non riuscite ad accedere al gioco e continuate a vedere messaggi code:net e simili, vi preghiamo di inoltrare una segnalazione tramite il sito di Aiuto EA.

Poiché code:net è un messaggio generico, potrebbe indicare una moltitudine di problemi diversi. Nelle ultime settimane siamo riusciti a risolverne alcuni, ma sappiamo di avere ancora molta strada da fare. Inoltrateci le vostre segnalazioni e faremo del nostro meglio per esaminarle il prima possibile. Credeteci, odiamo questo bug tanto quanto voi.

TICKRATE DEI SERVER

Ed ecco il problema più grosso. Vogliamo affrontarlo con la massima trasparenza. Moltissimi giocatori ci hanno fatto domande sul tickrate dei server e chiesto perché non passiamo da 20 Hz a un valore più alto come altri sparatutto online. 

Abbiamo spiegato in che modo il tickrate influenza la frequenza di aggiornamento generale di quello che vedete sullo schermo, perciò questa è una domanda più che valida. Tuttavia, confrontare il tickrate di due giochi diversi è più difficile di quanto si pensi. Proviamo a spiegare perché. 

Il tickrate di un server è il numero di simulazioni che quello specifico server elabora al secondo. Si tratta di un numero fisso (maggiori informazioni nella sezione dedicata alla lentezza dei server). Apex si serve di un modello di riproduzione basato sulle istantanee. Ciò vuol dire che alla fine di ogni tick, il server salva lo stato del mondo e lo replica su tutti i client. Sono comprese moltissime informazioni che garantiscono al design delle armi, delle mappe e delle leggende la massima precisione. 

Per avere successo in Apex Legends è necessario prestare attenzione a una moltitudine di informazioni sparse in giro per la mappa. Le abilità tattiche usate, l'attivazione delle abilità passive e Ultimate, le capsule assistenza in arrivo, le squadre che entrano nell'area d'azione del drone di Crypto e così via. Non vogliamo che ai giocatori sfugga nessun dettaglio. I nostri progettisti sono in grado di creare strumenti tali da fornire un'ampia visione d'insieme. Molti giochi non elaborano stati del mondo completi a ogni tick, perciò confrontare due giochi diversi in base a un singolo elemento, come ad esempio gli hertz, può essere fuorviante. 

La domanda è: cosa succede esattamente a ogni tick? Vogliamo che lo stato del mondo sia il più preciso possibile, ed è per questo che i nostri server registrano lo stato del mondo nella sua interezza a ogni tick. Se non lo facessimo, probabilmente alleggeriremmo il carico sulle CPU dei nostri server, ma allo stesso tempo la precisione delle simulazioni ne risentirebbe. Non è un rischio che vogliamo correre. 

In parole povere: più alto è il tickrate, più alta è la banda inviata a tutti i giocatori. Se passassimo da un server da 20 Hz a uno da 60 Hz, dovremmo triplicare la banda del gioco. Oggi Apex Legends consuma intorno ai 60 kb/s all'inizio delle partite. Un server da 60 Hz consumerebbe 180 kb/s. Forse può non sembrare eccessivo, ma in realtà la differenza non è trascurabile e cerchiamo sempre nuovi modi di ridurre la banda richiesta. 

Ma cosa cambierebbe se la banda fosse un po' più alta? Per i giochi, mantenere bassa la banda è molto più critico che per i video in streaming, ad esempio. Per le applicazioni a banda larga (streaming, download ecc.), per nascondere eventuali sbalzi di velocità basta mettere tutto in pausa per facilitare il caricamento, abbassare la qualità dello streaming e così via. Probabilmente il download non vi mostrerà gli sbalzi e a voi non importerà se la velocità varia di qualche millisecondo. 

I giochi non hanno questo lusso. Persino saltare un paio di intervalli da 50 ms può iniziare a dare problemi. Saltarne degli altri potrebbe innescare una spirale che vi obbligherebbe a ricevere degli aggiornamenti sempre più pesanti per compensare. E non avreste altra scelta, perché il client ha bisogno di condizioni perfette per mantenere la massima precisione.

L'esempio riportato qui sopra spiega perché confrontare i tickrate di giochi diversi può essere difficile. Il motivo è che le informazioni contenute in ogni tick variano. E c'è anche un altro problema: i limiti di input che i server possono ricevere e inviare non sono sempre uguali, anche quando condividono lo stesso tickrate. Nello specifico, se un gioco gira a 60 Hz, il client può solo inviare input di 60 Hz. Se la frequenza dei fotogrammi è di 60 FPS, allora non riscontrerete problemi. Ma se la frequenza dei fotogrammi del client è di 120, allora perderete la metà degli input. Questo non succede su Apex Legends. La frequenza di input variabile viene elaborata senza problemi (nota: più alta è la frequenza dei fotogrammi in Apex, maggiore sarà il consumo della banda).

Bene. Abbiamo appena parlato dei potenziali svantaggi dell'aumento del tickrate per i server. Ma quali sarebbero i vantaggi se passassimo da 20 Hz a 60 Hz, ad esempio? Andiamo, Respawn! Non avrebbe senso triplicare la velocità e la qualità dei server? Fatelo e basta!

In base ai dati raccolti, l'esperienza di gioco non cambierebbe in modo significativo e vogliamo spiegarvi perché. 

Ipotizziamo che in media abbiate 50 ms di ping o latenza. Il ping misura la velocità di un "viaggio" completo tra il vostro PC e il server. In assenza di altri problemi, come sbalzi di latenza o lentezza dell'hardware (ad es. i dispositivi video che introducono un ritardo di 20-50 ms), il server riceverà da parte vostra un input di 25 ms (mezzo ping) dopo che avrete premuto un tasto o mosso il mouse. 

Dal momento che i nostri server vanno a 20 Hz, aggiornano lo stato del mondo ogni 50 ms (1.000 ms in ogni secondo/20 tick al secondo = 50 ms per tick). Quindi, nella peggiore delle ipotesi, i vostri input verranno elaborati dal server dopo 75 ms (25 ms + 50 ms). 

Per capire a cosa corrispondono 75 ms in termini di esperienza di gioco, dovete pensare alla frequenza dei fotogrammi. Qui i calcoli si fanno difficili, ma tenete a mente che in un gioco a 60 FPS ogni fotogramma prende circa 16,67 ms (1.000 ms in ogni secondo/60 fotogrammi al secondo = 16,67 ms per fotogramma). Se i vostri input vengono elaborati dal server dopo 75 ms come nel nostro esempio e il gioco gira a 60 FPS, allora il lag tra il vostro input e il suo impatto sul gioco corrisponde a circa 5 fotogrammi (75 ms per ogni aggiornamento/16,67 ms per fotogramma = circa 4,5 fotogrammi, da arrotondare a 5 perché non esistono mezzi fotogrammi). 

Facendo gli stessi calcoli per un server a 60 Hz, otterrete 41,67 ms per il ritardo massimo tra l'input e l'elaborazione da parte del server (25 ms di ping + [1.000 ms/60 tick al secondo = 16,67 ms per tick] = 41,67 ms). 

41,67 ms è sicuramente meglio di 75 ms, ma quali sono le conseguenze in termini di frequenza dei fotogrammi? Ipotizziamo ancora una volta che il gioco giri a 60 FPS. Ogni fotogramma prende 16,67 ms, perciò ora il lag tra l'input e il tempo impiegato dal server per riconoscerlo è di circa 3 fotogrammi (41,67 ms per ogni aggiornamento/16,67 ms a fotogramma = circa 2,5 fotogrammi, da arrotondare a 3 perché non esistono mezzi fotogrammi). 

Una volta eseguiti i calcoli vedrete che i server da 20 Hz presentano un ritardo di 5 fotogrammi, che scende a 3 per quelli da 60 Hz. Quindi, dopo aver triplicato i costi in termini di banda e CPU, risparmiereste 2 fotogrammi di latenza nella migliore delle ipotesi. Il vantaggio c'è ma non è significativo, e non risolverebbe i problemi legati al lag (potreste ancora venire colpiti dal fuoco nemico mentre siete nascosti), all'ISP e ai bug (ad es. registrazione dei colpi e server rallentati). 

Il nostro esempio ha esaminato il passaggio da 20 Hz a 60 Hz. Usate gli stessi calcoli per avere un'idea della differenza tra 20 Hz e 30 Hz, o magari anche 40 Hz, e scoprirete che i benefici in termini di frequenza dei fotogrammi sarebbero comunque abbastanza limitati. Per poter notare la differenza sarebbe necessario un aumento drastico del tickrate. Anche se passassimo da 20 Hz a 60 Hz, la differenza percepita sarebbe come quella che intercorre tra 58 e 60 FPS. Certo, la differenza c'è, ma noi crediamo che non sia tale da portare le modiche al tickrate in cima alla nostra lista delle priorità.

CONCLUSIONI

Vogliamo concludere questo post prendendo atto di una cosa: sappiamo quanto possa essere reale la frustrazione causata dai problemi del gioco online. Quando si ha a che fare con il lag, la mancata registrazione dei colpi e la lentezza dei server, può essere difficile. Specialmente quando cercate di avanzare in Classificata, state giocando delle partite importanti o magari più semplicemente vi va di trascorrere una serata all'insegna del relax. 

Quando parliamo di problemi online e iniziamo a spiegare come funzionano i nostri sistemi o esprimiamo il nostro punto di vista sulla compensazione del lag e del tickrate, può essere molto frustrante per quei giocatori che vorrebbero solo veder migliorare il gioco. Se state riscontrando bug che risultano nell'arresto del server, problemi relativi alla latenza, all'account o a qualsiasi altra cosa, probabilmente l'ultima cosa che volete fare è sapere cosa non faremo. 

Anche noi vogliamo che il gioco migliori. Se l'esperienza di gioco migliora, il numero di giocatori sale e noi possiamo continuare a fare il lavoro che amiamo. 

Ecco perché in questo post abbiamo condiviso con voi i miglioramenti che intendiamo implementare in futuro, tra cui:

  • Un sistema di segnalazione in tempo reale per identificare i problemi e agire più rapidamente
  • Degli strumenti che ci aiutino a identificare i server per rimuovere e sostituire quelli più problematici
  • Una maggiore attenzione ai server lenti (rimuovere quelli problematici è un passo avanti, ma l'obiettivo è quello di limitare drasticamente la sostituzione con delle modifiche ai codici)
  • Una riduzione della latenza con una migliore ottimizzazione delle nuove funzionalità
  • La risoluzione dei bug relativi alla mancata registrazione dei colpi e la creazione di strumenti di rilevamento automatizzati che ci aiuteranno a non introdurne di nuovi per errore

Ma vogliamo che sappiate che queste non sono le uniche soluzioni a cui stiamo lavorando. Stiamo collaborando insieme ai nostri partner, dalla gestione dei server a quella degli ISP, per migliorare l'infrastruttura online, con l'obiettivo di vedere infine una riduzione delle segnalazioni da parte dei giocatori e un'esperienza di gioco complessivamente migliore. Ci piacerebbe tornare sull'argomento in un altro post in futuro, quando inizieremo a vedere i frutti del nostro lavoro. 

La nostra speranza è che, se miglioreremo la comunicazione con voi giocatori, inizieremo a capirci meglio riguardo alle cause dei problemi che abbiamo di fronte. È questo che ci ha spinto a scrivere questo post. Speriamo vi abbia aiutato a comprendere i nostri ragionamenti e il lato più tecnico della gestione di uno sparatutto online. Infine, ci auguriamo che questo sia l'inizio di un nuovo dialogo.

Grazie per l'attenzione! 

- Samy (Ricklesauceur) e il team di Apex Legends


Gioca ora ad Apex Legends gratuitamente* su PlayStation 4, PlayStation 5, Xbox One, Xbox Series X|S, Nintendo Switch e PC tramite Origin e Steam.

Segui Apex Legends su Twitter e Instagram, iscriviti al nostro canale YouTube e dai un'occhiata ai forum.

Iscriviti oggi alla nostra newsletter per ricevere via e-mail aggiornamenti, novità, contenuti dietro le quinte, offerte esclusive e molto altro su Apex Legends (sono incluse altre novità su notizie, prodotti, eventi e promozioni di EA).

Questo annuncio può subire variazioni in base al feedback della community e al processo interno di sviluppo ed evoluzione dei nostri servizi e contenuti live. Ci impegniamo a mantenere la nostra community più informata possibile. Tutti gli aggiornamenti sui servizi online di EA sono pubblicati sul sito https://www.ea.com/it-it/service-updates.

*Potrebbero essere richiesti l'account e l'abbonamento (venduto separatamente) della relativa piattaforma. Sono necessari una connessione a Internet stabile e un account EA. Si applicano restrizioni d'età. Include acquisti in gioco.

Notizie collegate

Apex Legends™: Conquista - Note sulla patch

Apex Legends
10-feb-2025
Potenziamenti per le leggende e le armi, vantaggi per la classe Assalto e altro ancora: preparati per l'arrivo della nuova stagione!

Tutte le novità di Apex Legends™: Conquista

Apex Legends
6-feb-2025
Uno sguardo agli aggiornamenti di gioco di Conquista, tra cui i Commissari creatori, gli arsenali, le modifiche al meta e altro ancora.

Apex Legends™: un aggiornamento sull'anti-cheat e il matchmaking

Apex Legends
5-feb-2025
Iniziamo il 2025 con un aggiornamento di sviluppo sull'anti-cheat e il matchmaking.