Phillip przedstawił już świetny przegląd tego, jak działa większość botów, ale chciałem opisać wszystko bardziej szczegółowo, ponieważ mam trochę osobistego doświadczenia w rozwijaniu wszystkich rodzajów botów, które obejmował.
W Runescape istniał duży projekt (RSBot), który kopiowałby zawartość pamięci z klienta Runescape do swojej pamięci lokalnej, gdzie mógł następnie przeglądać cały stan gry bez ryzyka złapania klienta. Wymagało to trochę inżynierii wstecznej, aby ustalić, gdzie w pamięci szukać, aby znaleźć wskaźniki do danych, ale kiedy to zrobili, ujawnili API, aby skorzystać z informacji. Wiedziałby dokładnie, gdzie jest na świecie, uzyskując współrzędne obiektu, a następnie przekształcając je za pomocą matrycy transformacji kamery, aby uzyskać pozycję na ekranie. Maski uderzeń były również czytelne, więc ustalenie, do którego zakresu przesuwać mysz, było banalne, aby uzyskać pożądany wynik.
Bot dostarczył wiele informacji debugujących, takich jak adnotacje, które poinformowały dewelopera, gdzie są współrzędne kafelków, gdzie ma identyfikator tego obiektu, jaki identyfikator należy do danego elementu itp. Informacje te można następnie wykorzystać do stworzenia botów. Rzeczywisty proces tworzenia skryptów botów był w rzeczywistości dość prosty. Szkielet zapewniał wiele funkcji narzędziowych, takich jak move_to(world_coordinates)
lub, mouse_move(x,y)
które wykonywałyby określone działania w nieco wiarygodny sposób (poruszanie myszą wzdłuż losowego splajnu, wielokrotne poruszanie się zarówno na minimapie, jak i ekranie itd.)
Również w Runescape masz możliwość drastycznego obniżenia jakości grafiki. Stworzenie pewnego rodzaju botów było dość łatwe, filmując ekran i stosując podstawowe koncepcje wizji komputerowej w celu zbudowania modelu świata. Za pomocą tej techniki zrobiłem zarówno robota klątwę, jak i robota do wytapiania, które działały całkiem dobrze. Wystarczy wziąć ramkę, maksymalnie zwiększyć nasycenie, a następnie spróbować wyodrębnić z niej wzory, które mogłyby następnie wygenerować mapę prawdopodobieństwa dla stref kliknięć.
W przypadku bota przekleństwa celem był mniejszy demon, który jest po prostu wielką czerwoną rzeczą, którą można łatwo znaleźć. W przypadku bota do wytopu szukałby małego pomarańczowego trapezu otoczonego szarym, a byłby to piec. Próbowałby także znaleźć duży, jasnoszary kształt litery „L”, który byłby biurkiem bankowym. Dokonano tego dzięki zmniejszeniu skali i podstawowej heurystyce. Mógłby również zorientować się za pomocą poręcznego kompasu obok minimapy, dzięki czemu mógłby ustawić kamerę w bardziej niezawodnej pozycji, aby znaleźć obiekty docelowe.
W różnych grach Nexon serwery bardzo ufają klientom. Nadużyłem tego tonę w Maplestory, modyfikując mapy w celu usunięcia zagrożeń lub dodania wypaczeń, aby bot nie musiał być tak wyrafinowany. Chciałbym również monitorować ruch do iz serwera, aby zbudować model świata, który można by następnie wykorzystać do szybkiego znalezienia i zabicia potworów.
Kiedy zdałem sobie sprawę, że tak naprawdę nie gram już w MMO i po prostu je zautomatyzowałem, postanowiłem całkowicie przestać grać. Gdybym nie martwił się tak, że ujawnię się legalnie, prawdopodobnie zrobiłbym zabójstwo sprzedając boty MMO, ale tak naprawdę nie chciałem zostać pozwany. Dlatego spędzam teraz czas na prawdziwym programowaniu!