Come proteggere il tuo sparatutto online in tempo reale da potenziali robot


14

Sto cercando di creare uno sparatutto top down multiplayer. Mentre ho letto su diversi argomenti, posso vederli, ho delle vere sfide da affrontare, ma sono pronto per questo.

Una cosa che non riesco a capire è come dovrei proteggere il gioco dalle persone che cercano di creare robot?

Quello che intendo è, per quanto ho capito, è impossibile proteggere il traffico di rete in modo che i giocatori non siano in grado di creare programmi che ascoltino ciò che sta accadendo e lo capiscano.

Quindi ciò che mi preoccupa è che le persone possono creare robot che ascoltano la posizione corrente dei giocatori rivali e inviare comunicazioni che imitano come se il giocatore stesse sparando nella posizione "perfetta" per vincere quella partita.

Quindi che tipo di tecniche vengono utilizzate per proteggere i giochi in tempo reale da tali robot?

Inoltre, vorrei menzionare che ho provato a cercare discussioni (poiché sembra qualcosa con cui molte persone lottano), ma non sono riuscito a trovare nulla al riguardo in particolare, solo come parte di domande più ampie sulla rete nei giochi in tempo reale . Se avessi dovuto sembrare più duro, sentiti libero di mettermi al mio posto :)


Punkbuster, hehe .. C'è una ragione per cui esiste un'app di terze parti che rileva app e modifiche di terze parti :)
James

Perché sei preoccupato se le persone creano robot? Forse puoi aggirare il problema, quindi non è un problema.
Beska,

@James Punkbuster è orribile. Sono molti altri che hanno avuto brutte esperienze provando a giocare a nuovi giochi quando escono. Essere costantemente preso a calci per qualche errore punkbuster, non divertente.
Attaccando

@Beska: bello come sembra, ho bisogno di alcuni convincenti seri che i robot non distruggeranno il gioco per i giocatori non-bot. Sono sicuro che un gioco potrebbe essere progettato in cui i robot non rovinerebbero l'esperienza. Sono abbastanza certo che per la maggior parte dei giochi multiplayer online non è banale rendere la meccanica del gioco a prova di bot.
deft_code

@AttackingHobo Tutto ciò che intendevo sottolineare è che ci sono intere aziende che non fanno altro che tentare di trovare una soluzione a questo problema. PunkBuster è solo uno dei software più conosciuti che tenta di farlo, nel bene o nel male :)
James,

Risposte:


8

Esistono due approcci per contrastare i robot. Sono protezione lato client e analisi lato server.

La protezione lato client è l'approccio più ovvio - la forza bruta, in un certo senso. Fai tutti gli sforzi per assicurarti che il client di gioco sia pienamente legittimo, che non sia stato manomesso e che nessun altro programma lo influenzi. Questo è un problema difficile e impossibile da risolvere completamente. Ma molti giochi ci provano e hanno un certo successo con questo metodo. So che esistono soluzioni già pronte per la protezione dei clienti e suggerisco di cercarle. Implementarne uno da soli è un compito scoraggiante.

Oltre ad essere meno efficace al 100%, la protezione lato client ha lo svantaggio di essere estremamente fastidioso per i tuoi giocatori. Di solito implica cose come disabilitare il cambio di attività alt-tab, programmi antivirus, ecc.

L'analisi lato server è meno invadente. In questo approccio, hai del codice server che analizza i modelli nel comportamento dei giocatori. Molto spesso, i robot giocano in modo dimostrabile diverso. Ad esempio, i giocatori umani hanno un tempo variabile tra le azioni (come sparare) e questa volta obbedisce a una distribuzione a campana. I robot primitivi avranno un tempo costante o distribuiti uniformemente su un certo intervallo. Curiosità: usando questo metodo, una volta abbiamo catturato un giocatore con un robot meccanico , un dispositivo intelligente che premeva i pulsanti sulla sua tastiera fisica. Inutile dire che, non quantità di protezione client può prendere quella . Tuttavia, questa analisi non è perfetta. Più robot avanzati inganneranno i tuoi sistemi e più controlli implementerai, più robot avanzati diventerebbero.

Per la migliore protezione, è possibile combinare entrambi questi metodi. La protezione del client renderà più difficile lo sviluppo di bot e l'analisi del server fermerà i bot semplici che sono stati sviluppati rapidamente. Ma qualunque cosa tu faccia, non puoi mai fermare del tutto i robot. Bene, a meno che non invii i tuoi rappresentanti nelle case dei giocatori, per supervisionare il loro gioco e segnalare violazioni. (Il che non è inaudito, a proposito. Ho sicuramente letto una storia sulla compagnia di poker online che manda persone a casa di un giocatore di grande successo, per confermare che stava giocando legittimamente. Ma non riesco a trovarlo ora.)

