Mario Kart è stato un punto fermo della mia infanzia: io e i miei amici passavamo ore dopo la scuola nei panni di Mario, Luigi e altri personaggi dell’universo Nintendo, correndo su piste da cartone animato e lanciandoci banane pixelate a vicenda. Una cosa che ha sempre irritato il nostro piccolo gruppo di aspiranti velocisti era la questione di quale personaggio fosse migliore. Alcuni giuravano per lo scattante Yoshi, altri sostenevano che il grande e pesante Bowser fosse l’opzione migliore. All’epoca c’erano solo otto opzioni tra cui scegliere, ma con l’attuale iterazione del franchise di Mario Kart la questione è ancora più complicata perché è possibile selezionare diversi kart e gomme da abbinare al proprio personaggio. I miei riflessi su Mario Kart non sono più quelli di una volta, ma sono più bravo nella scienza dei dati di quando ero in quarta elementare, quindi in questo post userò i dati per rispondere finalmente alla domanda “Chi è il miglior personaggio di Mario Kart?”
Questa è una domanda difficile perché ci sono tonnellate di potenziali configurazioni di personaggi / kart / gomme ora e tutti hanno statistiche molto diverse su una serie di attributi. In generale, non è possibile ottimizzare su più dimensioni contemporaneamente, tuttavia alcune configurazioni sono innegabilmente peggiori di altre. La domanda per un aspirante campione di Mario Kart al giorno d’oggi è “Come posso scegliere una combinazione personaggio / kart / gomme che sia in qualche modo ottimale, anche se non c’è un’opzione ‘migliore’? Per rispondere a questa domanda ci rivolgiamo a uno dei compatrioti di Mario, l’economista italiano del diciannovesimo secolo Vilfredo Pareto che ha introdotto il concetto di efficienza di Pareto e la relativa frontiera di Pareto.
Il concetto di efficienza di Pareto si applica a situazioni in cui c’è un pool finito di risorse e molteplici risultati concorrenti che dipendono da come queste risorse vengono allocate. Le allocazioni “Pareto efficienti” sono quelle in cui è impossibile migliorare un risultato senza peggiorarne un altro. Questo è più facilmente spiegabile con un’immagine (per gentile concessione di Wikipedia).
Ogni cerchio è una potenziale assegnazione di risorse, che nel nostro caso significa una distribuzione di punti statistici tra i diversi attributi come peso, maneggevolezza e trazione (i personaggi in Mario Kart hanno circa lo stesso numero di punti statistici totali, e differiscono solo nella loro distribuzione). La posizione di ogni cerchio rappresenta il risultato di quell’assegnazione su due dimensioni concorrenti, per esempio velocità e accelerazione. Le assegnazioni in rosso si trovano sulla frontiera di Pareto: per ciascuna di queste assegnazioni, un miglioramento di un risultato richiede una diminuzione dell’altro. Le allocazioni in grigio non sono Pareto efficienti perché è possibile migliorare entrambi i risultati con una diversa allocazione delle risorse. La velocità e l’accelerazione sono generalmente i due attributi più importanti in Mario Kart, quindi l’obiettivo di questa analisi è quello di identificare le configurazioni personaggio / kart / gomma che si trovano sulla frontiera di Pareto per la velocità e l’accelerazione.
Analisi dei dati esplorativa
Iniziamo esaminando le statistiche di ogni personaggio, kart e gomma indipendentemente utilizzando alcuni dati compilati dai fan. Una stranezza particolare di Mario Kart è che mentre ci sono un paio di dozzine di personaggi, molti di loro hanno statistiche identiche. Da qui in poi, mi riferirò alla classe del personaggio (o del kart, o dello pneumatico) con il nome di uno dei suoi membri. Per esempio, nella heatmap qui sotto la riga etichettata “Peach” descrive anche le statistiche di Daisy e Yoshi. Le classi complete sono elencate alla fine del post, nel caso tu voglia vedere dove si trova il tuo personaggio preferito.
Ci sono sette classi di personaggi. Diamo un’occhiata a come si confrontano le loro statistiche.
La tendenza più evidente è il trade-tra velocità e accelerazione: I personaggi pesanti hanno una buona velocità ma una scarsa accelerazione, mentre i personaggi leggeri hanno un’accelerazione scattante ma una bassa velocità massima. Ci sono variazioni anche nelle altre statistiche, ma in larga misura, la velocità e l’accelerazione dominano le prestazioni di un particolare set up, quindi ignoreremo il resto delle statistiche.
Kart e gomme modificano le statistiche di base dei personaggi: gli attributi della configurazione finale sono una somma delle statistiche del personaggio e dei modificatori di kart / gomme. Come per i personaggi, ci sono decine di kart e gomme, ma solo poche categorie con statistiche diverse.
Le tendenze qui sono meno evidenti, ma sono generalmente d’accordo con quello che abbiamo visto nelle statistiche dei personaggi: i miglioramenti nella velocità vanno a scapito dell’accelerazione, e viceversa.
Il nostro obiettivo è quello di trovare tutte le configurazioni che hanno una combinazione ottimale di velocità e accelerazione, quindi il prossimo passo è quello di calcolare le statistiche per ogni combinazione unica (personaggio, kart, pneumatico).
Trovare le configurazioni ottimali
Con un po’ di Python possiamo enumerare tutte le combinazioni personaggio / kart / pneumatico e calcolare i loro attributi sommando i valori nelle figure precedenti. Dotati delle statistiche per ogni possibile combinazione, possiamo tracciare la velocità contro l’accelerazione di ogni possibile configurazione, e identificare quelle che si trovano sulla frontiera di Pareto.
Secondo il grafico precedente, le configurazioni ottimali costituiscono un sottoinsieme abbastanza piccolo del totale delle configurazioni possibili. Possiamo quantificare questo contando tutte le diverse combinazioni (si noti che alcune combinazioni si sovrappongono nella figura). Solo per divertimento, contiamo anche le combinazioni possibili includendo tutti i personaggi, i kart e le gomme con statistiche identiche.
Combinazioni possibili: 149760
Combinazioni di statistiche uniche: 294
Combinazioni ottimali: 15
Le configurazioni ottimali costituiscono solo il 5% delle potenziali configurazioni uniche! Diamo un’occhiata a come sono queste configurazioni ottimali.
A meno che tu non stia andando all-in sull’accelerazione, sembra che un personaggio pesante sia la strada da seguire; le due classi di personaggi più pesanti (Wario e Donkey Kong) rappresentano 11/15 delle configurazioni Pareto-ottimali.
Possiamo anche guardare le altre statistiche principali per ciascuna di queste configurazioni.
Ecco, se la velocità e l’accelerazione sono le vostre principali preoccupazioni, allora una di queste 15 configurazioni è la scelta migliore.
Esplorare tutte le configurazioni
A volte però una configurazione ottimale non è quello che state cercando (ad esempio, perché il vostro coinquilino ha minacciato di smettere di giocare se non ci fosse una sorta di handicap, per scegliere un esempio casuale). In questo caso, possiamo esplorare tutte le possibili configurazioni con un rapido grafico interattivo bokeh.
Alcune osservazioni:
- I personaggi pesanti sono più versatili di quelli leggeri. Mentre le possibili configurazioni di Wario possono raggiungere circa il 77% dell’accelerazione massima, Baby Mario può arrivare solo al 50% della velocità massima.
- Metal Mario / Pink Gold Peach sono gli unici personaggi che non hanno configurazioni sulla frontiera di Pareto.
- Il Badwagon è davvero cattivo. Quasi tutte le configurazioni sulla ‘frontiera anti-Pareto’ (cioè le peggiori combinazioni possibili) coinvolgono kart della classe Badwagon.
Se volete vedere il codice dietro questa analisi potete trovarlo qui. E infine, nel caso tu abbia un particolare attaccamento a uno dei personaggi (o kart/gomme) puoi cercare a quale classe lui/lei/esso appartiene qui sotto.