SzukajSzukaj  RegulaminRegulamin  UżytkownicyUżytkownicy  GrupyGrupy  StatystykiStatystyki RejestracjaRejestracja  ZalogujZaloguj
Forum Icy.pl Strona Główna  

Poprzedni temat «» Następny temat
Przesunięty przez: Vinyanov
18 Październik 2009, 12:18
Online Slowdown Detector - wykrywanie spowalniania online
Autor Wiadomość
NeueR
Wow!


Dołączył: 02 Gru 2005
Posty: 80
Wysłany: 13 Wrzesień 2009, 13:16   Online Slowdown Detector - wykrywanie spowalniania online

Witam!

Kolejny projekcik, póki co w fazie testów. Slowdown Online Detect umożliwia sprawdzenie z poziomu przeglądarki, czy dana powtórka została ugrana uczciwie czy nie (tzn. czy nie użyto programów spowalniających). Projekt NIE korzysta z ITRCheckera!

Online Slowdown Detector (OSDD)

- skrypt generuje podobne wyniki, co ITRChecker: podaje clk, qpc, tme, dns oraz flr
- sprawdzana powtórka nie jest nigdzie uploadowana (zostają wyświetlone tylko wyniki)
- granice błędu: no więc odpuściliśmy (+Jacob) sobie dokładny wynik do 0.01, za to dużo było z tym roboty. Ustaliliśmy następujące przedziały: jeśli któraś z wartości (qpc, tme, dns) znajduje się w przedziałe 32.00-63.99, granica błędu to 0.25 wzwyż.

xx.00-xx.24
xx.25-xx.49
xx.50-xx.74
xx.75-xx.99

Załóżmy, że nasze qpc wyniesie 49.77. Jak widzimy powyżej, to 4 zakres, a skrypt zawsze będzie podwyższał końcówkę do maksymalnej wartości danego zakresu. Tak więc zobaczymy: qpc: 49.99

Liczby z przedziału: 64.00-100.00 będą z błędami max. 0.50.

xx.00-xx.49
xx.50-xx.99

Przykład: normalnie: 76.70, skrypt pokaże 76.99 etc.

Liczby z przedziału 00.00-31.99 będą pokazywane jako "00.00" (za dużo roboty z tymi dolnymi granicami, jedynie zauważyłem Klaud ma qpc < 32 :P )

Ok, teraz sprawdzenie, czy powtórka jest spowolniona czy nie. Daliśmy, że wszystkie wartości (oprócz wiadomo flr :P ) nie mogą przekroczyć 52.00 (ta wartość do omówienia, bo obaj nie wiemy, czy tak może być)

No, i na koniec jeszcze SDOD został dołączony do skryptu uploadu (nie pokazuje wyników, tak jak skrypt powyżej, zostanie wyświetlona tylko informacja, czy powtórka jest ok i zostanie wrzucona, czy nie)

Aa, żeby trochę sobie nabić userów (przy okazji, myślałem, że skoro tyle ważnych userów na FLD udzieliło się w temacie od Icy, to od razu zarejestruja konto i przetestuja ten skromny projekcik, a tu kupa :/ może dlatego, że jestem zwykłym użytkownikiem, żadną osobistościa w icy towerze to od razu zostałem skreślony na starcie?), żeby skorzystać z Slowdown Online Detect trzeba być zarejestrowanym użytkownikiem i mieć przynajmniej score powyżej 10 000 i floor 300 :)

Aa2, nie wiem, czy się dzisiaj wyrobie i zdążę coś napisać na FLD o SDOD, jakby ktoś miał czas i chęci, to niech śmiało napisze temat na FLD. Jak nie, to trudno, najwyżej dopiero jutro świat się dowie o tym ciekawym projekcie :)

Neuer
Ostatnio zmieniony przez Vinyanov 20 Lipiec 2010, 05:34, w całości zmieniany 4 razy  
 
     
Vinyanov 
No way!


Pomógł: 9 razy
Dołączył: 06 Lut 2004
Posty: 2312
Wysłany: 13 Wrzesień 2009, 15:16   

Gratulacje z okazji pierwszej (o ile wiem) implementacji funkcjonalnego zabezpieczenia anty-SD. :D

Nie wiem tylko, po co wprowadzać takie szczegółowe zasady rządzące przybliżaniem wyciągniętych z powtórek liczb w zależności od ich bezwzględnej wartości. Przecież jeśli udało się już wam je wydobyć, to możecie je chyba wyświetlić dokładnie w takiej postaci i z taką dokładnością, z jaką umieściło je w niej Icy Tower (ew. bez paru ostatnich cyfr po przecinku), nie?

