Phillip gab bereits einen großartigen Überblick darüber, wie die meisten Bots funktionieren, aber ich wollte die Dinge nur etwas detaillierter behandeln, da ich ein bisschen persönliche Erfahrung in der Entwicklung von oder für alle Arten von Bots habe, die er behandelt hat.
In Runescape gab es ein großes Projekt (RSBot), das den Inhalt des Speichers vom Runescape-Client in den lokalen Speicher kopierte und dort den gesamten Status des Spiels anzeigen konnte, ohne dass das Risiko bestand, dass der Client darauf stieß. Es war ein bisschen Reverse Engineering erforderlich, um festzustellen, wo im Speicher gesucht werden musste, um die Zeiger auf die Daten zu finden. Nachdem dies geschehen war, wurde eine API verfügbar gemacht, um die Informationen zu nutzen. Es würde genau wissen, wo auf der Welt sich was befindet, indem es die Koordinaten eines Objekts abruft und sie dann mit der Kameratransformationsmatrix transformiert, um die Position auf dem Bildschirm zu ermitteln. Die Treffer-Masken waren auch lesbar, so dass es trivial war, genau zu bestimmen, in welchen Bereich die Maus bewegt werden musste, um das gewünschte Ergebnis zu erzielen.
Der Bot lieferte eine Reihe von Debugging-Informationen, z. B. Anmerkungen, die dem Entwickler mitteilten, welche Kachelkoordinaten sich an welcher Stelle befinden, welche ID dieses Objekt hat, welche ID zu einem bestimmten Element gehört usw. Diese Informationen könnten dann zur Erstellung von Bots verwendet werden. Der eigentliche Prozess der Erstellung der Bot-Skripte war eigentlich recht einfach. Das Framework bereitgestellt viele Nutzenfunktionen, wie zum Beispiel move_to(world_coordinates)
oder mouse_move(x,y)
die die spezifizierten Aktionen in einer etwas glaubhafte Weise (Bewegen der Maus entlang einer zufälligen Spline, wiederholt sowohl über den Bildschirm bewegen und Minikarte , usw.) durchführen würde
Auch in Runescape haben Sie die Möglichkeit, die Grafikqualität drastisch zu reduzieren. Es war eigentlich ziemlich einfach, bestimmte Arten von Bots zu erstellen, indem man den Bildschirm filmte und einige grundlegende Computer-Vision-Konzepte anwendete, um ein Modell der Welt zu konstruieren. Mit dieser Technik habe ich sowohl einen Fluchbot als auch einen Schmelzbot hergestellt, die beide recht gut funktionierten. Es würde nur den Frame dauern, die Sättigung so weit wie möglich erhöhen und dann versuchen, Muster daraus zu extrahieren, die dann eine Wahrscheinlichkeitskarte für Klickzonen erzeugen könnten.
Im Falle des Fluch-Bots war das Ziel ein kleinerer Dämon, was nur ein riesiges rotes Ding ist, das trivial zu finden ist. Im Falle des Schmelzbots würde es nach einem kleinen orangefarbenen Trapez aussehen, das von Grau umgeben ist, und das wäre der Ofen. Es würde auch versuchen, eine große, hellgraue L-Form zu finden, die der Bankschalter sein würde. Dies wurde nur mit Verkleinerung und grundlegenden Heuristiken durchgeführt. Es könnte sich auch mit dem handlichen Kompass neben der Minikarte orientieren, um die Kamera in einer zuverlässigeren Position zu positionieren, um die Zielobjekte zu finden.
In verschiedenen Nexon-Spielen vertrauen die Server den Clients sehr. Ich habe dies in Maplestory eine Menge missbraucht, indem ich Karten modifiziert habe, um Gefahren zu beseitigen oder Warps hinzuzufügen, damit ein Bot nicht annähernd so ausgefeilt sein muss. Ich würde auch den Datenverkehr zum und vom Server überwachen, um ein Modell der Welt zu erstellen, das dann verwendet werden könnte, um Monster schnell zu finden und zu töten.
Als ich merkte, dass ich eigentlich keine MMOs mehr spielte und sie nur noch automatisierte, beschloss ich, das Spielen ganz einzustellen. Wenn ich nicht so besorgt wäre, mich legal auszustellen, hätte ich wahrscheinlich einen Mord an MMO-Bots begehen können, aber ich wollte wirklich nicht verklagt werden. Deshalb verbringe ich meine Zeit damit, diese Tage echte Programmierung zu machen!