Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Żeby rywalizować, nie musisz być botem

Serio. :)

Ale jeśli ktoś z Was postanowił napisać bota do gry w łapanie motylków, zapewne zastanawia się jak wykrywaliśmy grające automaty. Pragnę zaznaczyć, że przenoszenie użytkowników na listę botów odbywało się na podstawie pełnej historii gier (tak, ręcznie sprawdzałem po kilkaset gier na gracza) a nie jednego, konkretnego wyniku. Zatem bez dalszego przedłużania, przed Wami wpis, który część podjętych przez nas kroków powinien przybliżyć.

By zrozumieć jak analizowaliśmy wyniki, muszę opisać następujące rzeczy:
- sposób losowania układu
- mechanikę gry
- informacje zwrotne z przeglądarki i zapis wyników

Losowanie układu

Układ motylków na planszy jest losowy (czy jak kto woli: pseudolosowy). Serwer losuje 240 motyli, dla każdego z nich wartość punktową oraz punkty, przez które motyl przeleci. Punkty te mają (bez zaskoczenia) zestaw współrzędnych x, y oraz z (po 10 na motyla), a każda ze współrzędnych może przyjmować wartości od -1 do 1. Dodatkowo dla każdego motyla losujemy obszar, w którym może się poruszać (dwuwymiarowy prostokąt). Taki zestaw otrzymuje własny unikalny identyfikator, po czym wszystkie te informacje trafiają do przeglądarki. Dodatkowo razem z czasem startu gry (wskazywanym przez serwer) zapisywane są one do bazy, by umożliwić późniejszą analizę. Rozpoczyna się gra. :)

Mechanika

W dowolnej chwili widocznych jest dokładnie 6 motyli (chyba, że się wyczerpią, jednakże takie zdarzenie nie powinno mieć miejsca). Motyle pobierane są z listy w takiej kolejności, w jakiej zostały wylosowane. Przekazane do przeglądarki pozycje (przypomnę: po 10 na motyla) są podstawą do interpolacji pozycji w danej chwili. Trasa motyla jest zamknięta, cykl trwa około 30 sekund. Interpolowane współrzędne x oraz y wraz z uprzednio wylosowanym obszarem roboczym motyla określają jego pozycję na ekranie, podczas gdy współrzędna z steruje jego rozmiarem.

Współrzędna z odpowiada jednak za coś jeszcze: możliwość schwytania motyla. Przyjęty układ współrzędnych ma oś Z rosnącą wgłąb monitora, czyli motyl jest tym bliżej, im mniejsza wartość współrzędnej z. Wartość z = -0.85 stanowi punkt graniczny, od którego motyl otrzymuje obwiednię czerwoną i tym samym daje się złapać.

Zapis wyników

Każdy kliknięty motyl zapisuje do przechowywanej w pamięci tablicy informacje o współrzędnych kliknięcia, oraz czasie, jaki upłynął od startu gry. Te informacje wraz z wynikiem punktowym trafiają na serwer, gdzie zapisywane są wraz z czasem ukończenia gry (także według wskazań serwera).

Proste oszustwa

Oszukiwać można na wiele sposobów. Jedną z podstawowych rzeczy, jakie sprawdzaliśmy, był czas między startem a końcem gry. Dwie minuty powiększone o czas przesłania danych w obie strony powinien oscylować w okolicy 123 sekund. Większość odpowiedzi mieściła się w tej granicy, choć zdarzały się i dłuższe gry. Czy dwa zapytania mogą zająć pięć sekund? A dziesięć? Uznaliśmy, że tak. Jeśli ktoś oszukuje czas, nie będzie grał 2:10 tylko 3-4 minuty. I tak w istocie było. Część z grających znalazła sposób na oszukanie czasu, logując gry sporo dłuższe

Najdłuższa gra? 58 minut na koncie użytkownika ipGregory. Mam wrażenie, że debugował swój automat i musiał na dłuższą chwilę odejść od komputera. ;) Jak można było oszukać czas? Okazuje się, że bardzo prosto — po starcie gry wystarczyło odłączyć sieć. Po dwóch minutach podpiąć ją ponownie, uparcie grać, po czym kliknąć Stop. Nie naprawialiśmy tego zgłoszonego już pierwszego dnia błędu, bo jest on bardzo prosty do wykrycia. A przynajmniej zostają ślady po graczach grzebiących w grze.

