Jak odkodować pliki gry - Poradnik

## Zanim przeczytasz

* Jest to tłumaczenie posta z Reddita (link: https://www.reddit.com/r/RenPy/wiki/guides/decompiling/).
* Sposób wypróbowano tylko dla gry **Doki Doki Literature Club**, nie przetestowano jego działania na DDLC Plus.
* Należy przeprowadzać dekompilację **WYŁĄCZNIE** na systemie operacyjnym Windows (7/8/8.1/10 ale na 11 też powinno zadziałać).
* Nie przetestowano sposobu z ręcznym uruchamianiem `unrpyc`, w razie gdyby coś nie działało, zajrzyj do linku z oryginalnym postem, znajdującego się powyżej.

## FAQ

### Po co dekompilować pliki Ren'Py?

Dzięki dekompilacji plików Ren'Py można uzyskać oryginalne pliki gry i zrobić z nimi co tylko zechcesz! Może to się okazać bardzo przydatne w pewnych sytuacjach, przykładowo:

* Możesz nauczyć się jak działa gra
* Możesz naprawić błąd (ang. bug) który wykryłeś w grze
* Możesz dowiedzieć się jak oszukiwać (ang. cheat) w grze
* Możesz wypakować grafikę/skrypty/muzykę z gry
* Możesz tworzyć mody do gry używając oryginalnych plików gry (np. tło, sprite'y postaci)

**UWAGA: To, czy którekolwiek z tych działań jest prawnie dozwolone, zależy do gry. W przypadku DDLC polecam zapoznać się z informacjami od Team Salvato (strona w języku angielskim): https://teamsalvato.com/ip-guidelines**

### Czym jest Ren'Py?

Ren'Py jest to język programowania oparty na Pythonie 2, jest zapisany w plikach z rozszerzeniem .rpy zwanych skryptami. Plik .rpy sam w sobie jest plikiem tekstowym, możesz go otworzyć w dowolnym edytorze tekstowym, przejrzeć jego zawartość i zmodyfikować. Po utworzeniu

### Czym jest .rpa?

Pliki z rozszerzeniem .rpa można porównać do pliku .zip. Są to archiwa Ren'Py, czyli spakowane i skompresowane pliki oraz foldery w jedną całość.

### Czym jest .rpyc?

Pliki .rpyc są to skompilowane skrypty Ren'Py, które trzeba zdekompilować. Do tego użyjemy `unrpyc`.

## Niezbędne narzędzia

Do dekompilacji będą nam potrzebne następujące narzędzia:

### Python 3

Możesz go pobrać stąd: https://www.python.org/downloads/.

1. Pobierz najnowszą wersję programu (zapis wersji w postaci 3.x.y) i zainstaluj na swoim komputerze wraz z opcją dodania ścieżki PATH, pomoże to uniknąć problemu który może się pojawić w drugim punkcie.
2. Otwórz wiersz poleceń (wyszukaj w pasku wyszukiwania `cmd` lub naciśnij klawisz `Windows + R`, wpisz `cmd` i naciśnij `Enter`) i wpisz:

```
python3 -V

```

Lub:

```
py -V

```

Te polecenia zwracają numer wersji Pythona (coś w rodzaju `Python 3.x.y`). Jeśli jedno z poleceń zwróci coś w stylu `Python not found`, wypróbuj drugie polecenie. Jeśli nadal nie zwraca numeru wersji Pythona, może to oznaczać potrzebę dodania programu do ścieżki PATH).

Jeśli posiadasz zainstalowanego Pythona 3, przejdź do kolejnego kroku.

**UWAGA: Python 2 i Python 3 to nie to samo!**

### unrpyc

Są dwa sposoby uruchomienia `unrpyc`. Możesz to zrobić w sposób automatyczny oraz ręczny (z użyciem Python 2).

#### Automatyczny

Wejdź na stronę https://github.com/CensoredUsername/unrpyc/releases i pobierz najnowszą wersję pliku `un.rpyc`, następnie skopiuj go do folderu "game").

#### Ręczny

Musisz użyć Pythona 2. Zainstaluj go podobnie jak Pythona 3 (obie wersje Pythona mogą być zainstalowane jednocześnie) i uruchom w `cmd` poleceniem:

```
python2

```

Program możesz pobrać z GitHuba: https://github.com/CensoredUsername/unrpyc. Umieść folder w łatwo dostępnym miejscu.

### unrpa

Uwaga: `unrpa` jest narzędziem wymagającym ręcznego wprowadzania komend. Jeśli wolisz, możesz użyć programu RPA Extract (link: https://iwanplays.itch.io/rpaex), jest bardzo prosty w obsłudze. Jeśli natomiast wolisz zrobić to ręcznie, uruchom `cmd` i wpisz następujące instrukcje:

```
py -3 -m pip install "unrpa"

```

Jeśli otrzymasz ostrzeżenie, że miejsce w którym zainstalowano program nie znajduje się w ścieżce PATH, dodaj go do ścieżki PATH.

Jeśli pojawi się komunikat podobny do poniższego:

`WARNING: You are using pip version x.y.z; however, version x.y.z is available. You should consider upgrading via the 'C:\Users\user\AppData\Local\Programs\Python\PythonXY\python.exe -upgrade pip' command.`

Oznacza to, że możesz zaktualizować program (ale nie jest to wymagane). Aby aktualizować, skopiuj komendę którą wypisał ci program, wklej do wiersza poleceń i naciśnij `Enter`.

Jeśli nie pojawiło się takie ostrzeżenie, przejdź do kolejnego kroku.

## Przed dekompilacją

Znajdź folder z grą i skopiuj go w jakieś miejsce (przykładowo na Pulpit). W folderze z grą powinny się znaleźć takie foldery jak `game`, `lib` czy `renpy`.

Jeśli nie wiesz gdzie znajduje się folder z grą, kliknij prawym przyciskiem na skrót gry, wybierz "Właściwości" i wyszukaj zakładki ze ścieżką do pliku .exe. Skopiuj ścieżkę do notatnika, usuń "\nazwaPliku.exe" i voila, masz już ścieżkę do folderu.

Dekompilację przeprowadź na skopiowanym folderze z grą, dla bezpieczeństwa oryginalnych plików. W razie gdyby coś poszło nie tak, zawsze możesz usunąć skopiowany folder, skopiować jeszcze raz i spróbować ponownie.

## Wypakowywanie plików gry

W `cmd` wpisz:

```
cd C:\sciezka\do\folderu\z\gra

```

Jeśli skopiowałeś folder na pulpit, ścieżka do folderu powinna wyglądać następująco:

```
C:\Users\user\Desktop\folder_z_gra

```

Teraz przejdź do folderu `game`, tam właśnie znajdziesz pliki z rozszerzeniem .rpa - nas interesują głównie pliki `audio.rpa`, `fonts.rpa`, `images.rpa` i `scripts.rpa`.

```
cd game
dir

```

Jeśli po wpisaniu powyższych poleceń zwróciło ci listę zawierającą powyższe pliki .rpa, możemy przejść do wypakowania.

Teraz wystarczy tylko wpisać:

```
unrpa audio.rpa
unrpa fonts.rpa
unrpa images.rpa
unrpa scripts.rpa

```

Oczywiście nie musisz wszystkiego wypakowywać, jeśli potrzebujesz tylko zawartości jednego z plików, wypakuj tylko ten plik. Jeśli wypakowałeś plik `scripts.rpa`, przejdź do kolejnego punktu. Jeżeli nie wypakowywałeś `scripts.rpa`, to już koniec poradnika. Możesz teraz przeglądać wypakowane pliki i robić z nimi co chcesz :)

## Dekompilacja skryptów (.rpyc)

Teraz zdekompilujemy skrypty z plików o rozszerzeniu .rpyc, gdyż w obecnej formie próba ich otwarcia w notatniku zwróci "krzaczki".

### unrpyc

Kolejny krok zależy od tego, której metody użyłeś.

#### Automatyczny

Uruchom grę (z pliku .exe) z folderu w którym wypakowywałeś pliki i poczekaj aż gra uruchomi się do menu głównego. Potem możesz zamknąć grę i pliki powinny być wypakowane.

Sprawdź czy pojawiły się pliki .rpy, jeśli są - spróbuj otworzyć losowy plik w notatniku. Jeśli zobaczysz tekst, to znaczy że się udało.

#### Ręczny

Wpisz w `cmd` następujące polecenie:

```
python3 ~/Other/Programs/Other/unrpyc/unrpyc.py .

```

Kropka (".") mówi wierszowi poleceń, by zdekompilował wszystkie pliki z rozszerzeniem .rpyc w tym folderze oraz w podfolderach. Jeśli wszystko poszło dobrze, powinieneś otrzymać mniej więcej takie komunikaty:

```
Decompiling script-poemresponses.rpyc to script-poemresponses.rpy...
Decompiling script-ch30.rpyc to script-ch30.rpy...
Decompiling script-ch4.rpyc to script-ch4.rpy...
Decompiling definitions.rpyc to definitions.rpy...
Decompiling script-ch3.rpyc to script-ch3.rpy...
Decompiling script-ch2.rpyc to script-ch2.rpy...
Decompiling script-ch1.rpyc to script-ch1.rpy...
Decompiling script-exclusives2-yuri.rpyc to script-exclusives2-yuri.rpy...
Decompiling script-poemresponses2.rpyc to script-poemresponses2.rpy...
Decompiling script-ch23.rpyc to script-ch23.rpy...
Decompiling script-exclusives-natsuki.rpyc to script-exclusives-natsuki.rpy...
Decompiling script-ch22.rpyc to script-ch22.rpy...
Decompiling script-ch0.rpyc to script-ch0.rpy...
Decompiling screens.rpyc to screens.rpy...
Decompiling script-exclusives-yuri.rpyc to script-exclusives-yuri.rpy...
Decompiling script-exclusives-sayori.rpyc to script-exclusives-sayori.rpy...
Decompiling script-ch40.rpyc to script-ch40.rpy...
Decompiling script-ch20.rpyc to script-ch20.rpy...
Decompiling script-ch21.rpyc to script-ch21.rpy...
Decompiling credits.rpyc to credits.rpy...
Decompiling script-ch5.rpyc to script-ch5.rpy...
Decompiling splash.rpyc to splash.rpy...
Decompiling transforms.rpyc to transforms.rpy...
Decompiling script-exclusives2-natsuki.rpyc to script-exclusives2-natsuki.rpy...
Decompiling poems.rpyc to poems.rpy...
Decompiling cgs.rpyc to cgs.rpy...
Decompiling script-poemgame.rpyc to script-poemgame.rpy...
Decompiling gui.rpyc to gui.rpy...
Decompiling effects.rpyc to effects.rpy...
Decompiling poems_special.rpyc to poems_special.rpy...
Decompiling script.rpyc to script.rpy...
Decompiling console.rpyc to console.rpy...
Decompiling options.rpyc to options.rpy...
Decompiling script-ch10.rpyc to script-ch10.rpy...
Decompiling glitchtext.rpyc to glitchtext.rpy...
Decompilation of 35 script files successful

```

Ostatnia linijka jest szczególnie ważna. Mówi, że zdekompilowano 35 skryptów - udało się wszystko zdekompilować.

Podobnie jak dla sposobu automatyznego, sprawdź czy pojawiły się pliki .rpy, jeśli są - spróbuj otworzyć losowy plik w notatniku. Jeśli zobaczysz tekst, to znaczy że się udało.

I to już koniec poradnika, teraz już wiesz jak zdekompilować pliki Doki Doki Literature Club!