Data Shenanigans - The programming blog at its finest!
  • O mnie
  • Programy
Inżynieria wsteczna

Gruntz – specyfikacja WWD

luty 3, 2019 by Tomalla Brak komentarzy

Pliki o rozszerzeniu WWD (Wap World Document) służą do przechowywania poziomów w grach opartych na silniku WAP32. Do edycji tych plików służy edytor poziomów: Gruntz Level Editor (GLE) w przypadku gry Gruntz lub Wap World dla gry Claw. Edytory pod względem implementacyjnym praktycznie w ogóle się nie różnią, ale jako że GLE dodaje parę nowych elementów względem swojego poprzednika, artykuł będzie poświęcony właśnie plikom WWD produkowanym przez edytor GLE, które są funkcjonalnym nadzbiorem poziomów WWD do gry Claw.

Poniżej znajduje się formalna specyfikacja formatu plików WWD z uwzględnieniem delikatnych różnic pomiędzy grami Gruntz oraz Claw.

Na początek garść podstawowych informacji, jaka jest struktura poziomów WWD. Dłuższy czas się zastanawiałem nad tym, czy tłumaczyć te terminy na język polski, ale w końcu stwierdziłem, że nie będę pisał potworków w stylu: “na plane’ie znajdują się tiles’y”. Być może zbiorę od wielu cięgi za te tłumaczenia, no ale trudno, biorę to na klatę 😛

  • plane – w wolnym tłumaczeniu “płaszczyzna”. Każdy poziom jest złożony z co najmniej jednej płaszczyzny oznaczonej jako główna, na której dzieje się akcja gry. Pozostałe płaszczyzny są opcjonalne i są używane w celach dekoracyjnych.
  • tiles – spotkałem się z tłumaczeniem “klocki”, ale chyba bardziej wolę termin “kafelki”. Złożona jest z nich każda płaszczyzna.
  • tile properties – każdy kafelek na głównej płaszczyźnie może mieć różną funkcjonalność i w różny sposób reagować z otoczeniem. Informacje te są opisane we właściwości kafelków.
Continue reading
Nieskategoryzowane

Gruntz Decryptor 1.1.0 – dekodowanie kodów do gry

listopad 14, 2018 by Tomalla Brak komentarzy

Jest już dostępna nowa wersja programu Gruntz Decryptor, służącego do manipulacji plikami ATTRIBUTEZ.TXT oraz CHEATZ.TXT w grze Gruntz.

W wersji 1.1.0 dodałem możliwość dekodowania kodów do gry. Dotychczas pliki ATTRIBUTEZ.TXT oraz CHEATZ.TXT były jak najbardziej deszyfrowane, ale kody do gry pozostawały w zakodowanej formie. Teraz można je swobodnie edytować, jak i dodawać nowe kody do gry.

Szczegóły odnośnie programu, jak i aktualizacji są dostępne na stronie głównej projektu: Gruntz Decryptor.

Program

Gruntz Decryptor

sierpień 18, 2018 by Tomalla Brak komentarzy

W poprzednich artykułach wyjaśniłem czym są i jak odczytać pliki ATTRIBUTEZ.TXT oraz CHEATZ.TXT. Są to zaszyfrowane pliki konfiguracyjne zawarte w archiwum GRUNTZ.REZ. Program Gruntz Decryptor umożliwia właśnie ich modyfikację. Dzięki niemu można taki plik odszyfrować, ręcznie zmienić parametry pliku konfiguracyjnego, a następnie z powrotem zaszyfrować, by gra Gruntz go poprawnie odczytała. Program umożliwia również automatyczne dekodowanie kodów do gry, dzięki czemu można je modyfikować, jak i dodawać nowe.

W związku z tym, że jedynie plik ATTRIBUTEZ.TXT jest faktycznie wykorzystywany przez grę, a plik CHEATZ.TXT jest jedynie pozostałością z czasów jej tworzenia, funkcja powrotnego szyfrowania pliku CHEATZ.TXT jest w zasadzie niczemu niepotrzebna; zostawiłem jednak taką możliwość dla kompletności programu.

POBIERZ
Gruntz Decryptor 1.1.0.zip (1.23 MB)
Continue reading
Inżynieria wsteczna

Gruntz – rozczytywanie pliku CHEATZ.TXT

grudzień 10, 2017 by Tomalla Brak komentarzy

