Jak działają boty - i dlaczego IG ma to w poważaniu

Enkidu

Rycerz
Razem ze znajomymi przeprowadziłem małe techniczne śledztwo, wraz z odszukaniem kilku ciekawostek o podejściu IG do osób piszących te narzędzia. Nie, linków do nich nie podam, ale wyszukiwarki ma chyba każdy (uwaga:Google na prośbę IG zablokowało wyniki z narzędziami)

1. Boty prymitywne
Te boty, czyli tzw "autoklikery" można było co najwyżej nauczyć znanych im lokalizacji na ekranie. Całkiem nieźle nadawały się do zbierania kilkuminutowych produkcji, z niektórymi ustawieniami pozwalały na nieco szybsze podkładanie obrony w sektorach czy pomagały w klikaniu w dobrze ustawione sektory. Zachowywały się przy tym całkiem podobnie do gracza i jako takie ciężko je odróżnić od osób grających uczciwie. Szkodliwość: niska

2. Boty wykorzystujące prostą logikę
Tu również mamy klikery, ale wykorzystujące różne metody rozpoznawania obrazu. Ponieważ FoE ma prosty graficznie interfejs (w którym co najwyżej raz na parę lat ktoś nadgorliwy zmieni kolory), możliwe jest stworzenie bota szukającego wzorców w obrazie, a następnie reagującego kliknięciem. Nieco groźniejsze, niż te w punkcie 1, ale nadal możliwe do pokonania przez wprawnego gracza.

3. Boty wykorzystujące API gry
Tu niespodzianka - co prawda wersja Flash jest już martwa, ale już wtedy wykorzystywano JSON do komunikacji klient↔serwer. O ile podsłuchiwanie takich eventów przez wtyczki typu FOE-Helper czy FOE-Info (ze znalezieniem tej życzę powodzenia, gdyż działa w całości w narzędziach developerskich) to nic stwarzającego przewagę - o tyle skrypty nasłuchujące zdarzeń mogą być zaprogramowane na pewne działania. W skrócie: serwer wysyła paczkę z informacjami - i zanim GUI gry ją przetworzy - skrypt ma gotową odpowiedź (lub kilka). W czasach wersji Flash stworzono co prawda proste narzędzia zabezpieczające przed automatyzacją przez skrypty - jednak algorytm dosalania wiadomości był zaszyty jawnie w aplikacji. Obecnie, ze względu na pojawienie się wersji HTML5 - te dane są jeszcze łatwiejsze do znalezienia (w skrócie - event listener podaje je "na tacy" twórcom skryptów).
Co to oznacza? To oznacza, że nieuczciwy gracz wykona trzy akcje, zanim uczciwy dowie się, że mógł wykonać jedną. Na przykład - "podłożenie" oblegu nastąpi zanim obrońcy dowiedzą się, że "spadła" ostatnia kratka. Jedyne, co ogranicza szybkość takich botów - to RTT (round-trip time) dla wiadomości.Dla graczy z pingiem rzędu 30ms - RTT wynosi poniżej 100ms, a więc są w stanie wykonać solo ponad dziesięć pojedynczych akcji na sekundę (na przykład wymienić połowę wojska w armii atakującej i jeszcze dokonać ataku). "Żywy" gracz z tempem reakcji kierowcy rajdowego mógł wykonać dwie akcje na sekundę. Jest różnica?
 

Agatonka59

Książę krwi królewskiej
Hmm, z tego co można przeczytać w regulaminie:
6) Boty i skrypty
Zabronione jest użytkowanie botów i skryptów.
Przykłady:
- Zabronione jest używanie dodatków i innych narzędzi, które mogą automatycznie zbierać surowce.
- Zabronione jest używanie clickerów, botów lub skryptów zmniejszających liczbę kliknięć, które normalnie trzeba wykonać w celu przeprowadzenia dowolnej akcji w grze.
- Nie można używać programów dających nieuczciwą przewagę lub udostępniających funkcje premium.

można by wyciągnąć wniosek, że dotyczy to wszystkich, wymienionych przez Ciebie, botów, niezależnie od stopnia szkodliwości...
 

Montaron

Rycerz
Hmm, z tego co można przeczytać w regulaminie:
6) Boty i skrypty
Zabronione jest użytkowanie botów i skryptów.
Przykłady:
- Zabronione jest używanie dodatków i innych narzędzi, które mogą automatycznie zbierać surowce.
- Zabronione jest używanie clickerów, botów lub skryptów zmniejszających liczbę kliknięć, które normalnie trzeba wykonać w celu przeprowadzenia dowolnej akcji w grze.
- Nie można używać programów dających nieuczciwą przewagę lub udostępniających funkcje premium.

