Pixi’VN

Ren'Py vs Pixi’VN

Looking for a Ren'Py alternative? Compare Ren'Py and Pixi’VN visual novel engines, covering language, UI, performance, and flexibility.

If you are looking for a Ren'Py alternative, this comparison is for you. È necessario fare un paragone tra Ren'Py e Pixi'VN perché Ren'Py è attualmente il motore più utilizzato per la creazione di visual novel.

Modelli

Questo confronto è stato effettuato dal team di Pixi'VN, con l'obiettivo di essere imparziale. If you disagree with this comparison or think other features should be compared, feel free to write in the chat below!

Cos'è Ren'Py?

Ren'Py è un engine di visual novel, utilizzato da migliaia di creatori in tutto il mondo, che ti aiuta a usare parole, immagini e suoni per raccontare storie interattive eseguibili su computer e dispositivi mobili. Possono essere sia visual novel che giochi di simulazione di vita.

  • Linguaggio di programmazione: Ren'Py language, un linguaggio di programmazione che consente di sviluppare rapidamente visual novel, anche senza grandi conoscenze di programmazione. È basato su Python.
  • Libreria Canvas: Pygame_sdl2 è una reimplementazione dell'API Pygame che utilizza SDL2 e librerie correlate. Sebbene originariamente fosse stato concepito per supportare più applicazioni, ora è utilizzato principalmente come tecnologia alla base di Ren'Py.
  • Come funziona: Ren'Py è un engine/framework completo per visual novel che si occupa della creazione di un progetto, della sua esecuzione, della sua distribuzione e molto altro ancora.

Linguaggio di programmazione

Ren'Py utilizza un linguaggio proprio, Ren'Py language, che è un superset di Python. È possibile usare istruzioni Python nel linguaggio Ren'Py.

Pixi’VN utilizza JavaScript/TypeScript, due linguaggi potenti e diffusi. Per scrivere la narrazione puoi usare JavaScript/TypeScript oppure scegliere uno o più linguaggi narrativi tra quelli disponibili.

Linguaggio di programmazioneRen'PyPixi’VN
Facilità di apprendimentoDestinato a persone che non sanno programmarePuoi iniziare rapidamente utilizzando un template, ma man mano che procedi e hai bisogno di integrare nuove funzionalità, dovrai imparare alcune nozioni di base di JavaScript/TypeScript, NodeJS e npm
È un linguaggio tipizzato?❌ (Utilizzando Python è possibile utilizzare i tipi, ma il compilatore Ren'Py non ha il controllo dei tipi. Inoltre, gran parte del codice nativo di Ren'Py non utilizza i tipi.)
Puoi usare il debugger?
Gestore pacchetti/librerienpm
Linguaggio narrativoLinguaggio Ren'Py e istruzioni PythonJavaScript/TypeScript e vari linguaggi narrativi (incluso il linguaggio Ren'Py)
Implementazione dei minigiochiPuoi usare i Creator-Defined Displayables (CDD) di Ren'PyPuoi usare PixiJS o installare altre librerie
Implementazione dell'UIPuoi usare gli screens di Ren'PyPuoi usare PixiJS, React, Vue, ecc.
Componenti dell'UIComponenti forniti da Ren'Py, solitamente basati su immaginiA seconda del framework dell'interfaccia utente, è possibile utilizzare qualsiasi libreria di componenti (ad esempio, Material-UI, Bootstrap, PixiJS UI, ecc.)

Scrittura del racconto

Con Ren'Py, per scrivere la narrazione, si usa il Ren'Py language. Questa lingua è semplice e facile da imparare. È basato su Python ed è possibile utilizzare le istruzioni Python nel linguaggio Ren'Py.

Con Pixi’VN puoi usare JavaScript/TypeScript per scrivere la narrazione. You can also use various narrative languages (potentially you can integrate any narrative language using PixiVNJson).

Esempio di Ren'Py:

start.rpy
label start:
    "Hello, world!"
    "This is a Pixi’VN tutorial."
    "I hope you enjoy it!"

Esempio di Pixi’VN:

startLabel.ts
const startLabel = newLabel("start", [
    () => (narration.dialogue = "Hello, world!"),
    () => (narration.dialogue = "This is a Pixi’VN tutorial."),
    () => (narration.dialogue = "I hope you enjoy it!"),
]);
file_type_ink
start.ink
=== start
Hello, world!
This is a Pixi’VN tutorial.
I hope you enjoy it!
->DONE

Implementazione di minigiochi

Con Ren'Py, per creare minigiochi con meccaniche/animazioni complesse, è necessario utilizzare i Creator-Defined Displayables (CDD). Ciò è necessario perché altrimenti si verificheranno problemi di prestazioni. Con CDD è possibile creare/controllare uno o più elementi grafici tramite un ciclo di rendering. Il CDD non è molto intuitivo ed è complicato da usare. Gli esempi e gli sviluppatori che utilizzano CDD sono molto pochi. Infatti, la maggior parte dei minigiochi non ha una logica e delle animazioni complesse.

