Una delle cose che volevo aggiungere al combattimento erano le abilità passive, non perché sentissi il bisogno di avere un altro menu pieno di roba da sbloccare, ma perché volevo dare ai personaggi un po’ più di personalizzazione.

L’idea di partenza era abbastanza semplice: ogni personaggio conosce diverse passive, ma non può tenerle attive tutte insieme. Prima di combattere bisogna quindi scegliere quali equipaggiare e quali lasciare fuori, così da poter modificare un po’ il suo modo di funzionare senza aggiungere altri comandi da usare ogni turno.

L’ispirazioni è stata Clair Obscur, soprattutto per il modo in cui lascia al giocatore la possibilità di costruire una propria build scegliendo quali effetti portarsi dietro.
Quella parte mi piaceva, perché permette di modificare un personaggio in base al proprio stile.

Non volevo però copiare il sistema, né fare in modo che tutta la crescita dei personaggi ruotasse intorno alle passive. Nel mio caso dovevano essere solo uno dei pezzi della costruzione del personaggio.
Volevo mantenere anche abilità più “fisse” e meccaniche che appartenessero direttamente ai singoli protagonisti, come il Grimorio per Mago, i PT per Lee e gli altri sistemi specifici che sto aggiungendo via via.

L’idea era quindi avere una parte stabile, che definisce l’identità del personaggio, e una parte più libera in cui il giocatore può fare qualche scelta e costruire una propria configurazione.

I punti passiva

Per gestire il sistema ho usato il plugin Fomar0153 PassiveSkills che poi ho adattato alle esigenze del gioco.
Le passive sono normali abilità di RPG Maker, solo che appartengono a una categoria separata (creata dal plugin) e non vengono utilizzate direttamente durante il combattimento.
Dal menu personaggio posso invece attivarle e disattivarle, scegliendo di volta in volta quali tenere equipaggiate.

Ovviamente serviva un limite, perché altrimenti la scelta sarebbe stata piuttosto inutile: si attiva tutto e il problema è risolto.
Per questo ci sono i PP, cioè i punti passiva. Ogni abilità ha un costo e posso equipaggiarne solo finché la somma totale rimane dentro ai punti disponibili.

I PP aumentano insieme al livello del personaggio: si guadagna 1 PP per ogni livello, quindi il numero di punti passiva disponibili è sempre uguale al livello raggiunto. Un personaggio di livello 10 avrà quindi 10 PP, mentre uno di livello 20 ne avrà 20.

Per evitare di aggiungere un altro valore al database di RPG Maker, il plugin riutilizza il campo del costo in PM.
Quindi, se una passiva ha costo 10, quel 10 non rappresenta PM consumati ma semplicemente 10 PP occupati.

Questo permette anche di dare un peso diverso alle varie abilità: un piccolo aumento di statistica può costare poco, mentre una passiva più importante può occupare una parte maggiore dei punti disponibili.

Le passive finali seguono proprio questa logica. Sono molto più potenti delle altre, ma hanno anche un costo in PP molto alto e, una volta equipaggiate, lasciano spazio solo a poche altre passive più semplici.

Ho cercato quindi di creare un equilibrio tra due possibilità: usare tante passive meno forti, costruendo una configurazione più completa e distribuita, oppure investire gran parte dei PP in una sola abilità molto potente e rinunciare a buona parte delle altre.

La scelta quindi non è soltanto capire quale abilità sia più forte. Bisogna anche decidere quanto spazio vale la pena dedicarle e che tipo di build si vuole costruire.

Passive comuni e passive personali

Non volevo nemmeno che tutti i personaggi avessero esattamente lo stesso gruppo di passive.
Ci sono 8 passive comuni, soprattutto dedicate alla gestione delle statistiche, alcune divise su più livelli. Per esempio posso avere HP+ di livello 1 e una versione di livello 2 più efficace, e lo stesso principio vale anche per altri parametri.

A queste si aggiungono 5 passive personali per ogni personaggio, che gli altri non possono utilizzare e che sono pensate per lavorare con il suo modo di combattere. Mago ha capacità più legate alla magia e alla gestione dei PM, Lee ha passive più difensive e legate alle sue azioni in combattimento, mentre gli altri personaggi seguono la stessa idea.