można by wyciągnąć wniosek, że dotyczy to wszystkich, wymienionych przez Ciebie, botów, niezależnie od stopnia szkodliwości...
Z tego można wywnioskować też że jedyne co jest robione z botami to wpis w regulaminie:D
 

anaconda8

Baron
No to teraz przejdźmy do clou sprawy: dlaczego Waszym zdaniem IG ma to w poważaniu? Jakieś teorie? Pytam z ciekawości...
 
Co to oznacza? To oznacza, że nieuczciwy gracz wykona trzy akcje, zanim uczciwy dowie się, że mógł wykonać jedną. Na przykład - "podłożenie" oblegu nastąpi zanim obrońcy dowiedzą się, że "spadła" ostatnia kratka. Jedyne, co ogranicza szybkość takich botów - to RTT (round-trip time) dla wiadomości.Dla graczy z pingiem rzędu 30ms - RTT wynosi poniżej 100ms, a więc są w stanie wykonać solo ponad dziesięć pojedynczych akcji na sekundę (na przykład wymienić połowę wojska w armii atakującej i jeszcze dokonać ataku). "Żywy" gracz z tempem reakcji kierowcy rajdowego mógł wykonać dwie akcje na sekundę. Jest różnica?
To wzialeś z netu czy sam stworzyłeś?? Nic nie idzie z tego zrozumieć a informatyka to moja praca. 30ms?? Sorry ale piszesz bzdury tu. Ping 30ms a delay 100 ms?? Skad wziales takie wyliczenia?? Max 20 kilka ;-) To niemozliwe ;-) A nawet wyliczyłes ile zrobi akcji pojedynczych gracz na sekunde? 10? To nawet dla mnie jakas abstrakcja...oczywiscie, ze takie rzeczy istnieją vide ostatni bot ale mocno ale to mocno podkoloryzowales to teraz ;-)
 
Ostatnia edycja:

Enkidu

Rycerz
To wzialeś z netu czy sam stworzyłeś?? Nic nie idzie z tego zrozumieć a informatyka to moja praca. 30ms?? Sorry ale piszesz bzdury tu. Ping 30ms a delay 100 ms?? Skad wziales takie wyliczenia?? Max 20 kilka ;-) To niemozliwe ;-) A nawet wyliczyłes ile zrobi akcji pojedynczych gracz na sekunde? 10? To nawet dla mnie jakas abstrakcja...oczywiscie, ze takie rzeczy istnieją vide ostatni bot ale mocno ale to mocno podkoloryzowales to teraz ;-)
Kolego, poczytaj na trzeźwo co napisałem. Zwłaszcza sprawdź, czy rozumiesz "30ms jest poniżej 100ms" bo chyba jak na informatyka masz za duże problemy z matmą ;) I policzyłem, ile akcji na sekundę jest w stanie zrobić gracz z "usprawniaczem" na poziomie skryptów.

Co ciekawe, tutorial dorobienia własnych botów opartych o image recognition jest na YT, można sobie łatwo wyszukać ;)
 
idąc Twoim tokiem myslenia mozna napisać że delay ma 500ms, bo przecież 30ms jest też poniżej 500 :-) "Dla graczy z pingiem rzędu 30ms - RTT wynosi poniżej 100ms" to takie masło maslane wyszło Ci: jesli jedziesz samochodem i licznik pokazuje 30km/h, to oznacza że twoja prędkość wynosi poniżej 100 km/h :-) Przecież RTT mierzy się za...pomocą pinga :-D Oczywiście RTT może być wyższy niż zmierzony przez ping z powodu przeciążenia sieci czy serwera czy innych parametrów w sieci . Prawda, możemy RTT zmiejszyć za pomocą CDNów ale dalej nie kapuje sensu Twojej wypowiedzi. W pełni się zgadzam, że takie skrypty istnieją bo ostatnio była wojna o jednego co dostał bloka i gracze wykorzystują ale te 10 akcji na sekunde jest absolutnie niemozliwe, proszę oświeć mnie jak to wyliczyłeś :-)
 
Ostatnia edycja:

dżejmsbąd

