LogoPixi’VN

Ren'Py vs Pixi’VN

对比Ren'Py与Pixi'VN两款视觉小说开发引擎,涵盖编程语言、UI 实现、性能表现及灵活性等方面。

将Ren'Py和Pixi’VN放在一起比较是很有必要的,因为Ren'Py是目前最广泛使用的视觉小说创作引擎之一。

Templates

本对比由Pixi’VN团队制作,力求客观公正。 If you disagree with this comparison or think other features should be compared, feel free to write in the chat below!

什么是Ren'py?

Ren'Py是一款视觉小说引擎——被全球成千上万的创作者使用——它能帮助你使用文字、图像和声音,在电脑和移动设备上讲述交互式故事。 这些故事既可以是视觉小说,也可以是生活模拟游戏。

  • 编程语言:Ren'Py语言。一种让你即使没有太多编程知识也能快速开发视觉小说的编程语言。 它基于Python。
  • 画布(canvas)库: Pygame_sdl2,一个使用SDL2及相关库对Pygame API的重新实现。 虽然它最初旨在于支持多种应用,但现在主要用作Ren'Py的基础技术。
  • 工作原理:Ren'Py是一个完整的视觉小说引擎/框架,涵盖项目创建、执行、分发等几乎所有环节。

编程语言对比

Ren'Py使用其自有的Ren'Py语言,它是Python的超集。 你可以在其中使用Python语句。

Pixi'VN使用JavaScript/TypeScript,这是当下功能强大且十分流行的编程语言。 编写叙事时,你可以直接使用JavaScript/TypeScript,也可以选择一种或多种可用的叙事语言。

编程语言对比Ren'PyPixi’VN
上手难度面向无编程基础的用户使用模板可快速上手,但随着进度推进及新功能集成,需要学习一些JavaScript/TypeScript、NodeJS和npm的基础知识
是否为类型安全语言?❌(使用Python虽可定义类型,但Ren'Py编译器并不会进行类型检查。 且大部分原生Ren'Py代码也不会使用类型。)
是否支持调试器?
包/库管理器npm
叙事语言Ren'Py语言及Python语句JavaScript/TypeScript及多种叙事语言(包括 Ren'Py 语言)
小游戏实现可使用Ren'Py创作者定义的可视组件(CDD)可使用PixiJS或安装其他库
UI实现可使用Ren'Py screens可使用PixiJS、React、Vue等。
UI组件Ren'Py提供的组件,通常基于图像取决于UI框架,可使用任意组件库(如Material-UI、Bootstrap、PixiJS UI等)

叙事编写

使用Ren'Py编写叙事时,你需要使用Ren'Py语言。 这种语言简单易学。 其基于Python,并支持Python语句。

使用Pixi'VN时,你可以使用JavaScript/TypeScript编写叙事。 此外,还可以使用数种叙事语言(理论上你可以通过PixiVNJson集成任何的叙事语言)。

Ren'Py示例:

start.rpy
label start:
    "你好,世界!"
    "这是一个Pixi’VN教程。"
    "希望你们都能够喜欢上它!"

Pixi'VN示例:

startLabel.ts
const startLabel = newLabel("start_label_id", [
    () => narration.dialogue = "你好,世界!",
    () => narration.dialogue = "这是一个Pixi’VN教程。",
    () => narration.dialogue = "希望你们都能够喜欢上它!"
])
file_type_ink
start.ink
=== start
你好,世界!
这是一个Pixi’VN教程。
希望你们都能够喜欢上它!
->DONE

小游戏实现

在 Ren'Py 中,要创建带有复杂机制/动画的小游戏,你需要使用 创作者定义的可视组件(CDD)。 这是很有必要的,否则可能会出现性能问题。 通过CDD,你可以在渲染循环中创建/控制一个或多个图形元素。 但CDD不够直观,使用复杂, 示例稀少,开发者也不算多。 事实上,绝大多数Ren'Py小游戏并没有复杂的逻辑与动画。

在Pixi'VN中,可以直接使用PixiJS创建小游戏。 PixiJS是一款功能强大的库,支持复杂动画和机制。 其文档和示例详尽,且拥有庞大的开发者社区。

你可以尝试体验一些Ren'Py和PixiJS的小游戏以了解差异:

UI实现