Con Pixi’VN puoi usare PixiJS per creare minigiochi. PixiJS è una libreria molto potente che consente di creare animazioni e meccaniche complesse. La documentazione e gli esempi sono dettagliati e sono molti gli sviluppatori che utilizzano PixiJS.

Puoi provare alcuni minigiochi di Ren'Py e PixiJS per capire la differenza:

Implementazione dell'UI

Con Ren'Py, per creare l'interfaccia utente, si usano screens e styles. L'implementazione consigliata è quella di disegnare una serie di immagini e aggiungerle all'interno del canvas tramite componenti grafici. I componenti grafici sono limitati e poco intuitivi.

Con Pixi’VN, oltre a utilizzare i componenti di PixiJS, puoi anche utilizzare sistemi come React, Vue, ecc. e installare librerie di componenti come Material-UI, Bootstrap, ecc. Ciò consente di creare schermate di interfaccia utente molto più complesse con prestazioni eccellenti.

Prestazioni e dimensioni del progetto

Le prestazioni e le dimensioni del progetto sono fattori importanti da considerare quando si sceglie un framework.

Librerie canvas utilizzate:

  • Pygame_sdl2: Questo canvas non è performante. Puoi testarlo inserendo un sacco di elementi grafici in movimento in Ren'Py.
  • PixiJS: si basa su sistemi moderni e offre ottime prestazioni. È possibile verificarlo direttamente tramite questo esempio:

UI performance:

  • Ren'Py's UI is based on canvas components that use images within the project.
  • With Pixi’VN you can use HTML and/or JavaScript frameworks, known for their performance and usability, or the canvas. HTML/JavaScript components are not necessarily based on images, which leads to a smaller project size.

Project size:

  • The entire UI of Ren'Py is based on "physical images", making the project size very large.
  • Since Pixi’VN is a library, it does not determine the project size, but if you use vite or other tools, the project size will be very light.

Distribution on multiple devices

Ren'Py is directly responsible for distributing the game on various devices.

Pixi’VN does not handle distribution. You can use various frameworks (Tauri, Electron, Cordova, etc.) to distribute the project on multiple devices. Pixi’VN provides templates that already include the necessary configurations for distribution.

Distribution on multiple devicesRen'PyPixi’VN
Ease of useVery simple. You can use the Ren'Py UI to create the package to distributeFor less experienced users, it can be difficult to set up the project for multiple devices. Using templates can simplify this step.
Package configurationsEssentialVery complete (you can choose if the package should be installed or run without installation)
Deployment automations with GitHub Actions or GitLab Pipeline
System notification
Use connected devices (Camera, Flashlight, etc.)
UI scaling based on device type
UI scaling to fit screen size
Windows/Linux/Mac OS✅ (using Ren'Py)✅ (using Tauri, Electron, Cordova, etc.)
Android/iOS✅ (using Ren'Py)✅ (using Ionic or Cordova)
Web✅ (in beta)✅ (natively supported)
Xbox/PlayStation/Nintendo Switch✅ (using Sen’py)Only Xbox with UWP

Development possibilities

Ren'Py is an engine designed only for creating visual novels. Adding complex functionality through Python that goes beyond the development of a normal visual novel is very complicated and is not recommended by the Ren'Py team. It does not have a package/library manager.

Pixi’VN is an npm library that allows you to create visual novels. You can also use this library in a project that is not natively a visual novel. npm is a package manager for JavaScript and the world's largest software registry.

Longevity and ease of internal development

Ren'Py was born in 2004 and is still used today. It is a very stable and mature project. Ren'Py, in addition to including the development of its own library for visual novels, also includes the development of Ren'Py language and Pygame_sdl2. Since Ren'Py also handles the distribution of the project on various devices, it is necessary to keep the system up to date with updates for supported operating systems.

This means that keeping Ren'Py updated is a constant and very complex process that "touches" many types of programming (parsing, graphics, etc.).

Pixi’VN was born in 2024. It is a very young project. Pixi’VN is only a library that uses PixiJS for the canvas. As well as providing functionality for visual novels, it doesn't handle anything else.

This means that keeping Pixi’VN updated is a very simple process and, once it reaches a stable version, it will not need constant updates to be compatible with the latest devices.

Conclusione

In conclusion, if you know object-oriented programming and want to create a visual novel with many features, minigames, a very complex UI, etc., you should use Pixi’VN. If you are not a programmer, want to create your visual novel quickly, and are willing to learn knowledge over time that you can reuse later, consider Pixi’VN. If you want a unified framework that takes care of everything without you having to decide which libraries to use, then Pixi’VN is not for you—Ren'Py is a valid option. If you want a no-code framework, currently, neither Ren'Py nor Pixi’VN are for you.

In questa pagina