Wicehrabia
idąc Twoim tokiem myslenia mozna napisać że delay ma 500ms, bo przecież 30ms jest też poniżej 500 :-) "Dla graczy z pingiem rzędu 30ms - RTT wynosi poniżej 100ms" to takie masło maslane wyszło Ci: jesli jedziesz samochodem i licznik pokazuje 30km/h, to oznacza że twoja prędkość wynosi poniżej 100 km/h :-)
Nie wiem czego tu nie rozumieć. Gracz idący piechotą z miasta A do miasta B oddalonego o 10 km będzie szedł 2 godziny, a gracz jadący rowerem dojedzie w spokojnie w pół godziny. Wnioskiem nie jest tuaj to, że pół godziny to mniej czasu niż 2 godziny, tylko to, że rowerzysta kilka razy zdąży pokonać ten dystans zanim zrobi to piechur, bo pół godziny jest krótszym czasem niż 2 godziny. To nie jest masło maślane, tylko porównanie ilustrujące jaką przewagę ma bot.

Zakładając, że "delay" jest dla każdego taki sam po stronie serwera, to różnicę mamy tylko po stronie gracza, który musi czekać, żeby gra mu wyświetliła to co serwer przesłał (np. "zbito oblężenie"), on to musi zobaczyć, jego MÓZG musi to przetworzyć, ręka przesunąć kursor, kliknąć (kilka razy), czyli FIZYCZNIE wykonać kilka AKCJI, które zajmują CZAS, wtedy gra wysyła do serwera komunikat ("zakładam oblężenie!").
A bot gada sobie z serwerem BEZPOŚREDNIO, (serwer mówi: "zbito oblężenie" - bot mówi "zakładam ogblężenie!"), omijając szatę graficzną gry i opóźnienia związane z jej wyświetlaniem i czasem reakcji i akcji gracza. Oczywiste jest, że będzie kilka razy szybszy od gracza, chyba że dla niepoznaki pauzuje działanie pomiędzy kolejnymi akcjami na zbyt długo.
 
Nie wiem czego tu nie rozumieć. Gracz idący piechotą z miasta A do miasta B oddalonego o 10 km będzie szedł 2 godziny, a gracz jadący rowerem dojedzie w spokojnie w pół godziny. Wnioskiem nie jest tuaj to, że pół godziny to mniej czasu niż 2 godziny, tylko to, że rowerzysta kilka razy zdąży pokonać ten dystans zanim zrobi to piechur, bo pół godziny jest krótszym czasem niż 2 godziny. To nie jest masło maślane, tylko porównanie ilustrujące jaką przewagę ma bot.
Tak ale tu opisujesz już problem sprzętowy jakim dysponuje gracz. Jeden ma mocny sprzęt a drugi słaby. Tak notabene,na bota w html na to średnie znaczenie bo on siedzi w kodzie zródlowym. Ja piszę o czystym RTT jaki poruszył przedmowca. Sygnał do i z . A to już jest coś innego co piszesz. Ping/RTT bo to to samo/ w tym kodzie bez CDN bedzie taki sam dla obu urządzeń. Bot tu nie daje przewagi...bot własnie daje przewagę w tym co opisałeś poniżej. W GRAFICE I ZOBARAZOWANIU. Łopatologicznie...twój komp/laptop musi całą tą informację przełozyć na wizję jaką widzisz. I jak piszesz, dochodzi czas reakcji myszką, kliku jej, wyswietlenia okna o zbijaniu oblegu tudzież jego założeniu i masę innych rzeczy. I masz poslizg...ale to taki ping Twojej reakcji i Twojego sprzetu. I jak zrobisz klik to poleci to na serw FoE z predkościa RTT np. 8ms, bota też RTT 8ms...ale on w kodzie zrodlowym zrobi to np w 1ms/czas reakcji bota na Twoim sprzecie/ a Ty ręcznie np 20ms...i tu daje bot przewagę. Nie pingu, RTT ale w czasie reakcji już na Twoim sprzecie. Mam nadzieję, ze zrozumiałeś mnie ;-)
Ps. Być może autorowi posta wlasnie o to chodziło, tylko niefortunnie użył pojęcia RTT.
 

Enkidu

Rycerz
Kolego, czytamy jeszcze raz ze zrozumieniem. Żywego gracza ogranicza prędkość działania GUI gry, szybkość reakcji itd. Bota wywołującego metody na API gry ogranicza w zasadzie jedynie RTT. Porównanie z wczoraj: gracze z ustawionymi sektorami, ale klikający uczciwie zrobili po 20-30 walk. Typ "podejrzany o bota" zrobił 200 w tym samym czasie.
A dlaczego IG to ma w nosie? Bo to może być w interesie jednego (lub kilku) deweloperów. A frajerzy i tak zapłacą za diaksy.
 