使用 Ren'Py 来创建用户界面,你可以使用 screensstyles 。 推荐的实现方式是绘制一系列图像,并通过图形组件将其添加到画布中。 但这些图形组件有限且不够直观。

在 Pixi'VN 中,除了使用PixiJS组件外,你还可以使用React、Vue等系统,并安装Material-UI、Bootstrap等组件库。 这使得你能以优异性能构建更复杂的UI界面。

性能与项目体积

在选择框架时,性能和项目大小是需要考虑的重要因素。

所使用的画布(canvas)库:

  • Pygame_sdl2:性能表现欠佳。 可以通过在Ren'Py中放入大量移动图形进行测试验证。
  • PixiJS:基于现代系统,性能卓越。 你可以直接通过下面的示例测试:

UI性能:

  • Ren'Py的UI基于画布(canvas)组件,使用项目内的图像。
  • 使用 Pixi'VN,您可以使用以其性能和可用性著称的HTML和/或JavaScript框架,也可以直接使用画布(canvas)。 HTML/JavaScript组件不一定基于图像,这有助于减小项目体积。

项目大小:

  • Ren'Py的整个UI都依赖于“实体图片资源”,导致项目体积非常庞大。
  • Pixi'VN是一个库,不决定项目的体积。但如果你使用vite 等工具,项目体积将非常轻量。

多平台分发

Ren'Py直接负责将游戏分发到各种设备上。

Pixi'VN本身不处理分发事宜。 你可以使用各种框架(如Tauri、Electron、Cordova等) 将项目分发到多个平台。 Pixi'VN 提供的模板中已经包含了必要的分发配置。

多平台分发Ren'PyPixi’VN
易用性非常简单。 你可以直接使用Ren'Py UI创建软件包以分发对于经验不足的用户来说,配置多平台项目可能比较困难。 使用模板可简化此步骤。
包配置基础功能非常完善(你可以选择包是需要安装还是无需安装即可运行)
通过GitHub Actions或GitLab Pipeline自动化部署
系统通知
使用已连接的设备(如相机、闪光灯等)
基于设备类型的UI缩放
适配屏幕尺寸的UI缩放
Windows/Linux/Mac OS✅ (使用Ren'Py)✅ (使用Tauri, Electron, Cordova等)
Android/iOS✅ (使用Ren'Py)✅ (使用Ionic或Cordova)
Web✅ (测试版)✅ (原生支持)
Xbox/PlayStation/Nintendo Switch✅ (使用 Sen'py)仅能基于支持UWP的Xbox

开发可能性

Ren'Py是一个专为创建视觉小说而设计的引擎。 通过Python添加超出常规视觉小说开发的复杂功能非常困难,并且Ren'Py团队也不推荐这样做。 它并没有包/库管理器。

Pixi'VN是一个npm库,允许你创建视觉小说。 你也可以在一个并非原生用于视觉小说的项目中使用这个库。 npm是JavaScript的包管理器,也是全球最大的软件注册表。

生命力与内部开发维护难度

Ren'Py诞生于2004年,并且至今仍在被使用。 它是一个非常稳定和成熟的项目。 Ren'Py不仅包含视觉小说库的开发,还包含Ren'Py语言Pygame_sdl2的开发。 由于Ren'Py还负责项目在各设备上的分发,因此需要不断更新系统以适配支持的操作系统的最新变化。

这意味着保持Ren'Py的更新是一个持续且非常复杂的过程,涉及多种类型的编程(解析、图形等)。

Pixi'VN诞生于2024年。 它是一个非常年轻的项目。 Pixi'VN只是一个库,使用PixiJS作为画布(canvas)。 它提供视觉小说所需的功能,但除此之外它不会处理其他任何事情。

这意味着保持Pixi'VN更新非常简单,一旦达到稳定版本,无需频繁更新即可兼容最新设备。

结论

总之,如果你了解面向对象编程,并且希望创建一部功能丰富、包含小游戏、UI非常复杂的视觉小说,你应该使用Pixi'VN。 如果你不是程序员,希望快速创建自己的视觉小说,并愿意随着时间的推移学习一些今后可以复用的知识,那么Pixi'VN也值得考虑。 如果你想要一个统一的框架来处理所有事情,而无需自己决定使用哪些库,那么Pixi'VN可能不适合你——Ren'Py是一个不错的选择。 如果你想要的是一个无代码框架,那么目前Ren'Py和Pixi'VN都不适合你。

On this page