# 20.1 Ren'Py 视觉小说引擎

## Ren'Py 游戏概述

本节介绍 Ren'Py 视觉小说引擎在 FreeBSD 系统下的安装、配置与应用方法。Ren'Py 是开源游戏开发工具链的组成部分，为交互式叙事内容的创作与分发提供跨平台解决方案。

Ren'Py 是一款专门用于制作视觉小说的引擎。视觉小说是一种以文字叙述为主、配合图像、音乐和选项分支的互动叙事形式。与通用游戏引擎不同，Ren'Py 专注于视觉小说的特定需求，提供了简化的脚本系统和内置的资源管理功能。

Ren'Py 核心基于 Python 语言，因此可移植到 Windows 和 Linux 等操作系统平台。虽然 Ren'Py 暂未官方适配 FreeBSD，但 FreeBSD 社区对其进行了二次打包，使其能够在该平台上运行。

在 FreeBSD 上运行 Ren'Py 游戏需进行必要的配置。以下将详细介绍具体的实施步骤。

## 安装 Ren'Py

可使用 pkg 或 Ports 两种方式安装 Ren'Py。pkg 提供预编译二进制包，安装速度快；Ports 允许从源代码编译，可进行自定义配置。

使用 pkg 安装 Ren'Py：

```sh
# pkg install renpy
```

或者使用 Ports 安装 Ren'Py：

```sh
# cd /usr/ports/games/renpy/
# make install clean
```

## Ren'Py 设置中文界面

本小节介绍如何将 Ren'Py 界面设置为中文。设置界面语言的具体操作步骤可参考以下图片，包括选择语言选项并应用更改。

![Ren'Py 中文设置](https://338876981-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCJR3FQGH1PkdRtOljuxb%2Fuploads%2Fgit-blob-b8be68abf03ac4da8d39533ac48c3adee96b1e60%2Frenpy1.png?alt=media)

![Ren'Py 语言选择](https://338876981-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCJR3FQGH1PkdRtOljuxb%2Fuploads%2Fgit-blob-322c70b9236262dd18f3eec1b1b47f82b05d595d%2Frenpy2.png?alt=media)

## 玩《心跳文学部！》

> **警告**
>
> 《心跳文学部！》是一款恐怖游戏，并可能会 [致郁](https://ddlc.moe/warning)！

这里以《心跳文学部！》为例，其他游戏也可采用相同的操作方式。选择附带 Linux 版本的游戏进行解压，即同时包含 Windows 版本和 Linux 版本的游戏文件。

### 运行 Ren'Py

默认游戏路径位于 `~/`。Ren'Py 基于 Python 开发，其底层文件处理机制对非 ASCII 字符路径支持有限，因此不识别中文路径。必须将解压后的文件夹 `DDLC-1.1.1-pc` 放在用户主目录下，例如 `/home/ykla`。

中文语言包位置：[Doki Doki Literature Club 简体中文汉化补丁 v1.02（2025 更新）](https://steamcommunity.com/sharedfiles/filedetails/?id=1176221672)。将中文语言包解压后放置于游戏目录的 `game` 子目录中。

在引擎界面左侧点击“刷新”，在“工程（Projects）”列表中即可看到刷新后的游戏 DDLC-1.1.1。点击该游戏后，选择右下角的“启动工程（Launch Project）”即可加载游戏。

上述游戏的 FreeBSD 适配版本已发布于 <https://github.com/ykla/DDLC/releases>，可供参考使用。

![DDLC 游戏界面](https://338876981-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCJR3FQGH1PkdRtOljuxb%2Fuploads%2Fgit-blob-2187d494cf0e50337d3d3d443cd7f7ba86c84191%2Frenpy3.png?alt=media)

![Ren'Py 项目列表](https://338876981-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCJR3FQGH1PkdRtOljuxb%2Fuploads%2Fgit-blob-596e645f073efeac1ddef74d97912a4a23085c7f%2Frenpy4.png?alt=media)

![DDLC 启动](https://338876981-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCJR3FQGH1PkdRtOljuxb%2Fuploads%2Fgit-blob-f0a59b51934199c7715546bbdbf471463e2aff9f%2Frenpy5.png?alt=media)

![DDLC 游戏画面 1](https://338876981-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCJR3FQGH1PkdRtOljuxb%2Fuploads%2Fgit-blob-fcf3c91fbfba8f59b0f547f1e89698a4daab306b%2Frenpy6.png?alt=media)

![DDLC 游戏画面 2](https://338876981-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCJR3FQGH1PkdRtOljuxb%2Fuploads%2Fgit-blob-df826f798cf1adfbaa82f3d3e1b6976d0c30810b%2Frenpy7.png?alt=media)

## RPA 解包

本小节介绍 RPA 文件的解包方法与相关工具。解包 RPA 文件可用于查看或修改游戏资源。

### 选择游戏版本

尽量选择附有 Linux 版本的游戏。如果游戏仅支持 Windows 系统，可通过 Ren'Py 引擎的“构建分发”功能打包 Linux 版本，该功能位于 Ren'Py 启动器的项目选项中。

### 解包工具

RPA 文件是 Ren'Py 的归档格式，用于打包游戏资源（图像、音频、脚本等）。RPA 文件解包工具：[unrpa](https://github.com/Lattyware/unrpa)。

也可使用 pip 安装 unrpa 软件包：

```sh
$ pip install unrpa
```

随后使用 unrpa 工具将指定的 RPA 文件解包到目标目录，其中 `-mp` 参数用于指定输出目录。例如，将 `archive.rpa` 解包到 `./extracted` 目录：

```sh
$ python3 unrpa -mp "解包目录" "XXX.rpa"
```

rpyc 文件是 Ren'Py 脚本文件的编译格式，包含了游戏的剧情逻辑与交互规则。rpyc 由 rpy 源文件编译而来，为二进制格式，不可直接阅读。rpyc 文件反编译工具：[unrpyc](https://github.com/CensoredUsername/unrpyc)。

使用 unrpyc 工具反编译指定的 rpyc 文件，将其转换为可读的 rpy 源文件：

```sh
$ python3 unrpyc -c "XXX.rpyc"
```

该步骤并非必需，仅用于方便将脚本翻译为其他语言或进行二次开发工作。

## 参考文献

* itch.io. itch.io is a simple way to find and share indie games online for free.\[EB/OL]. \[2026-03-26]. <https://itch.io/>. 免费独立游戏分享平台，支持创作者自主发布作品。

## 课后习题

1. 查找 Ren'Py 官方源代码，尝试将其移植到 FreeBSD Ports 中，并构建一个可独立安装的包，分析其移植过程中需要解决的跨平台兼容性问题。
2. 使用 unrpa 和 unrpyc 工具解包并反编译一个 Ren'Py 游戏，重构其最小可运行脚本。
