LogoPixi’VN

Ren'Py vs Pixi’VN

Confronto tra i motori Ren'Py e Pixi'VN per lo sviluppo di visual novel, che comprende linguaggio, interfaccia utente, prestazioni e flessibilità.

È necessario fare un paragone tra Ren'Py e Pixi'VN perché Ren'Py è attualmente il motore più utilizzato per la creazione di visual novel.

Templates

Questo confronto è stato effettuato dal team di Pixi'VN, con l'obiettivo di essere imparziale. Se non sei d'accordo con questo confronto o ritieni che altre funzionalità dovrebbero essere confrontate, crea una nuova discussione.

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. Puoi anche utilizzare vari linguaggi narrativi (potenzialmente puoi integrare qualsiasi linguaggio narrativo utilizzando 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_label_id", [
    () => narration.dialogue = "Hello, world!",
    () => narration.dialogue = "This is a Pixi’VN tutorial.",
    () => narration.dialogue = "I hope you enjoy it!"
])
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. In fact, most minigames do not have complex logic and animations.

Con Pixi’VN puoi usare PixiJS per creare minigiochi. PixiJS è una libreria molto potente che consente di creare animazioni e meccaniche complesse. The documentation and examples are detailed, and there are many developers using PixiJS.

You can try some Ren'Py and PixiJS minigames to understand the difference:

Implementazione dell'UI

With Ren'Py, to create the user interface, you use screens and styles. L'implementazione consigliata è quella di disegnare una serie di immagini e aggiungerle all'interno del canvas tramite componenti grafici. The graphic components are limited and not very intuitive.

With Pixi’VN, in addition to using the components of PixiJS, you can also use systems such as React, Vue, etc., and install component libraries such as Material-UI, Bootstrap, etc. Ciò consente di creare schermate di interfaccia utente molto più complesse con prestazioni eccellenti.

Prestazioni e dimensioni del progetto

Performance and project size are important factors to consider when choosing a framework.

Librerie canvas utilizzate:

  • Pygame_sdl2: This canvas is underperforming. Puoi testarlo inserendo un sacco di elementi grafici in movimento in Ren'Py.
  • PixiJS: It is based on modern systems and has great performance. È possibile verificarlo direttamente tramite questo esempio:

Prestazioni dell'UI:

  • L'UI di Ren'Py si basa su componenti canvas che utilizzano immagini all'interno del progetto.
  • Con Pixi’VN puoi utilizzare frameworks HTML e/o JavaScript, noti per le loro prestazioni e usabilità, oppure il canvas. I componenti HTML/JavaScript non sono necessariamente basati su immagini, il che comporta una dimensione del progetto più piccola.

Dimensioni del progetto:

  • 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.

Distribuzione su più dispositivi

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 fornisce templates che includono già le configurazioni necessarie per la distribuzione.

Distribuzione su più dispositiviRen'PyPixi’VN
Facilità d'usoVery simple. Puoi usare l'interfaccia utente di Ren'Py per creare il pacchetto da distribuireFor less experienced users, it can be difficult to set up the project for multiple devices. L'utilizzo di templates può semplificare questo passaggio.
Configurazioni del pacchettoEssenzialeVery complete (you can choose if the package should be installed or run without installation)
Deployment automations with GitHub Actions or GitLab Pipeline
Notifica di sistema
Use connected devices (Camera, Flashlight, etc.)
Ridimensionamento dell'interfaccia utente in base al tipo di dispositivo
Ridimensionamento dell'interfaccia utente in base al tipo di dispositivo
Windows/Linux/Mac OS✅ (usando Ren'Py)✅ (using Tauri, Electron, Cordova, etc.)
Android/iOS✅ (usando Ren'Py)✅ (utilizzando Ionic o Cordova)
Web✅ (in beta)✅ (natively supported)
Xbox/PlayStation/Nintendo Switch✅ (usando Sen'py)Only Xbox with UWP

Possibilità di sviluppo

Ren'Py is an engine designed only for creating visual novels. Aggiungere funzionalità complesse tramite Python che vadano oltre lo sviluppo di una normale visual novel è molto complicato e non è consigliato dal team di Ren'Py. It does not have a package/library manager.

Pixi’VN è una libreria npm che consente di creare romanzi visivi. You can also use this library in a project that is not natively a visual novel. npm è un gestore di pacchetti per JavaScript e il più grande registro software al mondo.

Longevità e facilità di sviluppo interno

Ren'Py è nato nel 2004 e viene utilizzato ancora oggi. È un progetto molto stabile e maturo. Ren'Py, oltre a comprendere lo sviluppo della propria libreria per visual novel, include anche lo sviluppo del linguaggio Ren'Py e di Pygame_sdl2. Poiché Ren'Py gestisce anche la distribuzione del progetto su vari dispositivi, è necessario mantenere il sistema aggiornato con gli aggiornamenti per i sistemi operativi supportati.

Ciò significa che mantenere Ren'Py aggiornato è un processo costante e molto complesso che "tocca" molti tipi di programmazione (parsing, grafica, ecc.).

Pixi’VN è nato nel 2024. È un progetto molto giovane. Pixi’VN è solo una libreria che utilizza PixiJS per il canvas. Oltre a fornire funzionalità per le visual novel, non gestisce nient'altro.

Ciò significa che mantenere Pixi’VN aggiornato è un processo molto semplice e, una volta raggiunta una versione stabile, non avrà bisogno di aggiornamenti costanti per essere compatibile con i dispositivi più recenti.

Conclusione

In conclusione, se hai familiarità con la programmazione orientata agli oggetti e vuoi creare una visual novel con molte funzionalità, minigiochi, un'interfaccia utente molto complessa, ecc., dovresti usare Pixi'VN. Se non sei un programmatore, vuoi creare rapidamente la tua visual novel e sei disposto ad apprendere nel tempo nozioni che potrai riutilizzare in seguito, prendi in considerazione Pixi'VN. Se desideri un framework unificato che si occupi di tutto senza che tu debba decidere quali librerie utilizzare, allora Pixi'VN non fa per te: Ren'Py è una valida opzione. Se cerchi un framework senza codice, al momento né Ren'Py né Pixi’VN fanno per te.