Ren'Py视觉小说引擎是一款开放源代码的自由软件引擎,用来创作透过计算机叙述故事的视觉小说。Ren'Py之名是Ren'ai与Python两词混合而成。Ren'ai为日文,意指“恋爱”,而Python是Ren'Py所使用的语言环境。(维基百科)
前段时间在考虑做一款简单的 GalGame,本来打算直接使用橙光制作工具进行制作的,后来发现它已经不支持本地打包发行,所制作的游戏都必须发布到其官方的 web 页面,遂放弃。后来我找到了 Ren'Py 这款制作引擎,很多人也许没听说过它,但可能知道这么一款游戏《Doki Doki Literature Club!》(心跳文学俱乐部),这款游戏一经发布,就通过“获取系统管理员名称”、“删除文件才能达成真实结局”等新奇操作吸引了很多人的眼球,而这款游戏就是使用 Ren'Py 制作出来的。
官方网站:The Ren'Py Visual Novel Engine
GitHub:renpy/renpy
官方的文档已经非常详细,所以本文仅作为个人的使用笔记。
首先在官方网站下载 SDK,打开之后是这个样子
新建一个工程之后,可以在右边看到 4 个脚本文件,我们暂时需要进行编辑的就是 script.rpy 这个文件。
# 游戏的脚本可置于此文件中。
# 声明此游戏使用的角色。颜色参数可使角色姓名着色。
define e = Character("艾琳")
# 游戏在此开始。
label start:
# 显示一个背景。此处默认显示占位图,但您也可以在图片目录添加一个文件
# (命名为“bg room.png”或“bg room.jpg”)来显示。
scene bg room
# 显示角色立绘。此处使用了占位图,但您也可以在图片目录添加命名为
# “eileen happy.png”的文件来将其替换掉。
show eileen happy
# 此处显示各行对话。
e "您已创建一个新的 Ren'Py 游戏。"
e "当您完善了故事、图片和音乐之后,您就可以向全世界发布了!"
# 此处为游戏结尾。
return
可以看到其使用的语法非常友好,几乎没有学习成本。我们就逐行来看。
首先 define e = Character("艾琳")
在开头声明了一个角色,Ren’Py 允许你在开头就定义角色。这可以使你用一个短名关联一个角色,并且能够改变角色名字显示的颜色。比如可以这样写 define s = Character('希尔维亚', color="#c8ffc8")
,其定义一个短名为“s”,长名为“希尔维亚”的角色,名字颜色为淡绿色。
然后是 label start:
,label语句常用于在程序中给某个脚本点命名。在这个例子中,我们创建了一个名为 start 的标签。start 标签是特殊的,因为当用户点击主菜单的“Start Game”时,Ren'Py 脚本会从这个标签开始运行。之后我们可以使用 menu 和 jump 语句在各个标签之间灵活地跳转。
scene bg room
显示了一个背景图像,其 tag 标签是“bg”,属性是“room”。
这里需要解释一下,在 Ren'Py 中,每个图像都有一个名称。该名称包含一个 tag,以及一个以上的可选属性(attribute)。tag 标签和属性名必须以字母开头,包含字母、数字和下划线。给定 tag 标签时,每次只能展示一副图像。当拥有同样 tag 标签的第二副图像需要展示时,它会直接替换第一副图像。Ren’Py会在images目录下搜索图像文件,可以通过启动器(launcher)的“打开目录”选项里选择“images”完成配置。Ren’Py能使用PNG或者WEBP文件作为角色美术资源,JPG、JPEG、PNG或者WEBP文件作为背景美术资源。文件的命名相当重要,Ren’py将使用除去扩展名后,强制字母变为小写的文件名来作为图象名。
例如,images目录下的这些文件,定义了下列图像:
“bg meadow.jpg” -> bg meadow
“sylvie green smile.png” -> sylvie green smile
“sylvie green surprised.png” -> sylvie green surprised
因为文件名会被转换为小写字母,所以下面这种方式也可行。
“Sylvie Green Surprised.png” -> sylvie green surprised
图像可以被放在images目录的子目录(子文件夹)中。目录名忽略,只使用文件名定义图像名。
Ren’Py会在images目录下搜索图像文件,可以通过启动器(launcher)的“打开目录”选项里选择“images”完成配置。Ren’Py能使用PNG或者WEBP文件作为角色美术资源,JPG、JPEG、PNG或者WEBP文件作为背景美术资源。文件的命名相当重要,Ren’py将使用除去扩展名后,强制字母变为小写的文件名来作为图象名。
show eileen happy
显示角色立绘,其图像属性和上面一样。
e "您已创建一个新的 Ren'Py 游戏。"
显示 e 角色的对话。
最后 return
游戏结束。