W poprzednim artykule omawiałem ze szczegółami budowę pliku ATTRIBUTEZ.TXT. Teraz pora na kolejny i zarazem ostatni plik z tej samej kategorii, a mianowicie – plik CHEATZ.TXT. W związku z tym, że oba pliki mają ze sobą wiele wspólnego, przed przeczytaniem tego artykułu polecam najpierw zapoznać się z artykułem poświęconym plikowi ATTRIBUTEZ.TXT, nawet pobieżnie. Powinno to dać pewien zarys tego, z czym się teraz mierzymy.

Plik CHEATZ.TXT miał dla mnie szczególne znaczenie. Po pierwsze, sposób szyfrowania wykorzystany w pliku ATTRIBUTEZ.TXT odkryto podczas mojej nieobecności – byłem wówczas w trakcie stosunkowo dłuższej przerwy od Gruntzów i jak wróciłem na forum, stanąłem przed faktem dokonanym. Śmiesznie się czułem na samą myśl, że tak wielkie odkrycie ominęło mnie szerokim łukiem. Po drugie, okazało się, że plik ATTRIBUTEZ.TXT zawiera naprawdę ważne rzeczy, w tym – kody do gry. Z całych 148KB, jakie zajmuje plik, prawie 5.5KB stanowią same kody (jest ich łącznie 69). Tymczasem plik CHEATZ.TXT nie ma nawet 1KB i jest ponad sześć razy mniejszy niż same kody z pliku ATTRIBUTEZ.TXT! Prowokuje to pytanie, co też takiego znajduje się w tym pliku? Czy rzeczywiście są tam kody do gry, jak sugerowałaby nazwa? Jeżeli tak, to musiałoby ich być naprawdę niewiele, o wiele mniej niż w pliku ATTRIBUTEZ.TXT. A po trzecie – wystarczy spojrzeć na samą lokalizację pliku. Pełna ścieżka do niego to mianowicie STATEZ\CREDITZ\PALETTEZ\CHEATZ.TXT. Ciekawe, czy ma ona jakikolwiek związek z zawartością pliku.

Continue reading
Inżynieria wsteczna

Gruntz – rozczytywanie pliku ATTRIBUTEZ.TXT

grudzień 9, 2017 by Tomalla Brak komentarzy

Spośród tysięcy różnych plików w archiwum GRUNTZ.REZ dwa są w pewnym sensie wyjątkowe i niepowtarzalne na swój sposób. Są to mianowicie pliki GAME\ATTRIBUTEZ.TXT oraz STATEZ\CREDITZ\PALETTEZ\CHEATZ.TXT. W sumie w archiwum są cztery pliki z rozszerzeniem *.TXT. Oprócz tych dwóch wymienionych wcześniej, są jeszcze pliki GAME\VERSION\VERSION.TXT (nie wykorzystywany przez samą grę, zawierający jedynie napis “1.00“) i STATEZ\CREDITZ\CREDITZ.TXT (napisy końcowe wyświetlane po zakończeniu gry z zabawnymi gagami na końcu). Ale o ile te dwa pliki z łatwością można rozczytać za pomocą zwykłego notatnika, o tyle na plikach ATTRIBUTEZ.TXT oraz CHEATZ.TXT można sobie połamać zęby – jak otworzy się je w notatniku, pojawiają się bowiem … same krzaki. Jeżeli ktoś chce je mieć do wglądu, można je pobrać tutaj:

  • ATTRIBUTEZ.TXT (147KB)
  • CHEATZ.TXT (1KB)

Chwila moment, przecież są to pliki binarne! Kiedy pierwszy raz zobaczyłem te pliki wiele lat temu, poczułem momentalne rozgoryczenie tym faktem. Byłem bowiem wówczas przekonany o tym, że nigdy nie poznam zawartości tych plików. Co jak co, ale plik CHEATZ.TXT może wywołać ślinotok u co niektórych ze względu chociażby na samą nazwę. I co on robi w folderze PALLETEZ?

W tym poście postaram się wyjaśnić, czym tak naprawdę jest plik ATTRIBUTEZ.TXT i czemu służy. W kolejnym poście natomiast zajmę się plikiem CHEATZ.TXT.

Continue reading
Inżynieria wsteczna

Gruntz – krótka historia modowania

grudzień 8, 2017 by Tomalla Brak komentarzy