Inne proste (i częste) oszustwo to wpisywanie sobie wyniku w danych zwracanych do serwera. Zwracany log zawierał bowiem obok listy kliknięć sumaryczny wynik punktowy (i identyfikator gry oczywiście). Znaleźliśmy sporo gier, w których np. dwa motyle za 3 punkty dawały w sumie ponad 2000 punktów. :) Takie rzeczy są równie łatwe do wyłapania, co wspomniane wcześniej manipulacje czasem.

Zmiany w JS

Część z grających postanowiła zmodyfikować kod gry w sposób, który powodował, że rozgrywała się ona na autopilocie. Wystarczy w kodzie gry, w miejscu, w którym ustawiamy status motyli oznaczając je czerwoną obwódką, automatycznie wywołać kliknięcie na tagu canvas w określonym punkcie. Wystarczy też usunąć motyla z listy a jego współrzędne dodać do tablicy logów.

Większość z dłubiących w kodzie była na tyle czujna, by dodać tutaj odrobinę losowości. Część jednak (tutaj patrzę na użytkownika cayman3_11 ;]) przez pewien czas nie zauważyła, że zwracane są wartości całkowite a nie zmiennoprzecinkowe. To ewidentne oszustwo głównie dlatego, że nie da się kliknąć w piksel w miejscu 123.33333 x 78.128. ;) Dla pewności sprawdziliśmy jak zachowuje się przeglądarka, kiedy powiększymy lub pomniejszymy przybliżenie obrazu. Na szczęście wartości wciąż są całkowite, więc oczywiste oszustwa tego typu można bez problemu wyłapać.

Co jednak w sytuacji, gdy ktoś używa bota klikającego w okno strony? Jak wykryć coś takiego?

Za mnie klika bot

Wspomniałem wcześniej o dodawaniu do wyników automatów losowości. To dobry sposób, by nie dać się złapać. Rzecz w tym, że grający ludzie charakteryzują się pewnymi konkretnymi cechami. Na przykład: nie reagują w czasie zerowym, nie są w stanie trafić w oddalone od siebie o 200px punkty w czasie poniżej 33ms, itp. Pomocą w znajdowaniu automatów okazuje się statystyka.

Czy ktoś może mi powiedzieć, który z powyższych wykresów nie pasuje do pozostałych? Prawdopodobnie bez najmniejszych trudności każdy wskaże prawy górny wykres. Co on przedstawia? Ilość kliknięć w czasie gry (pionowa oś) które zanotowano w pewnej odległości od środka motyla (pozioma oś; odległość w przestrzeni taksówkowej, należy pomnożyć przez 2 wartości na osi). Wyraźnie daje się zauważyć, że
- użytkownik/bot nigdy nie klikał daleko od centrum motyla
- bardzo często trafiał ~15px od środka

Jako że redakcja także uczestniczyła w grze, dysponowaliśmy tysiącem wyników, co do których autentyczności nie było cienia wątpliwości. W redakcji grało kilkanaście osób i wyniki żadnej z nich nie cechowały się rozkładem takim, jak widoczny w prawym górnym rogu. Co więcej, jeśli znaleźliśmy intrygujące wyniki u zaufanych czytelników, wystarczyło zapytać mailowo, czy nie używają bota. Przykładowa odpowiedź na takie pytanie? „Przez kilka gier testowałem bota kolegi”. Społeczność portalu jest w przeważającej większości uczciwa. :)

To nie jedyna metryka. Inną, którą stosowaliśmy, była prędkość z jaką gracz klikał. Mam nadzieję, że wszyscy zainteresowani widzieli prezentację bota, jakiego napisał command-dos. Jeśli nie, można ją zobaczyć na YT.

Spośród tysięcy sprawdzonych gier dało się wyciągnąć proste wnioski: jeśli za monitorem siedzi człowiek, to prędkość od kliknięcia do kliknięci nie przekracza 45 pikseli na klatkę animacji (dalej: ppf). Pojedyncze, szybsze trafienia zdarzają się prawie każdemu, ale nie dominują one w statystykach gry.

