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

Poprzedni temat «» Następny temat
Konwertowanie powtórek pomiędzy różnymi wersjami IT
Autor Wiadomość
NeueR
Wow!


Dołączył: 02 Gru 2005
Posty: 80
Wysłany: 21 Listopad 2009, 18:31   Konwertowanie powtórek pomiędzy różnymi wersjami IT

Witam!

Zainspirowany wczorajszym postem Vinyanova, postanowiłem sprawdzić, czy istnieje możliwość przekonwertowania powtórki 1.4 do 1.3. Tą myślą podzieliłem się również z Jacobem, którego również zainteresował się tematem. Po paru godzinach walki dalej nie jesteśmy w stanie stwierdzić, czy da się przekonwertować, czy nie :/ Nasze wyniki:

Neuer (IT 1.4): Neuer_12006_151_80.itr
Neuer (IT 1.3): Neuer_12006_151_80.itr
Całkowita liczba makr: 211 (1.3 i 1.4)
Ziarno piętra: 0x6627
Status: operacja zakończona sukcesem

Jacob (IT 1.4): Jacob_3047_71_47.itr
Jacob (IT 1.3): Jacob_2428_73_39.itr
Całkowita liczba makr: 124 (1.3 i 1.4)
Ziarno piętra: 0x3a33
Status: operacja nie powiodła się

Tak więc mamy 3 rozbieżne wyniki:
1) powtórka da się przekonwertować (Neuer), makra, floor seed się zgadzają, końcowy wynik też
2) powtórka da się przekonwertować (Jacob), makra, floor seed się zgadzają, ale końcowy wynik NIE
3) powtórki wogóle nie da się przekonwertować (nie otwiera się w IT 1.3)

Przypadek nr 1: brak zastrzeżeń, wszystko się udało
Przypadek nr 2: powtórka przekonwertowana (dająca się otworzyć w IT 1.3), ale wynik różni się od tego z IT 1.4. Dlaczego? Spójrzcie na ~60 schodek! W IT 1.4 jest on bardziej po lewej stronie, natomiast w IT 1.3 - po prawej! A floor seed jednakowe!?
Przypadek nr 3: jeszcze do tego nie doszliśmy :P

Przy okazji, jeśli chcecie mieć możliwość zobaczenia floor seed i wszystkich makr z powtórki zgodnej z IT 1.4 (z IT 1.3 ściągnijcie sobie program od Rammichaela), zapraszam do użycia tego skryptu napisanego przez Jacoba.

Tak więc konwertowanie powtórek jest możliwe, ale (chyba) nie zawsze (przypadek Jacoba pokazuje, że niektóre ziarna piętr uległy zmianie).

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


Pomógł: 9 razy
Dołączył: 06 Lut 2004
Posty: 2312
Wysłany: 21 Listopad 2009, 20:40   

Cytat:
Po paru godzinach walki dalej nie jesteśmy w stanie stwierdzić, czy da się przekonwertować, czy nie :/


...Haha, tak po prostu porozmawialiście, postanowiliście zmierzyć się z tym problemem, zasiedliście do klawiatur i po x godzinach pracy przeszliście do wyciągnięcia wniosków (da się/nie da się/inne)? To niewiarygodne. Jeszcze wczoraj nie podejrzewałbym, że istnieje jakikolwiek gracz oprócz RaMMicHaeLa i RamboBonesa (i ew. JB, gdyby był jeszcze zaangażowany w społeczność tak, jak bywał dawniej), który jest wystarczająco utalentowany i aktywny, aby być w stanie rozpocząć prace nad takiej rangi projektem od ręki. Dobrze wiedzieć, że mamy takich ludzi na polskojęzycznej scenie. ;)

Miło, że pomysł was zainspirował. :)

Cytat:
Przypadek nr 2: powtórka przekonwertowana (dająca się otworzyć w IT 1.3), ale wynik różni się od tego z IT 1.4. Dlaczego? Spójrzcie na ~60 schodek! W IT 1.4 jest on bardziej po lewej stronie, natomiast w IT 1.3 - po prawej! A floor seed jednakowe!?