Gruntz … praktycznie gra mojego dzieciństwa (ustępująca jedynie grze The Neverhood) i gra, którą darzę szczególną sympatią. Zresztą nie tylko ja – od samego początku, w momencie, kiedy gra wyszła w 1999, powstało co najmniej parę różnych Gruntzowych społeczności oraz fanpage’ów. Czas nie oszczędzał nikogo i wszystkie powoli się wykruszały aż zostało w gruncie rzeczy (pardon the pun 😉 ) jedynie forum GooRoo’s Gruntz. Forum funkcjonuje już od ponad 14 lat (sam jestem na niej zarejestrowany już od lat dziesięciu) i naturalnie miał okresy większej i mniejszej aktywności. Ale dzięki założycielowi forum – Ed’a Kivi – wszystko prężnie się rozwija. Większość aktywności forum opiera się w dużej mierze na grupie tzw. Designerów, którzy od czasu do czasu tworzą nowe poziomy, w które grają pozostali fani. W momencie pisania tego posta, poziomów jest już 619 i ta liczba ciągle się powiększa (12 z nich jest nawet mojego autorstwa), najnowszy poziom wyszedł nawet niespełna miesiąc temu. Więc samo forum ma się jeszcze dobrze 😉

Pokusiłbym się nawet o stwierdzenie, że gra Gruntz skupiła wokół siebie pewnego rodzaju fandom. Są tworzone ilustrowane opisy przejścia (tzw. walkthroughs) standardowych poziomów i tych niestandardowych (również w formie filmów video), są toczone niezliczone dyskusje odnośnie ewentualnych sequelów gry (są nawet próby stworzenia takowego), nawet był okres czasu, kiedy tworzone były krótkie komiksy o tematyce Gruntzów. Czego to ludzie nie wymyślali. Oprócz tego na forum panuje maniera specyficznego zapisywania końcówek angielskich wyrazów, które kończą się na literę “s”. Zamiast niej mianowicie piszę się literę … “z”. Tak więc przeglądając forum bardzo często spotka się takie słowa, jak “Switchez”, “Cheatz”, czy “Toolz” zamiast zwykłych “Switches”, “Cheats” i “Tools”. Taki zapis nie ogranicza się jedynie do rzeczowników liczby mnogiej – dajmy chociażby wyrażenie “Indiana Jonez” jako przykład (a sto punktów dla tych, którzy wiedzą, gdzie to wyrażenie jest wykorzystywane w grze!). Ta specyficzna maniera zapoczątkowana została przez samych twórców gry (wystarczy spojrzeć chociażby na nazwę gry – “Gruntz”).

Continue reading
Program

Gruntz REZ Patcher 1.0.0

grudzień 12, 2012 by Tomalla Brak komentarzy

Pierwsza wersja programu do modyfikowania plików REZ w oparciu o patche, lub “łatki”, jak kto woli. Podaje się listę patchy, które program następnie analizuje i na ich podstawie dodaje lub nadpisuje pliki w oryginalnym pliku REZ.

Program stworzony z myślą o modowaniu gry Gruntz! Przynajmniej w jakimś stopniu.

Nie ukrywam, że w związku z tym, że jest to pierwsza wersja programu, błędy mogą występować. Jak ktoś coś znajdzie, można je zgłosić w komentarzach pod tym postem, jak również pomysły na nowe funkcje programu lub inne konstruktywne uwagi. Nie wiem czy jest sens tworzyć w tym celu jakieś osobne miejsce, najwyżej później się coś wymyśli.

POBIERZ
Gruntz REZ Patcher 1.0.0.zip (1.45 MB)

Poniżej zrzuty ekranu podczas dodawania nowego tilesetu “Virtual Reality” autorstwa Zu i efekt końcowy:


Kiedy wydałem “pierwszą” wersję 0.1.0, obiecałem zająć się GUI, żeby program był chociaż w jakimś stopniu “użytkowalny”. Ostatecznie nowy program nie ma jednak nic wspólnego z pierwowzorem, który niefortunnie nazwałem właśnie “Gruntz REZ Patcher”, a nie “Gruntz REZ Packer”, co by było trochę bardziej … adekwatne do jego prawdziwej funkcji. Bywa.