Powyżej widzimy statystyki prędkości 5 graczy: trzech pierwszych to ludzie, dwa ostatnie to boty. Drugi od prawej nie pozostawia mam nadzieję najmniejszych wątpliwości. Największą trudność sprawia wykres najbardziej wysunięty na prawo.

Pierwotnie sądziliśmy, że to osoba grająca na ekranie dotykowym. Dwa palce nad ekranem dają przecież przewagę. Przeprowadziliśmy wewnętrzne testy na iPadzie oraz na tablecie uzbrojonym w Androida. Wyniki były faktycznie lepsze, ale zaledwie o kilka procent. Górna, powtarzalna granica przesunęła się z 45ppf do 50ppf. Wniosek jest jeden: jedna osoba nie ma na tyle podzielnej uwagi, by granie oburącz przynosiło takie rezultaty. A podobne wyniki widzieliśmy u kilkunastu graczy.

Są zatem dwie możliwości: bardzo dobrze napisany bot lub... dwa kursory na ekranie i dwie myszy w rękach dwóch osób. :) Da się tak grać i przynosi to niezłe wyniki. Ale granie parami to nie jest naszym zdaniem uczciwe podejście do zabawy.

Jest jeszcze jedna metryka: ilość motyli złapanych w czasie gry. Gracze z najlepszymi wynikami osiągali wynik około 120 motyli na grę. Wartości powyżej 130 nie odnotowaliśmy u żadnego gracza z górnej dwudziestki, którego wszystkie metryki były przekonywająco ludzkie. Boty i „dwumyszowcy” sporadycznie tylko schodzili poniżej 140 motyli na grę. ;)

Odtwarzanie gry

Jest jeszcze jeden typ nieprawidłowości, jakie napotykaliśmy w wynikach: klikanie w nieistniejące motyle. Może się tak dziać w trzech przypadkach: wydłużenie czasu widoczności czerwonej ramki (domyślnie: jedna sekunda), zwiększenie obszaru klikalnego motyla, oraz całkowite ignorowanie położenia motyla na ekranie. Część wyników była wybitnie absurtalna: z sześciu motyli — dajmy na to: 1, 10, 3, 20, 10, 5 — znikał nieistniejący motyl za 50 punktów. Niektóre logi składały się wręcz z samych ciem (50 punktów każda). :)

Jak to wygląda w praktyce? Znając wylosowane pozycje motyli, można interpolować ich położenie w dowolnej chwili i „przewinąć” grę do momentu, w którym nastąpiło kliknięcie.

Na zrzucie powyżej widać, że usunięto z gry motyla za 3 punkty, mimo iż ten znajdował się nieopodal środka zakresu głębokości gry (-193 oznacza z = -0.193). Krzaczki z boku pokazują historię motyla: czarne ostatnią sekundę, różowe dwie sekundy z życia motyla. Widoczny na zrzucie motyl za trzy punkty nie przekroczył przez ostatnie dwie sekundy pozycji z = -0.85, zatem nie dało się go kliknąć.

W logach poprawnie zweryfikowanych graczy zdarzały się takie błędy: czasem jeden, czasem trzy. Historia pozycji pokazywała jednak, że jest to kliknięcie zarejestrowane 1-5 klatek po tym, jak zniknąć miało jego zaznaczenie. Udało nam się taką sytuację zasymulować dociążając procesor. Nigdy jednak nie osiąga się szarpnięć animacji sięgających kilku sekund, więc gry, w których takich zdarzeń widać było kilkadziesiąt — odrzucaliśmy.

Wnioski

Zabawa z motylami nasuwa kilka spostrzeżeń, które podsumuję w krótkiej liście:
- w każdej zabawie należy znaleźć sposób na wykazanie się zarówno graczom z doskoku („klikaczom”) jak i autorom botów, którzy chcą się zmierzyć z logiką gry, a nie wydolnością organizmu
- im więcej informacji loguje się, tym lepiej: żałuję, że nie logowaliśmy chybionych kliknięć, bo dałoby nam to więcej danych do analizowania
- mimo krytyki wciąż uważam, że gra która zawsze działa u konkretnej grupy użytkowników jest lepsza, niż gra która czasem działa nieokreślonym użytkownikom, zresztą...
- nie ważne co zrobisz, ktoś będzie niezadowolony
- canvas jest świetne, mimo kiepskiej implementacji w Chrome i Firefoksie