Ci sono altre due raccomandazioni dubbie per combattere i robot. Uno, crittografa il tuo traffico di rete. Non penso che funzionerà. Con il tuo client nelle mani di un nemico, il traffico può essere e sarà decrittografato ... o il tuo client verrà utilizzato per la crittografia. D'altra parte, la crittografia aggiunge ritardo, e questo è davvero un male per uno "sparatutto in tempo reale". La seconda raccomandazione è "basta progettare il tuo gioco attorno a questo". Mentre questa sembra un'idea sana, devo ancora vedere un singolo gioco che è riuscito a gestirlo.


1
Dubito che tu abbia trovato un ragazzo con un robot meccanico. Era più probabile un robot software che emulasse una tastiera hardware per gli input.
Attaccando

2
No, robot meccanico reale. L'autore ci ha inviato delle foto. Sfortunatamente, sono già stati eliminati dal server (era nel 2007!), Quindi dovrai credermi sulla parola.
Nevermind

Grazie per la risposta. Suppongo che la crittografia potrebbe "alzare un po 'il tiro" e proteggere da molti hacker. Ma una vera crittografia di comunicazione sarebbe pratica in giochi critici in termini di tempo come sparatutto o persino MMO?
Zaky German

Nessuno dei giochi su cui ho lavorato ha utilizzato la crittografia ovunque tranne la sequenza di accesso, quindi non so quanto influisca sul ritardo. Dipende dall'algoritmo di crittografia, immagino.
Nevermind

2

Non mi aspetto che nessuno dei grandi giocatori parli di ciò che fanno per proteggere i loro giochi. Meno le persone sanno cosa stanno facendo, più è difficile per le persone aggirarlo. Penso che parte di ciò che fa Steam sia cercare determinate applicazioni in esecuzione che si trovano in una lista nera.

Personalmente proverei a crittografare e offuscare la comunicazione il più possibile tra le macchine comunicanti, potrebbe valere la pena leggere sul modo in cui https / ssl lavora per ottenere alcune idee. Se gli host generassero una chiave pubblica / privata casuale e inviassero la parte pubblica solo ad altri client, allora qualcosa non sarebbe in grado di intercettare e modificare il contenuto dei pacchetti inviati, anche se si ha accesso al client macchina quindi nulla è completamente sicuro.

Dovrai anche assicurarti che l'exe client non sia manomesso.


1

Progetta il tuo gioco in modo che il lavoro di gruppo e le decisioni intelligenti effettive siano più importanti della capacità di mirare perfettamente. Diventa esponenzialmente più difficile fare robot decenti.


Penso che i giochi che dipendono dal lavoro di squadra e dalla preparazione, e i giochi che dipendono da abilità di contrazione pura abbiano il loro posto. Tuttavia, non credo che nessuno dovrebbe adattare le proprie scelte di progettazione del gioco agli ostacoli tecnici
Zaky German,

@Zaky: una volta ho prototipato un gioco in stile worm in cui durante la morte improvvisa lo schermo si riempiva lentamente di un fluido SPH. Sembrava davvero bello fino a quando il gioco non è morto. Penso che molte decisioni di progettazione del gioco siano influenzate da ostacoli tecnici.
deft_code

@deft_code Intendevo design del gioco come nella meccanica del gioco, non design artistico o grafico
Zaky German

Il mio uso di SPH è tanto una meccanica di gioco quanto la morte acquosa dei vermi. Cambio solo il modo in cui l'acqua interagisce con il gioco.
deft_code

0

E poniti la domanda molto importante se valga la pena. Cheater e botters possono fare 2 cose:

  1. distruggere il gioco per se stessi. Non possono giocare senza il bot, perdono rapidamente interesse e se ne vanno perché non è divertente.
  2. distruggere il gioco per gli altri. Diventano eccessivamente potenti attraverso il loro bot, costando così ai clienti. Questo di solito è accompagnato da un singolo giocatore che controlla più robot dallo stesso computer fisico (o utilizza molti più computer di quanto ci si possa aspettare che un singolo giocatore controlli manualmente).

I due non si escludono a vicenda ovviamente.

Di solito il problema più grande è 3+ (come un essere umano può con l'addestramento usare 2 tastiere o altri dispositivi di input contemporaneamente, ma non di più perché ha solo 2 mani) client dallo stesso indirizzo IP o strettamente correlati (o MAC indirizzi) che agiscono all'unisono diretto, eseguendo comandi entro millisecondi l'uno dall'altro. Quindi, se rilevi che 5 client che provengono dallo stesso indirizzo IP danno tutti comandi ad una frequenza anormalmente elevata e ad una coordinazione anormalmente stretta, probabilmente hai trovato il tuo botter. Di solito questo sarà più dannoso negli scenari pvp in cui questo esercito di bot può dominare un impegno contro un numero simile di toon controllati dall'uomo a causa della sua maggiore coordinazione e velocità. In scenari pve, in genere c'è un danno limitato al gioco (tranne per il fatto che consente a una persona di addestrare più toon ad alti livelli più rapidamente,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.