Skip to content

RenPy

Установка

Скачиваете архив https://www.renpy.org/latest.html формата tar.bz2

Распаковываете в любом месте

Запускаете через sh скрипт

Профит

Ну и кароч, вместо пакета я написал скрипт

bash
#!/bin/bash

set -e

# Параметры
URL="https://github.com/renpy/renpy/releases/download/8.4.1.25072401/renpy-8.4.1-sdk.tar.bz2"
ARCHIVE_NAME="renpy-8.4.1-sdk.tar.bz2"
DEST_DIR="/opt"
DESKTOP_FILE="/usr/local/share/applications/renpy.desktop"

usage() {
    echo "Использование: $0 [--remove]"
    echo "  Без параметров — устанавливает Ren'Py SDK."
    echo "  --remove      — удаляет установленные файлы и пункт меню."
    exit 1
}

remove() {
    echo "Удаление Ren'Py..."
    rm -rf "$DEST_DIR"
    rm -f "$DESKTOP_FILE"

    # Обновляем кэш приложений, если доступен
    if command -v update-desktop-database &> /dev/null; then
        update-desktop-database /usr/local/share/applications 2>/dev/null || true
    fi

    echo "Ren'Py успешно удалён."
    exit 0
}

install() {
    echo "Скачивание архива..."
    cd /tmp
    rm -f "$ARCHIVE_NAME"
    if ! wget --show-progress "$URL" -O "/tmp/$ARCHIVE_NAME"; then
        echo "Ошибка: не удалось скачать архив."
        exit 1
    fi

    # Определяем имя папки внутри архива (берём первую запись верхнего уровня)
    TOP_DIR=$(tar -tjf "$ARCHIVE_NAME" --exclude '*/*' | head -n1 | sed 's:/$::')
    if [ -z "$TOP_DIR" ]; then
        echo "Ошибка: не удалось определить корневую папку в архиве."
        exit 1
    fi

    echo "Распаковка архива в /opt..."
    tar -xjf "$ARCHIVE_NAME" -C /opt

    # Удаляем старую /opt/renpy, если существует
    if [ -e /opt/renpy ]; then
        rm -rf /opt/renpy
    fi

    # Переименовываем распакованную папку в /opt/renpy
    mv "/opt/$TOP_DIR" /opt/renpy

    if [ "$EUID" -eq 0 ] && [ -n "$SUDO_USER" ]; then
        TARGET_USER="$SUDO_USER"
        TARGET_GROUP="$(id -gn "$SUDO_USER")"
    else
        TARGET_USER="$(whoami)"
        TARGET_GROUP="$(id -gn)"
    fi

    chown -R "$TARGET_USER:$TARGET_GROUP" /opt/renpy

    ICON_PATH="$DEST_DIR/renpy-8.4.1-sdk/doc/_static/navbar-logo.png"
    echo "Создание пункта меню приложений..."
    mkdir -p "$(dirname "$DESKTOP_FILE")"

    cat <<EOF | tee "$DESKTOP_FILE" > /dev/null
[Desktop Entry]
Name=Ren'Py
Comment=Ren'Py Visual Novel Engine SDK
Exec=$DEST_DIR/renpy-8.4.1-sdk/renpy.sh
Icon=$ICON_PATH
Terminal=false
Type=Application
Categories=Development;Game;
StartupNotify=true
EOF

    chmod +x "$DESKTOP_FILE"

    if command -v update-desktop-database &> /dev/null; then
        update-desktop-database /usr/local/share/applications 2>/dev/null || true
    fi

    rm -rf /tmp/renpy*

    echo "Установка завершена. Ren'Py доступен в меню приложений."
}

# Основная логика
if [ "$(id -u)" -ne 0 ]; then
    echo "Этот скрипт должен запускаться от имени root (или через sudo)."
    exit 1
fi

case "${1:-}" in
    --remove)
        remove
        ;;
    "")
        install
        ;;
    *)
        echo "Неизвестный параметр: $1"
        usage
        ;;
esac

Запускаем под рутом. Если запустиь его без параметров, он установит RenPy 8.4.1 (на 17.10.2025 это текущая стабильная версия), если же с параметром --remove, то скрипт удалит всё, что создал.

Как вскрыть игру, чтобы сделать руссификатор

(УСТАНОВКА этой софтины)

bash
pip3 install unrpa

Распкаовка архива:

bash
unrpa archive.rpa -p ./archive.pack --mkdir

Не нужно для сборки игры

(УСТАНОВКА этой софтины)

bash
wget https://github.com/shizmob/rpatool/blob/master/rpatool
sudo cp rpatool /usr/local/bin/
sudo chmod +x /usr/local/bin/rpatool
rpatool -c archive.rpa -d archive.pack

Упаковка архива:

bash
rpatool -c archive.rpa -d archive.pack

(УСТАНОВКА этой софтины)

bash
pip3 install git+https://github.com/CensoredUsername/unrpyc.git

декомпиляция одного файла

bash
unrpyc.py s001.rpyc

декомпиляция всех файлов в папке

bash
for f in *.rpyc; do unrpyc.py -c "$f"; done

компиляция файлов происходит уже в RenPy SDK, для этого удаляем всё, кроме папки ./game/*, распаковываем всё, что можем (все файлы из архивов data.rpa, script.rpa, archive.rpa сбрасываем в ./game/), находим версию RenPy SDK равную версии, в которой собиралась игра, добавляем эту игру как проект, создаём перевод, после чего как обычно собираем игру

В качестве руссификатора нам достаточно отдавать эти архивы: data.rpa, script.rpa, archive.rpa

Контакты: bystrovno@basealt.ru