Słowo na zakończenie

Zgodnie z wcześniejszym ogłoszeniem, postanowiłem opublikować także listę wyników botów. Jest to Top 5 botów (i naginaczy zasad), z którego wykluczono gry niepoprawne z punktu widzenia mechaniki gry (złapane motyle, których nie ma, wynik wpisany „z palca”, itp.). Oto one:

3223 - cayman3_11
3119 - pebal
2728 - command-dos
2539 - ipGregory
2330 - damian879

Kilka osób wypadło z oficjalnej listy dziś rano, kiedy po raz ostatni sprawdzałem pierwszych 21 graczy. Okazuje się, że byli i tacy bociarze, którzy celowali w bezpieczne, 20. miejsce. ;)

Również zgodnie z wcześniejszymi zapewnieniami, postanowiliśmy wyróżnić autora jednego z botów. Wybranym przez redakcję szczęśliwcem został pebal, którego wyniki od samego początku były mechanicznie poprawne, i który przy tym nie ukrywał tego, że używa automatu. Tym samym pebal otrzymuje zaproszenie na HotZlot 2011, które (jeśli np. nie pasuje mu termin) może zamienić na garść upominków od portalu. A ja gratuluję autorom wszystkich botów i... do napisania przy okazji kolejnej gry! :] 

Komentarze

0 nowych
XeonBloomfield   5 #1 20.06.2011 17:51

Świetnie opisane co i jak z grą i weryfikowaniem graczy...

Eleks   9 #2 20.06.2011 17:51

Dzięki za wpis, na który wyczekiwałem i do następnego konkursu!;)

XeonBloomfield   5 #3 20.06.2011 17:53

"odbywało się na podstawie pełnej historii gier (tak, ręcznie sprawdzałem po kilkaset gier na gracza)"

Widać, że lubisz to co robisz ;)
...i bardzo dobrze! ;)

wszerad   5 #4 20.06.2011 17:59

Jakieś dzieciaki pisały w komentarzach, że nie da się oszukać gry:D
Szkoda, że nie miałem czasu na napisanie czegoś bo może bym się znalazł na liście botów:D Jeszcze jedna sprawa mnie interesuje ile osobom udało się przemycić skutecznego bota lub byli na tyle wolni aby wyniki gry na dwie myszy pasowały do najlepszych jednomyszowych graczy.

CZARNY15   4 #5 20.06.2011 18:00

"Kilka osób wypadło z oficjalnej listy dziś rano, kiedy po raz ostatni sprawdzałem pierwszych 21 graczy. Okazuje się, że byli i tacy bociarze, którzy celowali w bezpieczne, 20. miejsce. ;)"

Kiedy będzie opublikowana aktualna lista zwycięzców?

wszerad   5 #6 20.06.2011 18:07

Dodam jeszcze, że najlepiej to bawili się pewnie boterzy bo mieli fajny problem do rozwiązania więc następnym razem też o nich pamiętajcie:D

XeonBloomfield   5 #7 20.06.2011 18:07

@CZARNY15 | 20.06.2011 18:00:

"Zwycięzca jak zwykle może być jednak tylko jeden — chylimy czoła przed użytkownikiem Eleks"

"Kolejne 20 nagrodzonych osób to, według zajętego miejsca: matzu, kamilze, Kovalainennn, adi1166, kubut, djfoxer, tymcio76, tores1977, napastn1k, beduin75, marcinkam, cinek40, Piotrek_20, CZARNY15, DTM, toones, Łukash, filipmoto2010, Kaka' i pmselby."

http://www.dobreprogramy.pl/Podsumowujemy-zabawe-z-czarowaniem-motyli,Aktualnosc...

XeonBloomfield   5 #8 20.06.2011 18:08

@wszerad | 20.06.2011 18:07:

Na pewno! ;)

W końcu ten kto lubi robić tego typu rzeczy czerpał z tego ogromną frajdę...

XYZed   3 #9 20.06.2011 18:13

Gratulacje dla portalu za nagrodzenie "bociarzy". Jedyny portal, który ich nie zganił za to, że są oszustami i nie zbanował. A przyznał jeszcze nagrodę za najlepszego bota :)

  #10 20.06.2011 18:22