Jest też krótszy. Hm. Uwaga, banały: może w 1.4 poczyniono jakąś dyskretną, nieoczywistą zmianę, która skutkuje zmianą sposobu przełożenia ziarna na pozycje schodków tylko w jakimś szczególnym, skrajnym przypadku? Może np. w toku wprowadzania zmian związanych z custom mode Johan postanowił zmienić typ lub zakres jakiejś zmiennej lub stałej, co spowodowało, że jeśli uczestniczy ona w określeniu położenia schodków, a jej wartość przekroczy w danym momencie określoną (np. bardzo wysoką lub bardzo niską) wartość graniczną, to ten fakt spowoduje nagle odmienne zachowanie gry (ulokowanie schodka)?

Tak czy inaczej - gdyby spędzić nad tym zadaniem dodatkowe 10 minut, to można by napisać skrypt systemowy, który konwertuje np. 2000 powtórek z 1.4 na 1.3, a następnie sprawdza (poprzez ITRCHECK), czy wystąpił w nich ów błąd. W ten sposób sprawdzilibyśmy, jaki odsetek powtórek on dotyka (tj. czy w ogóle jest on godny uwagi).

PS. Jeśli konwertery powtórek faktycznie powstaną, zaproponuję, aby powtórki, które mają funkcjonować wyłącznie w danej wersji Icy Tower zapisywać z rozszerzeniem, po którym następuje cyfra wyrażająca docelową wersję gry, tj. .itr4, .itr3 i .itr2. W ten sposób każdy gracz będzie mógł powiązać w swoim systemie każdy typ powtórek z właściwym dla tej wersji plikiem wykonywalnym IT.
 
     
NeueR
Wow!


Dołączył: 02 Gru 2005
Posty: 80
Wysłany: 21 Listopad 2009, 22:49   

Dokładnie tak było :) Zresztą, nie wiem, co w tym dziwnego, podobnie zrobiliśmy z Online Slowdown Detector, 11 września padła propozycja, 13 września skrypt był już gotowy i zintegrowany ze stroną ...

Dobra, a wracając do tematu:
- Przypadek 3 - rozwiązany - skrypt zapominał liczyć wartości dla makr left-right, co skutkowało niewalidującym replay hashem (więc powtórki się nie otwierały :P )
- Przypadek 2 - przekonwertowałem pare powtórek i wiem, gdzie jest problem: Johan zmodyfikował lekko funkcję generująca schodki. Schodek 30, 60, 120 ... (dalej nie wiem, ale mając te 3 wartości stwierdzam, że to ciąg rekurencyjny o wyrazie początkowym a1 = 30 i wzorze ogólnym an+1 = 2an, więc prawdopodobnie kolejne wartości to 240, 480, 960 ...). No i kupa, z tego wynika, że raczej mały odsetek powtórek da się przekonwertować (i vice versa w drugą stronę - 1.3 => 1.4), no chyba że ktoś miał takiego farta, że przeskakiwałby te punkty kontrolne, to wtedy powtórka będzie przekonwertowana (patrz moja powtórka, gdzie nieświadomie udało mi się ominąć 3 punkty kontrolne).

Neuer
 
     
Vinyanov 
No way!


Pomógł: 9 razy
Dołączył: 06 Lut 2004
Posty: 2312
Wysłany: 22 Listopad 2009, 06:45   

NeueR napisał/a:
raczej mały odsetek powtórek da się przekonwertować


Szkoda. Może przynajmniej niektóre style (JC 4?) będą mogły być (w większości przypadków) konwertowane bez szwanku. Dzięki, że spróbowaliście. :)

NeueR napisał/a:
Schodek 30, 60, 120 ... (dalej nie wiem, ale mając te 3 wartości stwierdzam, że to ciąg rekurencyjny o wyrazie początkowym a1 = 30 i wzorze ogólnym an+1 = 2an, więc prawdopodobnie kolejne wartości to 240, 480, 960 ...).


A schodek 90. zawsze jest na swoim miejscu?

NeueR napisał/a:
Przy okazji, jeśli chcecie mieć możliwość zobaczenia floor seed i wszystkich makr z powtórki zgodnej z IT 1.4 (z IT 1.3 ściągnijcie sobie program od Rammichaela), zapraszam do użycia tego skryptu napisanego przez Jacoba.


BTW. Przetestowałem jedną powtórkę:

http://icytower.kilu.de/testy/moving.php napisał/a:
Left right jump - 6 frames
Left right jump - 9 frames


Czy dwa identyczne makra występujące pod rząd są normalne? ;)
 
     
NeueR
Wow!


Dołączył: 02 Gru 2005
Posty: 80
Wysłany: 22 Listopad 2009, 12:19   

Jednak nie jest to ciąg rekurencyjny. W tej powtórce zmiana schodków w porównaniu z IT 1.4 występuje na: 60, 90 i 120. Natomiast w tej powtórce zmiany są w: 30, 60, 90, 180, 210. Co ciekawe, doszłem do 515 floor, a problem znikł wraz ze schodkiem 250 (jeśli dobrze się orientuję, to właśnie do 250 rozmiar schodka się zmienia, a od 250 jest stały, więc moja nowa teoria jest taka, że zmiany w położeniu/rozmiaru schodka dotyczy tylko wartości 30,60,90,120,150,180,210,240)

Przekonwertowałem 13 powtórek (3 swoje + 10 powtórek z listy rekordów "Scores" z icytower.kilu.de) - tylko 3 zakończyły się sukcesem (z czego 2 moje, ale ja byłem świadomy omijaniem tych schodków, więc de facto tylko powtórka Icy się liczy :P ). 1/10 - słabiutko, tak jak mówiłem, raczej z tego pożytku nie będzie (no, chyba że wszyscy zaczną nagle omijać te schodki, w co szczerze wątpie :D ). Wszystkie powtórki do zobaczenia tutaj

Dwa identyczne makra pod rząd? Hm, raczej nie :) Poza tym, maksymalną wartość, jaką widziałem dla left-right-jump to 2, a w 90% przypadkach można spotkać się z 1, a tu 6,9? I to pod rząd? Można prosić o uploadowanie tej powtórki?

Neuer
 
     
Vinyanov 
No way!


Pomógł: 9 razy
Dołączył: 06 Lut 2004
Posty: 2312
Wysłany: 22 Listopad 2009, 13:03   

NeueR napisał/a:
Jednak nie jest to ciąg rekurencyjny. W tej powtórce zmiana schodków w porównaniu z IT 1.4 występuje na: 60, 90 i 120. Natomiast w tej powtórce zmiany są w: 30, 60, 90, 180, 210.


To by pasowało, bo Icy Tower zwęża ponoć maksymalną długość schodków co 30 pięter właśnie. Może to właśnie zmienna, która odpowiada za ustalenie ich długości odpowiada za zmianę ich położenia.

NeueR napisał/a:
jeśli dobrze się orientuję, to właśnie do 250 rozmiar schodka się zmienia, a od 250 jest stały


Artykuł na Wikipedii mówi inaczej. Według niego granicą pomiędzy zmienną i stałą długością schodków (patrz ukryta częśc artykułu) jest piętro 240., a nie 250. Ale nie pamiętam już, na czym się opierałem tworząc tę tabelę... chyba przeczytałem o tych wartościach na FLD.

NeueR napisał/a:
Dwa identyczne makra pod rząd? Hm, raczej nie :) Poza tym, maksymalną wartość, jaką widziałem dla left-right-jump to 2, a w 90% przypadkach można spotkać się z 1, a tu 6,9? I to pod rząd? Można prosić o uploadowanie tej powtórki?


Jasne, jest w załączniku.
 
     
NeueR
Wow!


Dołączył: 02 Gru 2005
Posty: 80
Wysłany: 22 Listopad 2009, 16:40   

Rozwiązanie jak powyżej - skrypt zapominał pokazywać wartości left right :) Ogólnie, nie podobają mi się coś te wartości (left-right-jump 6, left-right-jump 9, left-right 30 (?!!)). W IT 1.4 jest inaczej liczony replay hash, poszczególne makra też inaczej się przelicza - gdzieś musi być haczyk :D

Co do długości schodków, dzięki za informacje. Właściwie to celowałem z tą wartością (250), niewiele się pomyliłem :)

Neuer
 
     
Vinyanov 
No way!


Pomógł: 9 razy
Dołączył: 06 Lut 2004
Posty: 2312
Wysłany: 22 Listopad 2009, 19:05   

