MMO.it

MMO-Perle: Come si duplicavano gli oggetti in Diablo 2, Ultima Online e non solo

MMO-Perle: Come si duplicavano gli oggetti in Diablo 2, Ultima Online e non solo

Ecco una nuova puntata di MMO-Perle, la nostra rubrica dedicata ai fatti più curiosi, divertenti o interessanti dei titoli multiplayer online.

A chiunque nel corso delle sue sessioni di gioco online sarà capitato di incontrare, ogni tanto, dei cheater.
I bari nel multiplayer si manifestano sotto le più diverse forme. Negli sparatutto, per esempio, chi trucca ha degli aimbot per mirare in automatico, degli autofire per sparare senza dover badare al rinculo, dei wallhack per vedere attraverso i muri. Negli strategici sono noti i maphack più disparati che rimuovono la nebbia di guerra, così come nei MOBA, dove raramente si rivelano perfino dei cooldown-remover che rimuovono i tempi morti delle abilità. E negli MMO?

Truccare nei giochi a giocatore singolo è semplice: le statistiche sono spesso manovrabili con un semplice programma come Cheat Engine, ed esistono i più disparati cheat che permettono di ottenere più o meno ciò che si vuole. Tutto cambia, ovviamente, quando si tratta di giocare online.

Il server da cui vengono ricevuti i dati infatti non ammette discrepanze tra ciò che viene dal client del giocatore e ciò che invece il server ha calcolato. Nei casi in cui una discrepanza effettivamente avviene, prevale sempre il dato del server.
Questo elimina alla radice la possibilità di truccare così come si farebbe in un gioco a giocatore singolo. Non solo: a volte, ma non solo per una questione di anti-cheat, la prevalenza dei dati del server crea problemi come il desync di Diablo o Path of Exile, oppure semplici problemi di disconnessione e di latenza, oppure di teletrasporto non voluto dal giocatore.

Ma che cosa si potrebbe fare se si trovasse il modo di far credere al server che i dati truccati provenienti dal giocatore fossero effettivamente quelli veri? Il trucco sarebbe servito.

Ed è ciò che accadde e talvolta continua ad accadere nei giochi di ruolo online, in prevalenza per ciò che riguarda il cosiddetto “duping” o duplicazione degli oggetti.

Fin dagli albori del genere, infatti, uno dei più comuni cheat che venivano praticati online consiste nel duplicare gli oggetti, spesso rari, così da averne più copie per poterli rivendere o equipaggiare. Le conseguenze di un tale trucco, soprattutto se molto diffuso, sono deleterie per l’economia del gioco, dal momento che vengono immessi molti più oggetti di quanto gli sviluppatori avessero previsto, col risultato di inflazionare il mercato, contemporaneamente aumentando a dismisura la quantità di soldi richiesti per qualsiasi cosa e al contempo riducendo il valore relativo degli oggetti più rari. Insomma, un disastro.

Andiamo a vedere un paio di giochi online in cui si diffuse il famigerato fenomeno del duping.

 

Il duping in Diablo 2

duplicare gli oggetti diablo 2 ultima online pokémonUno dei primi fu senz’altro Diablo 2. Nel capolavoro del 2001 di Blizzard North (tutt’oggi consigliatissimo) si giocava spesso e volentieri online su Battle.net, e lì ci si collegava con un server centrale i cui dati avrebbero dovuto sempre, com’è logico, avere la precedenza su quelli provenienti dal client del giocatore.

Tuttavia alcuni intraprendenti giocatori, già probabilmente memori di quanto accadde in Ultima Online (di cui parleremo tra poco), riuscirono a scovare un metodo per duplicare gli oggetti, truccando il server a pensare che effettivamente esistessero due copie di un unico item.

Il metodo di duping avveniva nel seguente modo:

1) Prima di tutto venivano fatti entrare in una partita più giocatori possibili, fino al massimo di otto. Più erano, più era facile che la duplicazione dell’oggetto andasse a buon fine.
Nota bene: se vi sembra esagerato assoldare sette ulteriori persone per duplicare un semplice oggetto si pensi al fatto che alcuni pezzi di equipaggiamento, in tutti i giochi, a patto che siano scambiabili (e in Diablo 2 lo erano) assumono dei valori fuori di testa; in più, era possibile per ciascuno dei partecipanti “provare” la duplicazione, anche se a loro rischio. I gruppi più organizzati facevano proprio dei turni in cui ognuno, di volta in volta, duplicava un proprio oggetto.

2) Serviva ora un metodo per creare un’enorme latenza nel server. Farlo laggare, per dirla con parole semplici. Il metodo più semplice stava nel riempire il mondo di gioco di effetti, danni, mostri: insomma, fare casino.
Questo veniva realizzato, per esempio, spammando abilità del necromante, evocando sgherri a più non posso e muri di ossa da tutte le parti. La parte complicata di questa faccenda era che il server non doveva mai essere caricato al punto di crashare, ma soltanto al punto di rallentarsi moltissimo.
Quel che i giocatori avevano scoperto, infatti, era che il server salvava lo stato dei personaggi in ordine, e non contemporaneamente: prima veniva salvato il personaggio numero 1, poi il numero 2, poi il 3 e così via, col risultato che il personaggio numero 8 era l’ultimo il cui stato veniva salvato sul server. Se il server laggava, era perchè il suo processore era sovraccaricato di calcoli: questo significava che il tempo di salvataggio dei personaggi, normalmente velocissimo, diventava estremamente lento e prevedibile.