"i... do napisania przy okazji kolejnej gry!"
Miejmy nadzieję, że nie będzie ona wymagać Windowsa + IE, tylko będę mógł sobie w nią pograć na swoim pingwinku i google chrome.

duffee   11 #11 20.06.2011 19:05

kolejna gra dla botow !!!

I znow Zwykly uzutkonick nie bedzie mial szans i nic nie wygra , bo wsystko zgarna boty i ich tworcy - ech... jak nisko trza upasc by trzymac sie na powierchni ???

Inventer89   5 #12 20.06.2011 19:47

Super wpis. Chylę czoła nad tą piątką booterów :) Ja osobiście odkąd zagrałem po raz pierwszy, myślałem nad użyciem ekranu dotykowego (bardziej precyzyjny od myszki i odpada czas przesunięcia myszki), tylko, ze nie miałem go skąd wziąć :)

Ryan   15 #13 20.06.2011 19:53

@Inventer89: Na iPadzie na przykład wybitnie przeszkadza to, że wiele tapnięć interpretowanych jest jako próba scrolla. Ruszający się ekran nie pomaga w grze. ;) Ale nawet bez tego pojawia się granica podzielności uwagi człowieka.

januszek   18 #14 20.06.2011 20:00

@Ryan: A jak odpaliłeś IE9 na iPadzie? ;P

cayman3_11   3 #15 20.06.2011 20:13

"Większość z dłubiących w kodzie była na tyle czujna, by dodać tutaj odrobinę losowości. Część jednak (tutaj patrzę na użytkownika cayman3_11 ;]) przez pewien czas nie zauważyła, że zwracane są wartości całkowite a nie zmiennoprzecinkowe. To ewidentne oszustwo głównie dlatego, że nie da się kliknąć w piksel w miejscu 123.33333 x 78.128. ;)"

Akurat wtedy wpadł do mnie Chuck Norris i nabił parę wyników :P

(tak na marginesie: można stosować "losowość" i zapomnieć o zaokrągleniu ;) to się nie wyklucza)

dragonn   10 #16 20.06.2011 20:22

Przyłączam się do pytania @januszek jak na tablecie z iOS czy to Androidem odpadliście grę która "teoretycznie" działa tylko na IE9, czyżby istniała tajemna wersja na inne przeglądarki :)?

Inventer89   5 #17 20.06.2011 20:36

@Ryan: Myślałem bardziej o tablecie lub All in One (np. HP) z Windowsem, bo skoro pisaliście, że działa pod IE9, to nie brałem pod uwagę innej platformy. Już nawet nie chodzi o multitouch, ale łatwiej jest stuknąć coś palcem na ekranie, niż podjechać dość precyzyjnie myszką.
Może najlepsi niech się pochwalą jakiego sprzętu używali :)

Ryan   15 #18 20.06.2011 20:36

@januszek, @dragonn: Napisałem uproszczony port gry: bez animacji, z samą tylko mechaniką. Nawet nie polowało się na motyle, a na... podobizny Doroty Rabczewskiej. ;)

@cayman3_11: Nigdzie nie napisałem, że to się wyklucza. :) Pisałem przecież w blogu o robomotylach, że przerobiłem skrypt do analizowania tak, żeby zaokrąglał za Ciebie, bo chciałem zobaczyć statystyki. ;]

januszek   18 #19 20.06.2011 20:58

Pacnij Dodę na padzie? ;) Potencjalnie może być to hit ;)

underface   14 #20 20.06.2011 21:17

tak wlasnie mi sie coś wydawało gdy po kilku dniach co niektórzy mieli po 3k punktów

Piotrek_20   10 #21 20.06.2011 21:26

Może teraz pebal napisze nam jak działał jego bot.

WODZU   16 #22 20.06.2011 21:54

Po po wyższym wpisie Ryana twórcy botów następnym razem przeprowadzą badania nad specyfiką ludzkiej motoryki i zaimplementują ją w swoich produktach ;)

matzu   5 #23 20.06.2011 22:02