PS. Bardziej poprawna nazwa brzmiałaby chyba "Online Slowdown Detector" lub "Detect Slowdown Online". ;)
 
     
NeueR
Wow!


Dołączył: 02 Gru 2005
Posty: 80
Wysłany: 13 Wrzesień 2009, 19:32   

Dzięki za gratulacje ;-) Wybacz również moją patologię językową, już poprawiam ;-)
Co do ustalania poszczególnych wartości, to nie jest tak, że taki mieliśmy kaprys. Trzeba było znależć odpowiedni wzór, żeby to przeliczyć. W przeciwieństwie np. do CCx, to nie kwestia znalezienia offsetu, zamiana z systemu szesnastkowego na dziesiętny i koniec :) Z tym spowalnianiem trzeba było trochę pokombinować, najśmieszniejsze jest to, że najwięcej problemów nie było z qpc, tme, dns, tylko z ... flr! Myśleliśmy, że zaczniemy od czegoś łatwiejszego, a wyszło, że trafiliśmy na najtrudniejsze. Kiedy skończyliśmy flr i zabraliśmy się za pozostałe, wszystko poszło jak z górki (no prawie, jednak myślę, że 0.25 to i tak jest już dokładnie :P ). Poza tym, itrchecker zaokrągla wynik do dwóch miejsc po przecinku, w rzeczywistości dokładność jest przynajmniej do 0.0001 (jak i nie większa). Wogóle strasznie się cieszę, że wzory (bo jest ich kilka) na flr działają (tzn. do 2048 piętra, powyżej tego wyniki będą przekłamywać), bo u mnie itrchecker nie sprawdza powtórek ponad z 1000 piętrami :)

Ech, znowu się rozpisałem, żeby nie pisać kolejnego posta w temacie "Półautomatyczna lista rekordów", możesz Vinyanov wrzucić na serwer ten program od Rammichaela (Icy Tower Replay Tool), chętnie zapoznałbym się z nim, a niestety nie mogę zarejestrować się na jego forum (fatum jakieś, może tam też jestem uznawany za bota?:P)

Pozdrawiam
Neuer
 
     
Vinyanov 
No way!


Pomógł: 9 razy
Dołączył: 06 Lut 2004
Posty: 2312
Wysłany: 13 Wrzesień 2009, 21:17   

NeueR napisał/a:
Trzeba było znależć odpowiedni wzór, żeby to przeliczyć.


Przyznaję, że pierwsze słyszę. Myślałem, że wartości Clk, Qpc, Tme i Dns są przechowywane w powtórkach jako zwyczajne wartości rzeczywiste. Co za tym idzie, sądziłem, że wystarczy odczytać je dla każdego miejsca w powtórce, dla którego je podczas gry sprawdzono i zapisano (tzn. dla każdego miejsca w powtórce, które zostało odnotowane jako posiadające osobną wartość Flr) i wyciągnąć z nich średnie, aby tym samym w przybliżeniu określić, czy cała powtórka jest spowolniona. Ale widać byłem w błędzie i wymagają one jeszcze jakichś dodatkowych przekształceń, aby to stwierdzić. Gdybyś miał ochotę wyjaśnić, o jakich wzorach mówisz, to chętnie bym o tym poczytał. :)

(BTW, nie wiem nawet, co te cztery wartości oznaczają. Clk i Tme są jeszcze mniej lub bardziej oczywiste (chociaż jaka jest pomiędzy nimi różnica - już niezbyt), ale pozostałe dwie nic mi nie mówią, podobnie jak listy rozwinięć tych skrótów (o ile to są skróty) dostępne w Internecie. Ba, nie wiem nawet tego, co w zasadzie reprezentują wartości "0", "50", "100"...)

Cytat:
u mnie itrchecker nie sprawdza powtórek ponad z 1000 piętrami :)


Tak, tak samo było u mnie, pisałem o tym na Jabberze.

Cytat:
nie mogę zarejestrować się na jego forum (fatum jakieś, może tam też jestem uznawany za bota?:P)


NeueR nie może uzyskać dostępu do forum dyskusyjnego... Cóż za ironia... :P
BTW, nie trzeba być tam zalogowanym, aby pobierać załączniki (a ich adresy dostępne są z jego strony głównej). :)
http://board.rammichael.c...type=post&id=13
 
     
NeueR
Wow!


Dołączył: 02 Gru 2005
Posty: 80
Wysłany: 13 Wrzesień 2009, 23:06   

Vinyanov napisał/a:

Przyznaję, że pierwsze słyszę. Myślałem, że wartości Clk, Qpc, Tme i Dns są przechowywane w powtórkach jako zwyczajne wartości rzeczywiste. Co za tym idzie, sądziłem, że wystarczy odczytać je dla każdego miejsca w powtórce, dla którego je podczas gry sprawdzono i zapisano (tzn. dla każdego miejsca w powtórce, które zostało odnotowane jako posiadające osobną wartość Flr) i wyciągnąć z nich średnie, aby tym samym w przybliżeniu określić, czy cała powtórka jest spowolniona. Ale widać byłem w błędzie i wymagają one jeszcze jakichś dodatkowych przekształceń, aby to stwierdzić. Gdybyś miał ochotę wyjaśnić, o jakich wzorach mówisz, to chętnie bym o tym poczytał. :)

Tak, tak samo było u mnie, pisałem o tym na Jabberze.


Hm, dobra, postaram się bardziej przybliżyć temat. Zapisywanie danych dot. spowalniania rozpoczyna się od offsetu D4, a kończy bodajże na offsecie 8A4 (więc naprawdę jest dużo miejsca, podejrzewam, że nawet powtórka z 5000 floor by się zmieściła ...). Każda "linijka" (tzn. clk, qpc, tme, dns, flr) ma zarezerwowane 20 bajtów (po 4 bajty na łebka). No i właściwie to żadna filozofia, otwierając hexedytor od razu rzuca się to w oczy. Pierwszy flr to offset: E4, E5, E6, E7 (228, 229, 230, 231 bajt od początku pliku). Kolejne pojawiają się +=20. E4 nie ma znaczenia, ponieważ wskazuje liczbę po przecinku (a jak wiemy, flr pokazuje tylko całości, w końcu nie może być 85 i pół schodka :D ). Tak więc pozostają nam już tylko 3 bajty do określenia. E5 nazywam umownie "resztą", E6 - liczba, którą należy zamienić z systemu szesnastkowego na dziesiętny, E7 - nazwałem umownie "działem".
Spójrzmy na Twoją powtórkę (http://icytower.kilu.de/download/Vinyanov_404079_924_627.itr):

E4 E5 E6 E7
00 00 A8 42 - 84 (tu jest łatwo - A8 to 168 : 2 = 84)
00 00 18 43 - 152
00 00 51 43 - 209
00 00 89 43 - 274
00 00 A5 43 - 330
00 80 C3 43 - 391
00 00 E3 43 - 454
00 40 01 44 - 518

42 jest (znowu zaznaczam, umownie przeze mnie nazwanym) dzielony podziałem 1:2
43 - 1:1 / 2:1
44 - 4:1 / 8:1

Co znaczy podział np. 2:1? Ano że kolejne liczby w systemie szesnastkowym będą oddalone od siebie o 2 floor (272 - 88, 274 - 89). A jak wychwycił 273, to co wtedy? Wtedy przychodzi ta "reszta", w przypadku podziału 2:1 reszta '80' oznacza +1 (00 00 88 43 - 272, 00 80 88 43 - 273, 00 00 89 43 - 274). A dlaczego działy 43 i 44 mają dwa podziały? ponieważ co 128 liczb w systemie szestnastkowym następuje przerwa i przejście na wyższy podział (*2). Każdy podział (zaczynając od 2:1) ma reszty: 2:1 - jedną, 4:1 - trzy, 8:1 - siedem

Nom, to tyle, jeśli chodzi o teorie. Po teorii trzeba napisać wzory (dla każdego podziału inny lub trochę inny)
Właściwie podałem całe rozwiązanie "teoretyczne", wystarczy to zebrać do kupy i napisać skrypt (co Jacob uczynił) i Online Slowdown Detector gotowy. Chyba Vinyanov nie powiesz mi, ze z tym flr było mało roboty? :D Dobrze, ze miałem już "pewne" doswiadczenie, jesli chodzi o analize, wiec jakoś w miarę szybko ruszyłem z miejsca, ale musiałem trochę pogłówkować :)

Dzięki za linka :)
 
     
Vinyanov 
No way!


Pomógł: 9 razy
Dołączył: 06 Lut 2004
Posty: 2312
Wysłany: 14 Wrzesień 2009, 10:06   

Cytat:
4 nie ma znaczenia, ponieważ wskazuje liczbę po przecinku (a jak wiemy, flr pokazuje tylko całości, w końcu nie może być 85 i pół schodka :D ).


Z tego, co widzę, w mojej powtórce zawsze siedzi tam 0. :D

Cytat:
Ano że kolejne liczby w systemie szesnastkowym będą oddalone od siebie o 2 floor (272 - 88, 274 - 89).