3) Durante questo periodo di estrema lag, il personaggio numero 8 lasciava cadere l’oggetto che doveva venire duplicato: egli sarebbe stato l’ultimo personaggio del quale il server si sarebbe accorto ed il cui stato avrebbe salvato. Il personaggio numero 1 lo raccoglieva all’istante e subito si disconnetteva legittimamente.

4) Il più velocemente possibile, in quell’attimo, uno dei restanti 7 personaggi provocava un’azione in grado di far crashare definitivamente il server, spesso sovraccaricandolo oltre ogni limite.

Se il metodo funzionava alla perfezione, al successivo login l’oggetto era stato duplicato e si trovava, contemporaneamente, sia nell’inventario del giocatore #1 sia in quello del giocatore #8. Perchè?
Perchè soltanto il giocatore #1, che si era disconnesso legittimamente, aveva fatto sì che il server avesse salvato il suo inventario, che conteneva l’oggetto lasciato cadere dal giocatore #8.
Poichè la latenza era enorme, il processo per salvare lo stato degli altri giocatori era lentissimo, dunque, riuscendo a far crashare il server prima che venisse salvato l’inventario del giocatore #8, questo stesso server centrale continuava a pensare che, al successivo login, il giocatore #8 continuasse ad avere l’oggetto che in realtà, durante la lag terribile ed il successivo crash, aveva lasciato cadere perchè venisse preso dal giocatore #1. Risultato: oggetto sdoppiato e tutti felici (tranne Blizzard).

 

duplicare gli oggetti diablo 2 ultima online pokémon

Il duping in Ultima Online

Su Ultima Online, che a noi di MMO.it piace spesso citare come esempio leggendario di primo vero MMORPG sandbox, il duping degli oggetti avveniva in modo molto simile. Alcuni giocatori affermano di essersi fatti migliaia di dollari dalla vendita di oggetti dupati su Ultima Online, e hanno svelato il metodo attraverso il quale ciò è stato possibile.

Anche qui, come in Diablo, bisognava sfruttare una discrepanza tra il salvataggio del server e i dati in locale, e di nuovo veniva utilizzato per l’occasione un momento di estrema lag.

In UO per creare questa discrepanza veniva chiuso velocemente il gioco premendo ALT+F4 proprio nel momento in cui il server caricava la zona successiva. Su UO, infatti, il mondo era diviso in grandi quadrati liberamente esplorabili. Se si superava il confine di uno di questi quadrati, il server dava al giocatore le informazioni sul successivo quadratone di mondo, e ovviamente ciò creava una certa latenza in esso, dovendo trasferirsi l’informazione da server a client.

Con il crash “comandato”, il server non era in grado di salvare lo stato del giocatore, ma soltanto quello del mondo. Se quindi si lasciava cadere un oggetto prima di provocare il crash, al successivo login l’oggetto era sia per terra (perchè lo stato del mondo era salvato) sia nell’inventario del giocatore (perchè lo stato del giocatore NON era stato salvato).

 

duplicare gli oggetti diablo 2 ultima online pokémon

Ma se Ultima Online era un MMORPG che agli albori di internet tentava (spesso a fatica) di gestire migliaia di giocatori connessi contemporaneamente, ciò non toglie che lo stesso potesse succedere anche con giochi dall’infrastruttura molto più semplice.

 

Il duping… nei Pokémon

Concludiamo questa piccola carrellata storica con un simpatico siparietto che molti avranno presente: queste stesse tattiche e il principio di discrepanza client/server è lo stesso che permise a noi da bambini di duplicare i Pokémon negli omonimi giochi Nintendo per il Game Boy.

Sicuramente infatti molti si ricordano gli scambi col cavo dei Pokémon, e il fatto che per duplicarli si dovesse spegnere il Game Boy o disconnettere il cavo proprio in determinati momenti, leggermente diversi a seconda della versione di Pokémon giocata, ma comunque durante l’atto di trasferimento del mostro.

duplicare gli oggetti diablo 2 ultima online pokémon

In questo caso il Pokémon è il nostro “item” e la funzione del server, che di fatto non c’è, è svolta da entrambe le console (perchè ovviamente il multigiocatore, nei vecchi Pokémon, non era massivo). Di fatto una delle due console salva il progresso del Pokémon trasferito e l’altra quella del Pokémon ricevuto.

Se si riesce a spegnere la console da cui proviene il Pokémon trasferito prima che il trasferimento venga salvato, ecco che al successivo riavvio il Pokémon sarà ancora nel Pokédex. Chi riceve non deve tendenzialmente prodigarsi in manovre particolari, ma solo accertarsi di aver ricevuto ciò che l’altro ha mandato prima che quest’ultimo spenga la sua console.

 

Insomma, quale che sia l’MMO o il titolo online, nel gaming multiplayer la vulnerabilità deriva sempre da una discrepanza tra il calcolo del server e quello del client, e il cheater professionista è colui che è in grado di sfruttarla a proprio vantaggio.

Tutto si risolve, ancora oggi, nel truccare il server a credere qualcosa di diverso da ciò che in realtà è, e in tal modo invertire la regola generale delle connessioni client-server dando la precedenza ai dati provenienti dal client, seppure, come abbiamo visto, in modo indiretto.

 

 

Placeholder for advertising