@Ryan
"w każdej zabawie należy znaleźć sposób na wykazanie się zarówno graczom z doskoku („klikaczom”) jak i autorom botów, którzy chcą się zmierzyć z logiką gry, a nie wydolnością organizmu"
IMO przede wszystkim w każdej grze należy ustalić obowiązujące zasady gry. Złamanie którejś z tych zasad musi się kończyć wykluczeniem z zabawy lub jakimiś "punktami karnymi". Oczywiście łatwo się to mówi po zakończeniu konkursu :)

Na początku zabawy zostało wyraźnie powiedziane i tu cytuję Ciebie "Oszustów będziemy stopniowo usuwać z gry."
http://www.dobreprogramy.pl/Zaczaruj-motyle-pokonaj-rywali,Aktualnosc,25339.html...
Później oczywiście zaczęły się pojawiać pytania odnośnie tego, co jest oszustwem, a co nie. Dla mnie jest oczywistym, że ta gra powinna się opierać na samodzielnym klikaniu w motyle w czasie 2 minut, ale skoro nie zostało to przez Was wyraźnie sprecyzowane (w sensie jako redakcję) w zasadach gry, no to dało to pole do popisu osobom, które postanowiły sobie ułatwić życie grając w inny sposób (ot taka natura Polaka :) ).

Ostatecznie znaleźliście ładne rozwiązanie tej sytuacji i ustaliliście dwie kategorie. Nie mam nic przeciwko temu, żeby przyszłe konkursy DP miały właśnie taki podział, czyli boty i nieboty. Zapewne nie tylko ja nie mam nic przeciwko temu. Może nawet pozwolicie na udział jednej osoby w dwóch kategoriach. Nie widzę przecież przeszkód, żeby dana osoba startowała w dwóch kategoriach (to przecież nie boks, gdzie waga decyduje o przydziale do danej kategorii).

W każdym bądź razie. Gdyby teraz zostało powiedziane, że nie można robić tego i tego (lub też można robić tylko to i to), to nikt by nie mógł mieć do Was pretensji, że został zbanowany etc. Byłaby jedna kategoria i tyle. Nie macie przecież obowiązku tak jak to powiedziałeś, dawać możliwości wykazania się każdemu. Choć oczywiście chwała Wam za to, że chcecie to robić, bo to z całą pewnością dobre rozwiązanie.

@Inventer89
Zdobyłem drugie miejsce na laptopie Lenovo 3000 N200. Grałem myszką optyczną (jakiś zwykły Logitech). Tutaj muszę trochę ponarzekać, bo czasem gra mi się przycinała, gdy na ekranie aktywowały się na raz 3-4 motyle, ale kit ... udało się zdobyć przynajmniej drugie miejsce i jestem z tego zadowolony.

@underface
Ja już miałem podejrzenia, gdy w środę wieczorem/czwartek w nocy pierwszego dnia konkursu damian879 zdobył 2249 pkt.

4lpha   9 #24 20.06.2011 22:03

"Część wyników była wybitnie absurtalna"
Popraw.

Istnieją monitory dotykowe nawet na 10 palców ;)

przemo_li   11 #25 20.06.2011 22:12

Wszystko dobre, co się dobrze kończy!

PS gra będzie jeszcze na DP dostępna? Może w dziale po godzinach? (nawet bez rankingu było by fajnie)

Ryan   15 #26 20.06.2011 22:22

@matzu: Od dłuższego czasu w regulaminie portalu jest zapis o botach (mamy setki botów głosujących na programy - staram się przekonać Liska, żeby o tym napisał, bo to fascynująca sprawa) i w zasadzie sprawa powinna być jasna. Ale jak widać po komentarzach dotyczących motylków nie każdy się z (naszym zdaniem) zdroworozsądkowymi regułami zgadza. ;/

djfoxer   17 #27 20.06.2011 23:00

Ciekawy wpis. Pierwsze wykresy można podciągnąć pod rozkład normalny ;):P

Jak liczyliście ranking botów? Które "oszustwa", za pomocą botów, uznawaliście za "przyzwoite", a które nie? W sumie można było dla wszystkich odebranych motyli nadpisać ilość punktów na 50 i wymaksować wynik dużo powyżej 3k.

matzu   5 #28 20.06.2011 23:10

@Ryan
Ciekawe po co ktoś podbija ocenę danego programu? Nieczysty marketing? Tak jest późno i zachciało mi się teorii spiskowych.