Aha, OK. Inaczej mówiąc: ponieważ w pojedynczym bajcie (tu: w 3. bajcie każdego 4-bajtowego bloku, w którym przechowywane są dane dotyczące wysokości wartości Flr) może być przechowywane tylko 256 liczb, Icy Tower wykorzystuje bajt następny i poprzedni, aby umieć przechować w powtórce wszystkie możliwe wartości Flr (bo gracz może zdobyć więcej, niż 255. piętro). Nie widzę tylko, w jaki sposób z każdej trójki bajtów (np. 0x40, 0x1 i 0x44) powstaje ostatecznie wartość wynikowa typu 518, ale to chyba nieistotne. Jestem jeszcze ciekaw, dlaczego Johan po prostu nie umieścił tej wartości w powtórce tak, jak jest ona przechowywana w pamięci programu...

Podziwiam was podwójnie: że umiecie i że chcecie takie rzeczy dekodować po prostu dla dobra społeczności. :)
 
     
NeueR
Wow!


Dołączył: 02 Gru 2005
Posty: 80
Wysłany: 14 Wrzesień 2009, 13:41   

W każdej powtórce siedzi tam zero :P

Cytat:

Aha, OK. Inaczej mówiąc: ponieważ w pojedynczym bajcie (tu: w 3. bajcie każdego 4-bajtowego bloku, w którym przechowywane są dane dotyczące wysokości wartości Flr) może być przechowywane tylko 256 liczb, Icy Tower wykorzystuje bajt następny i poprzedni, aby umieć przechować w powtórce wszystkie możliwe wartości Flr (bo gracz może zdobyć więcej, niż 255. piętro).


Ładnie to podsumowałeś :) Wywal to zdanie z ostatniego nawiasu i oto mi chodziło :P

Cytat:

Nie widzę tylko, w jaki sposób z każdej trójki bajtów (np. 0x40, 0x1 i 0x44) powstaje ostatecznie wartość wynikowa typu 518, ale to chyba nieistotne. Jestem jeszcze ciekaw, dlaczego Johan po prostu nie umieścił tej wartości w powtórce tak, jak jest ona przechowywana w pamięci programu...


No właśnie, już o tym pisałem - trzeba ułożyć wzór, który będzie działał dla każdego z "podziałów" :) Ogólnie sam widzisz, że nie jest to rzecz prosta (cała analiza + wzór, trochę czasu to zajmuje), a odpowiadając na zdanie o Johanie: zapewne nie chciał, żeby dane dot. spowalniania były tak łatwe do odczytania jak score, floor, combo, ccx, jsx. Gdyby tak było, to Rammichael zapewne dodałby to do swojego programu i cały itrchecker byłby do niczego. Ogólnie Johan nawet pomysłowo zrobił to z tymi danymi dot. spowalniania, no ale skoro we dwóch zajęło nam ~12 godzin (analiza, wyprowadzenie wzorów, napisanie skryptu), to dla Rammichaela to zapewne 2 godziny :/ Miejmy nadzieję, że nie prędko wróci, bo wtedy trzeba będzie znowu wymyślać wszystko na nowo (a teraz, póki nie istnieje żadne narzędzie do edytowania nagłówków dla IT 1.4, nasz projekt jest w 95%* automatyczny, czyli to, o czym zawsze wszyscy marzyli, w tym również i ja :D )

*niestety nie 100%, jest jeszcze jedna mała błahostka, ale nie będę pisał o tym publicznie ;) praktycznie niegroźna (bo nie dotyczy rezultatów), ale trochę irytująca (poza tym, jestem ciekawy, czy oprócz mnie wpadnie ktoś na tak absurdalny pomysł i wyśle tego rodzaju powtórkę) :)
 
     
Tojeczek
Sweet!


Dołączył: 27 Cze 2009
Posty: 21
Wysłany: 15 Wrzesień 2009, 14:26   

Nie zauwazyłem ale moze bedzie cos takiego jak "ranking" powtorek ale taki wiekszy... do stu? I np. sie rozwija i gdy nacisniesz na swoja powtorke pokazuje ci sie ranking w danej tabeli... i jesli nie miesci sie w stu to cos tam pisze.... jedynie sugeruje

Ok przeoczylem cos ale pomysl moze byc
 
 
     
artclen 
Yo!

Dołączył: 01 Cze 2010
Posty: 1
Skąd: anglia
Wysłany: 14 Czerwiec 2010, 01:28   

czyszczenie dywanow wykladzin na terenie west sussex surrey

Ostrzeżenie za spam. / mattirab
Ostatnio zmieniony przez mattirab 14 Czerwiec 2010, 16:23, w całości zmieniany 1 raz  
 
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Strona wygenerowana w 0,1 sekundy. Zapytań do SQL: 16