Ho scelto di fermarmi a cinque passive personali anche per una questione abbastanza pratica. Se avessi provato a crearne molte di più per ogni personaggio, probabilmente avrei finito per perdermi tra effetti, combinazioni e bilanciamento.

In questo modo il numero di abilità esclusive rimane gestibile, ma sommando le cinque personali alle passive comuni ogni personaggio ha comunque abbastanza possibilità tra cui scegliere.
L’obiettivo era proprio avere un numero sufficiente di opzioni per costruire una piccola build, senza trasformare il sistema in qualcosa di enorme da gestire sia per chi gioca sia per me mentre lo sviluppo.

In realtà sono quasi tutti stati

La soluzione che ho trovato per far funzionare il sistema è abbastanza semplice: dietro quasi ogni passiva c’è uno stato.
Quando equipaggio una passiva, il plugin attiva la skill che a sua volta attiva uno stato collegato e da lì posso sfruttare direttamente tutto quello che il motore già mette a disposizione.

Se voglio una passiva che rigenera gradualmente i PM, creo uno stato con rigenerazione PM e lo collego alla relativa abilità. Se voglio aumentare l’evasione, ridurre il costo delle magie o riflettere parte degli attacchi magici, il principio rimane lo stesso.
Finché l’effetto rientra nelle cose che RPG Maker sa già gestire tramite gli stati, il sistema resta abbastanza semplice: creo la passiva, creo lo stato e collego le due cose.

Poi ho iniziato a complicarmi la vita

Il problema è arrivato quando ho iniziato a creare passive un po’ più particolari.

Scudo doloroso, per esempio, aumenta la difesa quando il personaggio ha perso PV; Guardia d’assalto aumenta la difesa dopo un attacco normale; Caricamento aumenta l’attacco nel turno successivo all’utilizzo del comando PARA.
Ci sono poi cose come Lotteria Stati, che assegna uno stato casuale a inizio battaglia, oppure Inizio col botto, che aumenta il danno del primo attacco contro un nemico.

Qui uno stato normale non basta più, perché non devo semplicemente dare un bonus fisso.
Il gioco deve sapere cosa sta succedendo durante il combattimento: se il personaggio ha appena attaccato, se ha usato PARA, quanti PV gli rimangono oppure se quello è il primo colpo contro quel nemico.

A quel punto ho mantenuto comunque lo stato collegato alla passiva, ma in alcuni casi quello stato non applica direttamente nessun effetto.
Serve soltanto per far capire al gioco che quella passiva è equipaggiata, mentre tutto il resto viene gestito dagli eventi.

Far parlare il plugin con gli eventi

Per riuscire a fare questa cosa ho aggiunto al plugin un comando chiamato Check Passive State.
In pratica permette di chiedere al gioco se un determinato personaggio ha equipaggiato una passiva collegata a uno specifico stato. Il risultato viene salvato in una variabile e da lì posso continuare a lavorare con i normali eventi di RPG Maker.

Con Scudo doloroso, per esempio, controllo prima che Mago abbia effettivamente equipaggiato la passiva. Se è così, passo ai controlli sui suoi PV e applico il bonus alla difesa quando serve.
Con Caricamento faccio una cosa simile, verificando che Utchi abbia la passiva attiva e che abbia usato PARA. Con Guardia d’assalto, invece, controllo che Lee abbia la relativa passiva e che abbia appena effettuato un attacco normale.

Alla fine il sistema è diventato una via di mezzo.
Le passive semplici funzionano quasi completamente tramite gli stati, mentre quelle più particolari usano lo stato soltanto come segnale e lasciano agli eventi il compito di gestire il comportamento vero e proprio.

Non è il sistema più elegante del mondo, ma mi permette di creare effetti molto diversi senza dover modificare il plugin ogni volta che mi viene in mente una nuova passiva.

La parte che mi interessa di più è proprio questa: usare le passive non soltanto per aggiungere qualche bonus percentuale, ma per permettere al giocatore di spingere un personaggio in una certa direzione senza cancellare il modo in cui quel personaggio è stato pensato fin dall’inizio.