A odnośnie samego mechanizmu gry. Czy bylibyście w stanie wykryć gdyby np. ktoś zwiększył prędkość przemieszczania się motyli, a tym samym skrócił czas w jakim znajdą się w punkcie, w którym nastąpi aktywacja?

@djfoxer
Nie można było z racji tego, że motyle pojawiają się w ustalonej kolejności, a serwer przechowuje informację o tym jakie rozdanie motyli zostało wysłane do gracza.

djfoxer   17 #29 20.06.2011 23:17

@matzu
Wszytko rozumiem :) ale skoro był oddzielny ranking botów/skrypciarzy, to jak uznawano, kiedy taki bot/skrypt "przegiął" warunki bycia nawet w rankingu TOP botów?

matzu   5 #30 20.06.2011 23:20

@djfoxer
Wydaje mi się, że "przegiął" ten, który modyfikował mechanizm gry. Twoje rozwiązanie zaproponowane powyżej jest przykładem takiej modyfikacji.

matzu   5 #31 20.06.2011 23:22

do powyższego komentarza:
modyfikował kod gry* (lepiej brzmi)

djfoxer   17 #32 20.06.2011 23:24

O właśnie :) Ponownie wracamy do tematu. Boty są ok, skrypciarze nie? ;P

matzu   5 #33 20.06.2011 23:46

@djfoxer
Nie rozumiemy się. IMO nie ma znaczenia, czy ktoś używał bota, czy napisał skrypt pod warunkiem, że skrypt naśladuje bota/człowieka. Bot nie ma dostępu do kodu gry, a więc nie jest w stanie wprowadzić zmiany, o której mówiłeś powyżej. Nie uzyska więc efektu, że nieważne jakiego kliknie motyla zawsze dostanie 50pkt.

Dodam jeszcze tylko, że po ilości punktów zdobytych przez boty widzę, że redakcja nie patrzyła na to, czy bot naśladuje człowieka (a więc np. nie jest w stanie błyskawicznie kliknąć w motyla w momencie, gdy tylko pojawi się na ekranie), a na to czy potrafi samodzielnie grać w grę.

matzu   5 #34 20.06.2011 23:58

do powyższego komentarza:
a na to czy potrafi grać w grę za człowieka* (koniec pisania na dziś :))

djfoxer   17 #35 21.06.2011 00:01

@matzu
Zdobyłeś miejsce na "pudle", dopiero zauważyłem, wiec gratuluje przy okazji ;)

Chciałem właśnie dowiedzieć się, czy podobnie myśli jury motylków (to co napisałeś o nie modyfikowaniu kodu gry). Z drugiej strony czy dane dostarczane przez serwer to też kod, czy tylko dane na których działa program. Coś na zasadzie czarnej skrzynki - nie wiesz jak działa mechanizm w środku, analizujesz go jedynie na podstawie wejścia/wyjścia. Takie czysto hipotetyczne pytanie, nic więcej :P

Ryan   15 #36 21.06.2011 00:35

@matzu: Tak, bo w dwóch minutach mogą się zmieścić tylko dwie minuty. Jeśli przyspieszysz timer z q-helpers, to w pewnym momencie i tak dojdziesz do dwóch minut w czasie gry (liczonych w klatkach), które są nieprzekraczalne.

matzu   5 #37 21.06.2011 00:40

@djfoxer
Dzięki. Na drugie miejsce wbiłem się około 23:15-20 ostatniego dnia konkursu :D

Twoja seria pytań jest przykładem na to, że zasady gry muszą być zawsze ustalone, nawet w przypadku botów/skrypciarzy. Choć nie wiem, czy ktoś kto sam nagina zasady (bo nie zostały spisane) zasługuje na to, żeby móc toczyć rywalizację, w której każdy ma takie same szanse na zwycięstwo. Gdyby zignorować niepisane zasady, to zwycięstwo byłoby w rękach skrypciarzy :). IMO dane należy potraktować podobnie jak kod gry. Bot nie może ich modyfikować, więc i skrypciarz nie powinien tego robić. Oczywiście to tylko moje gdybanie na temat kryteriów jakie stosowała redakcja. Sam jestem ciekaw opinii Ryan-a.

matzu   5 #38 21.06.2011 00:57

