Rpyc чем открыть для редактирования
Rpyc чем открыть для редактирования
Декомпиляция rpyc- и rpa-файлов. Утилиты от Vendor’а, Lolbot’а и скрипт от Eliont’а.
В этой статье я расскажу о трёх способах декомпиляции rpyc- и rpa-файлов. Эти методы просты и не требуют каких-то дополнительных программных средств, но, к сожалению, они не универсальны и не всесильны. Соответственно, если они не смогли справиться с имеющимися в вашем распоряжении архивами, то не стоит унывать, есть и другие утилиты и скрипты (например, unrpec или rpatool), просто они могут быть более сложными в применении и требовать установки дополнительных программ.
Метод 1. Утилита от Vendor’а (тексты)
Эта утилита подойдёт тем, кто хочет перевести небольшую одноязычную новеллу и не хочет разбираться со скриптами.
1. Качаем vendor_utils.zip, распаковываем во временную папку (например, \Katawa Shoujo\_temp)
2. Туда же копируем интересующие файлы. Например, script-a1-monday-RU.rpyc
3. Запускаем GetText.bat, получаем два файла: script-a1-monday-RU.TXT и script-a1-monday-RU.BIN
4. Глумимся над полученным файлом с расширением TXT (в BIN не лезем. )
5. Запускаем InsertText.bat, получаем новый вариант файла script-a1-monday-RU.rpyc
6. Перемещаем (это важно, если временную папку вы создали вложенной в главную папку игры, иначе игра будет ругаться на дубликаты, т.к. она найдёт ваш забытый во временной папке rpyc-файл и попытается его подключить к проекту) новый script-a1-monday-RU.rpyc обратно.
7. Запускаем игру…
Ссылку на первоисточник, к сожалению, найти не смог 🙁
Метод 2. Утилита от lolbot’а (скрипты)
Эта утилита позволяет получить исходники всех скриптов, включая системные, и подойдёт для любого уровня проекта, лишь бы справилась…
1. Качаем lolbot_decompile.zip, распаковываем в папку с игрой (в результате файл decompile.rpy из архива должен оказаться в папке \game, например \Katawa Shoujo\game)
2. Запускаем игру и некоторое время ждём, пока игра не начнётся. Всё, из игры можно выходить. Наигрались 🙂
3. Если первые два пункта выполнены без ошибок, то в корневой папке игры (например, \Katawa Shoujo) увидите огромное количество файлов с длинными названиями, например _Users_delta_Documents_ks svn_Katawa Shoujo Act 1_game_RU_ui_strings-RU.rpy.txt. Это – исходный код во всей красе. Он менее читабелен, чем полученный в методе 1, зато делать с ним можно ну всё что угодно. В том числе править имена персонажей, меню и прочее. Файл decompile.rpy из папки \game можно удалять, иначе при каждом запуске игра будет генерить эти многочисленные файлы.
4. После внесения изменений вспоминаем, что движок RenPy сам генерит этот файл rpyc из rpy. Итак, в папку игры копируем уже исправленный файл (например, _Users_delta_Documents_ks svn_Katawa Shoujo Act 1_game_RU_ui_strings-RU.rpy.txt) и приводим его название в нормальный вид (например, ui_strings-RU.rpy)
5. Запускаем игру…
6. После запуска получаем свежесгенерённый rpyc-файл, а rpy-файл можно стирать
Очевидно, что описанные выше операции можно проделывать и над другими файлами, например над script-a1-monday-RU.rpyc.
Метод 3. Скрипт от Eliont’а (графика, звук, шрифты и т.п.)
Для небольшой новеллы:
1. В папке \game (например, \Sugars Delight\game) переименовываем файлы script.rpyc и (если есть) script.rpy в script.rpyc_ и script.rpy_, соответственно.
2. В папке \game (например, \Sugars Delight\game) создаём файл script.rpy со следующим содержимым:
200?’200px’:»+(this.scrollHeight+5)+’px’);»>
init python:
image_files = [
fn
for dir, fn in renpy.loader.listdirfiles()
if not fn.lower().endswith(«.rpy») and not fn.lower().endswith(«.rpyc») and not fn.lower().endswith(«.rpa») and not fn.lower().endswith(«.rpyb»)
if not fn[0] == «_»
]
def unarchive(original_filename, new_filename):
import os
import os.path
new_filename = config.basedir + «/» + new_filename
dirname = os.path.dirname(new_filename)
if not os.path.exists(dirname):
os.makedirs(dirname)
orig = renpy.file(original_filename)
new = file(new_filename, «wb»)
new.write(orig.read())
new.close()
orig.close()
label start:
python:
for img in image_files:
unarchive(img, «extracted/»+img)
return
3. Запускаем игру, жмём «Начать» и ждём, пока снова не появится меню (т.е. игра не запустится), после чего выходим из игры.
4. В новой папке \extracted (например, \Sugars Delight\extracted) получаем всё, кроме самих скриптов, т.е. видео, музыку, аудио, шрифты.
5. Удаляем наш script.rpy, переименовываем описанные в п.1 файлы script.rpyc_ и script.rpy_ обратно в script.rpyc и script.rpy.
Для новеллы побольше:
0. Перво-наперво нам понадобятся исходники скриптов, которые можно получить методом 2.
1. Находим файл, содержащий метку label start:. Меняем расширение оригинальному файлу (например, ui_labels.rpyc переименовываем в ui_labels.rpyc_)
2. Копируем полученный по 2-му методу в эту папку одноимённый файл (например, ui_labels.rpy), в котором удаляем блок, начинающийся с label start:.
3. В папке \game (например, \Katawa Shoujo\game) создаём файл script.rpy со следующим содержимым:
200?’200px’:»+(this.scrollHeight+5)+’px’);»>
init python:
image_files = [
fn
for dir, fn in renpy.loader.listdirfiles()
if not fn.lower().endswith(«.rpy») and not fn.lower().endswith(«.rpyc») and not fn.lower().endswith(«.rpa») and not fn.lower().endswith(«.rpyb»)
if not fn[0] == «_»
]
def unarchive(original_filename, new_filename):
import os
import os.path
new_filename = config.basedir + «/» + new_filename
dirname = os.path.dirname(new_filename)
if not os.path.exists(dirname):
os.makedirs(dirname)
orig = renpy.file(original_filename)
new = file(new_filename, «wb»)
new.write(orig.read())
new.close()
orig.close()
label start:
python:
for img in image_files:
unarchive(img, «extracted/»+img)
return
Расширение файла RPYC
Оглавление
Мы надеемся, что вы найдете на этой странице полезный и ценный ресурс!
1 расширений и 0 псевдонимы, найденных в базе данных
✅ RenPy Compiled Script
Другие типы файлов могут также использовать расширение файла .rpyc.
По данным Поиск на нашем сайте эти опечатки были наиболее распространенными в прошлом году:
Это возможно, что расширение имени файла указано неправильно?
Мы нашли следующие аналогичные расширений файлов в нашей базе данных:
Если дважды щелкнуть файл, чтобы открыть его, Windows проверяет расширение имени файла. Если Windows распознает расширение имени файла, файл открывается в программе, которая связана с этим расширением имени файла. Когда Windows не распознает расширение имени файла, появляется следующее сообщение:
Windows не удается открыть этот файл:
Чтобы открыть этот файл, Windows необходимо знать, какую программу вы хотите использовать для его открытия.
Если вы не знаете как настроить сопоставления файлов .rpyc, проверьте FAQ.
🔴 Можно ли изменить расширение файлов?
Изменение имени файла расширение файла не является хорошей идеей. Когда вы меняете расширение файла, вы изменить способ программы на вашем компьютере чтения файла. Проблема заключается в том, что изменение расширения файла не изменяет формат файла.
Если у вас есть полезная информация о расширение файла .rpyc, напишите нам!
Как декомпилировать игры
Маленькое пособие для тех, кто интересуется, как устроены их любимые интерактивные работы. Разберём все популярные и не очень популярные движки.
Фотоиллюстрация статьи: Alexander Andrews
Ren’Py
Сначала при помощи rpatool нужно разархивировать файлы RPA:
Так легко посмотреть аудио и изображения из игры. Но так как нас интересуют скрипты, придётся пойти дальше. Скачайте файл un.rpyc и положите его в папку с игрой, а затем запустите саму игру. После этого она сама декомпилирует все .rpyc файлы в обычные .rpy на Питоне.
Z-машина
С Inform всё хитро, потому что у него две виртуальных машины: Z-машина и Glulx. Начнём со старенького.
В общем случае для файлов Z1-Z8 есть дезассемблер TXD, который входит в пакет ztools. Его придётся собирать из исходников на Си, но после этого всё довольно просто: ему достаточно указать адрес файла, и он выдаст его код. Сам код даётся в опкодах для Z-машины, поэтому он ничего не скажет непосвящённым людям, а вот полный список используемых строк в игре будет очень полезен. Это очень полезно, например, при переводах парсерок.
К сожалению, на играх RInform txd падает (по segfault) как только доходит до русских строк.
Самые старые файлы Z1-Z3 также открываются онлайн при помощи интерпретатора Encrusted. Просто откройте файл, нажмите на «гамбургер-меню» справа и выберите галочку «Show object tree», которая покажет дерево всех объектов в игре. Это не декомпиляция, но тоже интересно.
Для glulx есть декомпилятор mrifk. Он даёт полный псевдокод игры, вместе с комнатами, объектами, параметрами и глаголами, но тоже очень не любит RInform.
> «Sfbf 5so-nibtew ntgno( — rpqa7icafs Xlli- — Sfbf pqacea tgf poqa rpasw»-
Кроме того, есть онлайн-декомпилятор glulx-strings, который даёт полный список строк из игр Glulx, Z-машины, TADS 2 и TADS 3. Он не ломается на русских играх, но текст игр на RInform-Z6 будет зашифрован подстановкой. Пытливый читатель легко поймёт, из какой игры была цитата выше.
Формат QSP открывается QGen’ом. Этого достаточно, чтобы сделать патч к какой-нибудь чужой заброшенной игре.
Если игра защищена паролем, то можно воспользоваться декодером от AleksVersus.
Ink использует машиночитаемый формат JSON, в котором всё довольно прозрачно для человека, хотя трудно разобрать логику. По крайней мере, видны все строки. Обратной трансформацией пока никто не занимался.
Unity
Конечно, уже существует платный обфускатор, который делает код менее читабельным.
Ресурсы распаковываются, например, через Unity Assets Explorer.
INSTEAD
Игры на INSTEAD шифруются как текст. Кодирование исходников идёт в обратную сторону при запуске игры, и в проекте с открытым исходным кодом легко посмотреть, как же оно устроено. И относительно легко повторить.
В отличие от других движков, INSTEAD ещё не настолько популярен, чтобы в интернете были легко упакованные программы для распаковки игр. Поэтому вам понадобится консоль, компилятор Си и кусок кода из instead.c. Кусок с побитовым сдвигом нужно поставить в простую программу чтения файла в консоли. (Оставлю это упражнение пытливому читателю.) В полученном коде сохраняются даже комментарии автора.
Справедливости ради, существует вариант с реальной компиляцией кода Lua, но им никто не пользуется, потому что байтовый код непереносим: пришлось бы выпускать несколько версий игры для каждой архитектуры (отдельно 32 бита, 64 бита, Android и так далее).
Незашифрованные игры на URQ достаточно открыть в текстовом редакторе. Опытные игроки называют это «прохождение в блокноте».
Алгоритмы декодирования QS1 и QS2 можно взять из исходников FireURQ.
Законченных декодеров, конечно, нет в публичном доступе, но наш пытливый читатель на уровне начинающего программиста, конечно, справится с этой задачей.
В ЯРИЛ тоже есть шифрование игр, и, что неожиданно, оно использует реальную криптографию — ключи DES. Написать собственный декодировщик DES уже гораздо сложнее чем пять раз перепройти «Комсомольца», так что ЯРИЛ останется единственной неприступной платформой в этом списке.
Twine
Пропустим другие HTML-платформы, потому что код игр на Javascript и HTML уже достаточно читабелен. Но вот Twine стоит подробного осмотра.
Во-первых, все игры Twine открываются в самом редакторе Twine. Игры Twine 1 открываются только в редакторе Twine 1 и то же самое для второй версии. Поэтому если вы хотите посмотреть исходники какой-нибудь игры, её достаточно импортировать в редактор.
Кроме того, при помощи программы tweego HTML-файл можно преобразовать в приличный человеческий черновик для редактирования.
TADS 2 (дополнение)
Кроме вышеупомянутой страницы, которая достаёт все строки из игры, есть ещё один скрипт на Perl, который полностью декомпилирует игру. Если запустить его в командной строке, то вы получите файл .t со всеми функциями игры.
Скрипт даёт читабельный вывод даже на русской RTADS, но в моём тестировании исходник скомпилировался без ошибок только для игры на английском.
.rpy Расширение файла
Тип файла1 Python Script
This file is saved in a binary format, which requires a specific program to read its contents.
Что такое RPY файл?
Сценарий, написанный на Python, интерпретируемый, объектно-ориентированный и расширяемый язык программирования; может содержать как синтаксис Python, так и другой синтаксис, реализованный для расширения Python с помощью приложений или специфических для конкретной инфраструктуры функций; обычно используемый для хранения исходного кода приложения, который выполняется на веб-серверах.
Тип файла2 Touhou Project Replay File
This file is saved in a binary format, which requires a specific program to read its contents.
.RPY вариант № 2
Воспроизведение игры, сыгранной в рамках одной из игр проекта Touhou, серии японских игр для прокрутки; записывает движения, сделанные во время игры, и может воспроизводиться в программном обеспечении Touhou Project.
Тип файла3 Ren’Py Script
This file is saved in a binary format, which requires a specific program to read its contents.
.RPY вариант № 3
Сценарий, написанный для Ren’Py, визуального нового игрового движка, используемого для создания интерактивных цифровых историй; может содержать как синтаксис Python, так и скрипт Ren’Py, который является простым языком, используемым для определения новых сцен, переходов, текста диалога, звуков, музыки и других элементов истории.
Rpyc чем открыть для редактирования
unrpa is a tool to extract files from the RPA archive format (from the Ren’Py Visual Novel Engine).
It can also be used as a library.
The best way to install unrpa is through your package manager, if a package is available for your operating system. I maintain an AUR package for Arch Linux users.
You can also install unrpa through pip, the Python package manager. You can do this on Windows with:
You can also download the latest release and extract it.
You will need Python 3.7 or later in order to run it (either install through your package manager or directly from python.org).
If you are trying to extract more exotic RPA archives, there may be additional dependencies. unrpa should instruct you how to install them if required.
Package maintainers can see setup.py for a complete set of dependencies.
When installed through your package manager or pip, you should be able to use unrpa by opening a terminal or command prompt and doing something like:
If you are running from source, you will need execute python directly:
On most unix systems, open a terminal in the directory containing unrpa then:
On most Windows systems, open a Command Prompt in the directory containing unrpa then:
Command line usage
If something goes wrong while extracting an archive, please make an issue.
About
A program to extract files from the RPA archive format.