Krótka instrukcja obsługi i opis działania:
Przed patchowaniem program robi kopię zapasową oryginalnego pliku REZ w folderze z samym programem. Później traktuje go jako “bazę” podczas patchowania. Plik kopii zapasowej ma nazwę “BACKUP.REZ”. Program jest podzielony niejako na dwie “części” – pierwsza lista na górze, zatytułowana Pool, to podręczna lista z patchami, z których chcesz korzystać. Żeby patch był uwzględniony podczas patchowania, musi znaleźć się na dolnej liście o nazwie Patches. Patche w tej liście są odczytywane z góry na dół (w razie konfliktów pliki z patchy najniżej mają “priorytet”). Szybki sposób na dodanie patchy do tych list to ich przeciągnięcie na okno z programem.

Patchami póki co mogą być pliki z rozszerzeniem *.zip albo *.grp. Te drugie to w istocie nic innego, jak archiwum w formacie ZIP, program jednak interpretuje go w nieco inny sposób. Szuka w archiwum pliku patch.txt – plik ten zawiera dodatkowe informacje o patchu, jak autor i nazwa własna patcha. Informacje te program później wyświetla w nagłówkach obu list. Żeby program odczytał plik patch.txt, ten musi być na szczycie hierarchii w archiwum (czyli nie może być w żadnych innych podkatalogach).

Przykładowa zawartość pliku patch.txt:

[patch]
author=Foo The Third
name=My name for a patch v5.7.0
Program

Gruntz REZ Patcher 0.1.0

październik 13, 2012 by Tomalla Brak komentarzy

Skończyłem pierwszą wersję programu “Gruntz REZ Patcher”. Słowem wstępu: program jest pisany przeze mnie dla gry Gruntz, ale bardzo prawdopodobne, że będzie również działał i dla innych gier Monolith’u, takie jak Claw (Kapitan Pazur), czy też Get Mediaval. Z założenia ma umożliwić tworzenie modów do gry, czyli stałoby się możliwe tworzenie nowych tile setów, dodawanie nowych image setów, dźwięków itp. co dotychczas było niemożliwe przy aktualnym stanie rzeczy.

Póki co, zaimplementowałem same najważniejsze rzeczy, czyli funkcję tworzenia paczki REZ oraz możliwość wyeksportowania jej zawartości na dysk. Aplikacja działa przez wiersz poleceń i nie ma GUI – dodam go później. Na razie ma działać.

POBIERZ
Gruntz REZ Patcher 0.1.0.zip (485.32 KB)

Lista argumentów jest traktowana jako lista poleceń – są analizowane jedna po drugiej i na bieżąco wykonują określone zadania. Póki co są cztery możliwe polecenia:

-dr <directory path> <output REZ file>
-rd <REZ file> <output directory path>
-lr <REZ file>
-l

Przykładowa linia poleceń może więc wyglądać następująco:

::Spakowanie całego katalogu z subfolderami do pliku REZ
"Gruntz REZ Patcher.exe" -dr "C:\Gruntz Data\\" "C:\Gruntz\GRUNTZ.REZ"

::Wyeksportowanie zawartości pliku REZ do katalogu i wypisanie jego zawartości
"Gruntz REZ Patcher.exe" -rd "C:\Gruntz\GRUNTZ.REZ" "C:\Gruntz Data\\" -l

::Wypisanie zawartości pliku REZ
"Gruntz REZ Patcher.exe" -lr "C:\Gruntz\GRUNTZ.REZ"

W kolejnej wersji nacisk będzie postawiony na automatyczną konwersję plików PID, zarówno podczas tworzenia paczki REZ jak i podczas jej eksportowania. Dopiero potem zastanowię się nad jakimś prostym GUI.

Inne języki

  • EnglishEnglish

Ostatnie wpisy

  • Gruntz – specyfikacja WWD luty 3, 2019
  • Gruntz Decryptor 1.1.0 – dekodowanie kodów do gry listopad 14, 2018
  • Gruntz Decryptor sierpień 18, 2018
  • Gruntz – rozczytywanie pliku CHEATZ.TXT grudzień 10, 2017
  • Gruntz – rozczytywanie pliku ATTRIBUTEZ.TXT grudzień 9, 2017

Najnowsze komentarze

    Kategorie

    Inżynieria wsteczna (4) Nieskategoryzowane (2) Program (3)

    Tagi

    ATTRIBUTEZ.TXT & CHEATZ.TXT (3) Gruntz (8) Ogłoszenia parafialne (1) PID (1) REZ (3) Specyfikacje (1) WWD (2)

    Meta

    • Zaloguj się
    • Kanał RSS z wpisami
    • Kanał RSS z komentarzami
    • WordPress.org

    © 2011 All rights reserved.