Phillip ha già fornito un'ottima panoramica di come funzionano la maggior parte dei robot, ma volevo solo coprire le cose in modo un po 'più dettagliato, dato che ho un po' di esperienza personale che si sviluppa su o per tutti i tipi di robot che ha coperto.
In Runescape, c'era un grande progetto (RSBot) che copiava il contenuto della memoria dal client Runescape nella sua memoria locale, dove poteva quindi visualizzare l'intero stato del gioco senza il rischio che il client prendesse piede. Richiedeva un po 'di reverse engineering per determinare dove cercare in memoria per trovare i puntatori ai dati, ma una volta che lo avevano fatto, hanno esposto un'API per sfruttare le informazioni. Saprebbe esattamente cosa si trovava nel mondo ottenendo le coordinate di un oggetto e poi trasformandole con la matrice di trasformazione della telecamera per ottenere la posizione sullo schermo. Le maschere di hit erano anche leggibili, quindi era banale determinare esattamente in quale intervallo spostare il mouse per ottenere il risultato desiderato.
Il bot ha fornito una serie di informazioni di debug, come le annotazioni che indicavano allo sviluppatore quali coordinate del riquadro sono dove, quale ID ha questo oggetto, quale ID appartiene a un determinato elemento, ecc. Queste informazioni potrebbero quindi essere utilizzate per creare robot. Il processo effettivo di creazione degli script dei bot era in realtà abbastanza semplice. Il framework forniva molte funzioni di utilità, come move_to(world_coordinates)
o mouse_move(x,y)
che avrebbero eseguito le azioni specificate in un modo abbastanza credibile (spostando il mouse lungo una spline casuale, spostandosi ripetutamente sia sulla minimappa che sullo schermo, e così via)
Anche in Runescape, hai la possibilità di ridurre drasticamente la qualità della grafica. In realtà è stato abbastanza facile creare alcuni tipi di robot filmando lo schermo e applicando alcuni concetti di base di visione artificiale al fine di costruire un modello del mondo. Ho creato sia una maledizione che una fusione utilizzando questa tecnica, che ha funzionato abbastanza bene. Prenderebbe semplicemente il fotogramma, aumenterebbe la saturazione il più possibile e quindi proverebbe a estrarre i pattern da esso che potrebbe quindi generare una mappa di probabilità per le zone di clic.
Nel caso del robot maledetto, il bersaglio era un demone minore, che è solo un'enorme cosa rossa, che è banale da trovare. Nel caso del robot da fusione, cercherebbe un piccolo trapezio arancione circondato dal grigio, e quella sarebbe la fornace. Proverebbe anche a trovare una grande forma a "L" grigio chiaro, che sarebbe la scrivania della banca. Ciò è stato appena fatto con il ridimensionamento e l'euristica di base. Potrebbe anche orientarsi con la pratica bussola accanto alla minimappa, quindi orientare la telecamera in una posizione più affidabile per trovare gli oggetti target.
In vari giochi Nexon, i server si fidano molto dei client. Ho abusato di questo in Maplestory modificando le mappe per rimuovere i pericoli o aggiungere orditi in modo che un robot non debba essere altrettanto sofisticato. Vorrei anche monitorare il traffico da e verso il server al fine di costruire un modello del mondo che possa quindi essere utilizzato per trovare e uccidere rapidamente i mostri.
Una volta capito che in realtà non giocavo più agli MMO e li ho semplicemente automatizzati, ho deciso di smettere del tutto di giocare. Se non fossi così preoccupato di espormi legalmente, avrei probabilmente potuto uccidere vendendo robot MMO, ma non volevo davvero essere denunciato. Questo è il motivo per cui passo il mio tempo a programmare veramente in questi giorni!