@Ryan
Wiesz ja nie zagłębiałem się w kod gry. Czyli dla każdego motylka czas w jakim musi pokonać swoją trasę jest stały?

matzu   5 #39 21.06.2011 01:10

do powyższego komentarza:
Innymi słowy ... dla danej gry jesteś w stanie powiedzieć ile motylków maksymalnie można kliknąć o ile będą klikane błyskawicznie po pojawieniu się (+/- 1 lub 2 motyle).

Vanshei   14 #40 21.06.2011 09:37

Co do komentarzy to może by dodać opcję "ukrywaj komentarze osób niezalogowanych" .

Ewentualnie tak jak na wspomnianym portalu na F
"ukryj ten komentarz" lub "ukryj komentarze użytkownika..."

Wg mnie rozwiązanie z Fb jest chyba najlepsze o ile możliwe do realizacji :)

Ryan   15 #41 21.06.2011 11:55

@matzu: Tak i tak.

@Vanshei: Możliwe, ale nie wiem czy optymalne z punktu widzenia interakcji ludzi na portalu.

Blotny   7 #42 21.06.2011 15:37

"pomniejszymy przybliżenie obrazu"

Zabawnie to brzmi :)

command-dos   17 #43 21.06.2011 20:40

Mój wynik jest wynikiem błędu gry. Niestety nie zrobiłem zrzutki ekranu. Mój bot nigdy nie przekroczył wyniku @pebal'a. Z wielu prób zdarzyły mi się 2 (słownie: dwie) takie, kiedy program wykrzaczył się, gdy miał zakończyć grę i wyświetlić tabelę wyników. Otrzymałem błąd windows (ten z żółtym wykrzyknikiem) z mnóstwem cyferek poprzedzonych znakiem # w komunikacie błędu. Po naciśnięciu "ok" kontynuowało się grę, a czas zwariował (ujemna wartość, grubo poniżej 2000). Dociągnąłem do wyniku, jaki widać powyżej - wtedy gwarantowało mi to 1 miejsce :) i jakoś zakończyłem grę (jak ja to zrobiłem?). Bardzo byłem ciekaw, czy zostanę usunięty z "listy oszustów" za nadmierne naciągnięcie reguł "oszukiwania". Sygnalizowałem ten błąd (chyba) pod wpisem @Ryan'a, pt. "Robomotyle", ale chyba mnie zignorowano ;)

pebal   7 #44 21.06.2011 22:11

@Ryan
Dziękuję za zaproszenie na HotZlot, jednak czy mógłbym odstąpić zaproszenie innemu użytkownikowi DP?

Dimatheus   21 #45 21.06.2011 23:03

Hej,

Jedno jest pewne - poziom graczy, czarujących motyle, był bardzo wysoki - moralnie bądź technicznie... :) Szczerze powiem, że nie miałem pojęcia, że na tyle sposobów można było "podrasowywać" wyniki w grze. :)

@ pebal - Nie oddawaj - po prostu przyjedź na zlot!!

Pozdrawiam,
Dimatheus

pebal   7 #46 22.06.2011 13:24

Postanowiłem jednak się wybrać, do zobaczenia na zlocie ;-)

Eleks   9 #47 22.06.2011 14:38

Gratulacje @pebal ;). Dobra decyzja.
Wnioski świetne - jedne bardziej, drugie mniej :P

@Ryan
Wiem, że motylki to już przeszłość, ale czy dałbyś radę w jakikolwiek sposób udostępnić mi statystyki z gry, która zapewniła mi zwycięstwo? Choćby to ile motylków kliknąłem i tym podobne ?

Pozdrawiam i jeszcze raz dziękuję za ciekawy konkurs - oby takich więcej ;)

Ryan   15 #48 24.06.2011 16:54

@Eleks:

MIME-Version: 1.0
Content-Type: application/octet-stream; name="eleks.7z"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="eleks.7z"

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

kstarski   5 #49 26.06.2011 20:11

@Ryan
bardzo fajny tekst, liczę na rozwinięcie tematu canvas na zlocie :)

Poza tym właśnie sie dowiedziałem jak łatwo można dodać załącznik do komentarza na DP :)

BTW jaki jest limit długości komentarza?

Ryan   15 #50 14.10.2011 11:21

Osiem tysięcy znaków.