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

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:

  • L'intera interfaccia utente di Ren'Py si basa su "immagini fisiche", il che rende le dimensioni del progetto molto grandi.
  • Poiché Pixi'VN è una libreria, non determina le dimensioni del progetto, ma se si utilizza vite o altri strumenti, le dimensioni del progetto saranno molto ridotte.

Distribuzione su più dispositivi

Ren'Py è direttamente responsabile della distribuzione del gioco su vari dispositivi.

Pixi’VN non gestisce la distribuzione. È possibile utilizzare vari framework (Tauri, Electron, Cordova, ecc.) per distribuire il progetto su più dispositivi. Pixi’VN fornisce templates che includono già le configurazioni necessarie per la distribuzione.

Distribuzione su più dispositiviRen'PyPixi’VN
Facilità d'usoMolto semplice. Puoi usare l'interfaccia utente di Ren'Py per creare il pacchetto da distribuirePer gli utenti meno esperti, può risultare difficile impostare il progetto per più dispositivi. L'utilizzo di templates può semplificare questo passaggio.
Configurazioni del pacchettoEssenzialeMolto completo (puoi scegliere se il pacchetto deve essere installato o eseguito senza installazione)
Automazioni di distribuzione con GitHub Actions o GitLab Pipeline
Notifica di sistema
Utilizzare dispositivi connessi (fotocamera, torcia, ecc.)
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)✅ (utilizzando Tauri, Electron, Cordova, ecc.)
Android/iOS✅ (usando Ren'Py)✅ (utilizzando Ionic o Cordova)
Web✅ (in versione beta)✅ (supportato nativamente)
Xbox/PlayStation/Nintendo Switch✅ (usando Sen'py)Solo Xbox con UWP

Possibilità di sviluppo

Ren'Py è un motore progettato esclusivamente per la creazione di visual novel. 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. Non ha un gestore di pacchetti/librerie.

Pixi’VN è una libreria npm che consente di creare romanzi visivi. È possibile utilizzare questa libreria anche in un progetto che non sia nativamente una 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.