Cytat:
Ogólnie, nie podobają mi się coś te wartości (left-right-jump 6, left-right-jump 9, left-right 30 (?!!))


Hm. Skoro już zwracasz na to uwagę, to - faktycznie... Czy 30 klatek nie powinno z definicji, wg której gra domyślnie uruchamiana jest z częstotliwością 30 FPS, trwać 1 sekundę? Jeśli tak, to rzeczywiście są to nieprawdopodobne liczby.

Cytat:
Rozwiązanie jak powyżej - skrypt zapominał pokazywać wartości left right :)


I ja tego nie zauważyłem? :| Źle ze mną.
 
     
Jacob
Fantastic!



Dołączył: 13 Lut 2005
Posty: 328
Wysłany: 8 Luty 2010, 17:00   

Ok, nie bede zakladal nowego tematu, wiec podepne sie pod ten. Jak wiadomo, Icy Tower Replay Editor nie zezwalal na modyfikacje pola "Player name", przez co byl praktycznie bezuzyteczny dla osob, ktore chcialy sobie troche pooszukiwac ;) Jako ciekawostke podam, jak mozna bylo sobie z tym poradzic (tekst ponizej pochodzi z Redaktorium, wersja 1.3)

Przyklad:

Ściągam tę powtórkę (wersja 1.3, ostatnie 10 bitów jest zerami). Zmieniam w skrypcie pierwszą linijkę, wpisując nazwę pliku (czyli Vinyanov_51110_271_220.itr). Uruchamiam skrypt (python cleaner.py) i jako output otrzymuje:

Hash macros: 225280
Hash score: 357770
Hash floor: 3523
Hash combo: 5060
Hash seed: 339184
Hash macros 2: 4062613
Original replay hash: 0x16e622a9
New replay hash: 0x1699f113

Teraz otwieram hexedytor, otwieram powtórke (cleaner.itr) i zmieniam replay hash (hex (oryginalny): A9 22 E6 16, (btw. przypominam o odwróconej kolejności!) zmieniamy na hex: 13 F1 99 16) Skrypt wyzerował wartości score, floor, combo, floor seed zmienił na 0x0000 i wywalił wszystkie makra. Próbuję otworzyć w IT 1.3 - cholera, to działa! Moje combo też spełnia powyższe założenie, możesz sobie przetestować.

** Skrypt Cleaner

Edycja: No to skoro udowodniłem odejmowanie, to teraz w drugą stronę: dodawanie :D Zedytowałem ten skrypt w pythonie, żeby otwierał "oczyszczoną" powtórkę (wyzerowane score, combo, floor etc.), otwierał dowolną powtórkę, kopiował z niej makra i zapisywał wszystko do kolejnej :P

Scenariusz:
1) Otwieram cleaner.py, jako powtórkę, którą chce "oczyścić" podają
2) python cleaner.py
Hash macros: 225280
Hash score: 357770
Hash floor: 3523
Hash combo: 5060
Hash seed: 339184
Hash macros 2: 4062613
Original replay hash: 0x16e622a9
New replay hash: 0x1699f113
3) Otwieram powtórkę cleaner.itr w hexedytorze, zamieniam hash: A9 22 E6 16 na 13 F1 99 16. Zapisuje. Sprawdzam. Działa!
4) Otwieram copy.py, jako oryginal ustawiam powtorke cleaner.itr (oczyszczona ze smieci), a powtorke, z ktorej chce pobrac makra ustawiam na Jacob_2056381_1434_1429.itr. Plikiem wynikowym bedzie fake.itr
5) python copy.py
Hash from macros (moving): 125908583
Hash from macros (const - 640): 1516800
All: 127425383 - :)
Number of new macros: 0x945
Original replay hash: 0x1699f113
New replay hash: 0x1e324c7a
6) Otwieram powtorke fake.itr w hexedytorze, zamieniam hash: 13 F1 99 16 na 7A 4C 32 1E oraz zmieniam (offset 06,07) 03 00 na 45 09. Zapisuje. Sprawdzam. Działa! Powtórka podpisana jako Vinyanov, z wynikiem 1429 combo :lol:

** Skrypt Copy

MfG Jacob
_________________
Deutsche IT Nationalmannschaft
Jacob's Website
 
     
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,36 sekundy. Zapytań do SQL: 16