Widzę, że pozytywnie rozumujesz, może nam chodzi o to samo, tylko cytuję" Dla graczy z pingiem rzędu 30ms - RTT wynosi poniżej 100ms, a więc są w stanie wykonać solo ponad dziesięć pojedynczych akcji na sekundę (na przykład wymienić połowę wojska w armii atakującej i jeszcze dokonać ataku)" mnie zbiło z Twojego toku myslenia, takie maslane masło niezrozumiałe, nie majace znaczenia dla bota :-) Dla wyjaśnienia innym i zrozumienia jeszcze raz: RTT w sieci jest takie same dla bociarza i dla nie bociarza. Czy, przykładowo 1 walkę zrobi bot czy normalny gracz, RTT w necie dla bociarza i nie bociarza dla tej jednej walki przykładowej, będzie takie same...identyczne. Jeśli wyjdzie z kodu zrodlowego htmla komenda zrób walkę, to czy z bota czy od gracza dotrze ona np w 8ms do serwera FoE, gdzie zostanie wykonana. Nie będzie innego czasu, chyba że program bot korzystałby np w Polsce z sieci OVH/polecam/ ale to już inna bajka trochę i watpię żeby ktoś się bawił składał skrypta przez tę sieć/pieniążki/. Prawdziwym problemem jest tylko to co słusznie zauważyłeś GUI gry, gdzie gracz musi wykonywać serie ruchów i tracic na to czas dłuższy, i zrobić w sekundę np 2 walki, podczas kiedy bot co kilka ms wysyła z kodu strony komendę...walka, walka, walka. Dlatego bot zrobi 10 walk, dobry gracz max 3 a średnio zaawansowany jedną :-) Nie dlatego, że ma jakiś szybszy RTT w sieci ale dlatego, że omija GUI gry i sle z kodu...tylko dlatego :-) Notabene, takie rzeczy są proste do wychwycenia z kodu, wrecz banalne, jednak co mnie też irytuje, IG nie robi tego..nie wiem czemu zezwala, co prawda skasowała strone pewna ale i tak jest masa niedomowień. A naprawdę jest prosty sposob na wylapanie botów i klikaczy z kodu...prosciuteńki
 
Czy problem botów dotyczy tylko polskich serwerów, czy na zagranicznych jest podobnie?
Na wszystkich serwerach jest tak samo. Najpierw używała tego mała grupa osób, inni zgłaszali problem do supportu, ale Inno miało to w dupie, więc coraz więcej osób zaczęło z tego korzystać, żeby mieć jakiekolwiek szanse na osiągnięcie czegokolwiek. Teraz nagle IG się obudziło, ale zamiast zrobić na porządnie z tym porządek, to bany zbierają wybiórcze osoby, a reszta dalej korzysta z programów.
 
Czyli stwierdzić trzeba, że kierunek zmian jest dobry. Gracze którzy wcześniej zgłaszali problem jakim są boty nie doczekali się żadnej reakcji i z godnie z zasadą: „ jak nie możesz kogoś pokonać przyłącz się do niego” zasilili grono osób korzystających z botów. O ile wcześniej wskazywane były pojedyncze osoby korzystające z botów, teraz już się nie podaje nicków a całe gildie. Każda gildia, która mimo zaangażowania przegrywa z czasem dochodzi do jednie słusznego wniosku, że jeżeli jest to bezkarne i jest to jedyny sposób na wyrównanie szans trzeba z niego skorzystać. Na świecie D gdzie gram już widać efekty, o ile wcześniej postępy kilku osób wzbudzały zazdrość i naruszały poczucie sprawiedliwości innych teraz odbija się to na serwerze. Należy cierpliwie poczekać aż proceder stanie się powszechny i padną serwery zmuszając Inno do rozwiązania problemu.
 
Czyli stwierdzić trzeba, że kierunek zmian jest dobry. Gracze którzy wcześniej zgłaszali problem jakim są boty nie doczekali się żadnej reakcji i z godnie z zasadą: „ jak nie możesz kogoś pokonać przyłącz się do niego” zasilili grono osób korzystających z botów. O ile wcześniej wskazywane były pojedyncze osoby korzystające z botów, teraz już się nie podaje nicków a całe gildie. Każda gildia, która mimo zaangażowania przegrywa z czasem dochodzi do jednie słusznego wniosku, że jeżeli jest to bezkarne i jest to jedyny sposób na wyrównanie szans trzeba z niego skorzystać. Na świecie D gdzie gram już widać efekty, o ile wcześniej postępy kilku osób wzbudzały zazdrość i naruszały poczucie sprawiedliwości innych teraz odbija się to na serwerze. Należy cierpliwie poczekać aż proceder stanie się powszechny i padną serwery zmuszając Inno do rozwiązania problemu.
No właśnie chyba już doszliśmy do momentu, w którym Inno zaczęło uważać problem za poważny. Szkoda tylko że dalej starają się go rozwiązać po swojemu, czyli nieudolnie.
 
Do góry