-
Posts
399 -
Joined
-
Last visited
About Mephisto
- Birthday 06/25/1992
Contact Methods
-
MSN
fabrizionic@libero.it
-
Website URL
http://
-
ICQ
0
Profile Information
-
Sesso
Maschio
-
Provenienza
Riccione
Previous Fields
-
Abilità
Adepto
-
Conigli
3
Mephisto's Achievements
Utente avanzato (3/7)
-
Ciao a tutti, ho infine preso le mie decisioni su come procedere e sono andato per un refactoring totale (o quasi) del gioco, con l'aggiunta o la rivisitazione di molte funzionalità base e diverse novità. In breve, ho rianalizzato il gioco dopo l'ultima release e deciso di fermarmi per renderlo più interessante sotto molti punti di vista (piuttosto che proseguire con la trama), partendo innanzitutto dalla rimozione dei limiti sul numero di pic che a catena mi ha fatto rivedere tantissime cose che non hanno più giustificazioni per esistere come sono ora, poco ottimizzate (o comunque non al livello che vorrei). Un piccolo esempio riguarderà il rifacimento di tutti i menu (di cui ho già completato Equipaggiamento), con elenchi "dinamici" ovvero non a posizione fisse; gli slot vengono riempiti man mano che si trovano diversi equipaggiamenti/oggetti, risistemandosi se la loro quantità va a zero, senza spazi vuoti nel mezzo com'era prima (dove ogni equip/oggetto aveva la sua posizione in una determinata pagina). Ma vediamo le novità principali: SAVE/LOAD MENU (completo, vedi video): La patch consente di prendere il completo controllo dei salvataggi, andandosi a salvare qualsiasi variabile/stringa si voglia (ho per esempio salvato il luogo attuale, l'arco attuale, la presenza nel party e il livello di tutti gli eroi) e accedendo anche al loro timestamp. Inoltre, non c'è alcun limite al numero massimo di slot (il vecchio 15). Ho quindi realizzato i menu di salvataggio e caricamento per Masks completamente a picture, andando a rimuovere in sostanza l'ultimo punto in cui appariva il System vero e proprio del game. Nei menu mi ero inoltre fissato a fare seguire alle schede degli slot un movimento circolare, per cui (anche se magari non si nota molto nel video) lo scorrimento non è composto da movimenti obliqui ma segue il profilo del cerchio sulla sinistra (avanzando di 1 pixel alla volta sulla x e calcolando la y con l'equazione cartesiana), che è stato piuttosto divertente da realizzare. LIVELLI, ESPERIENZA: Ebbene sì, Masks affiancherà al suo sistema di Sviluppo anche un classico sistema basato sui Livelli e punti Esperienza. Il contributo dei Livelli in termini di stats nette sarà molto inferiore rispetto a ciò che si ottiene dagli oggetti di Sviluppo, specialmente per i primi livelli. Ad ogni incremento, gli eroi riceveranno statistiche a seconda delle loro inclinazioni attive: la potenza e il numero delle inclinazioni che è possibile attivare scalerà all'aumentare dei livelli, con potenziamenti importanti ogni 5. Il sistema è già implementato per intero (es. formula dell'esperienza, assegnamento della giusta exp dopo ogni fight), a meno del menu inclinazioni, vari tutorial e messaggi/tabelle di avanzamento visibili a fine BS. INCLINAZIONI: Questa è sicuramente la novità più interessante, che si spera aggiunga più soddisfazione allo sviluppo e agli incontri casuali specialmente dalla comparsa delle inclinazioni variabili in avanti (livello 5). In breve, le inclinazioni governano quali statistiche vengono aumentate agli Eroi all'aumento di livello. Sono in parte "fisse" e in parte "variabili", ovvero selezionabili liberamente da liste di statistiche la cui lunghezza incrementa ogni 5 livelli (secondo dei "path" relativi alla classe dell'eroe, es. Guerriero o Mago Bianco). Per esempio, dal livello 1 al livello 5, Shanar ha una sola inclinazione fissa a disposizione, "Vita +1". Dal livello 5, ha ancora l'inclinazione fissa "Vita +1", ma può anche settarne una aggiunta scegliendone una tra "Vigore +1" e "Precisione +1/2". Dal livello 10, potrà invece scegliere di settare anche "Mana +1" (tra le variabili, se desidera disattivare Vigore o Precisione), e passerà a 2 inclinazioni fisse ovvero "Vita +1" e una nuova "Forza +1/5". Ogni 5 livelli, le inclinazioni fisse variano, seguendo un percorso preciso determinato dalla classe, ma allo stesso modo cambiano le variabili, aumentando in tipologie (fino a un massimo di 11, una per ogni statistica ovvero massima personalizzazione) e in quantità, e consentendo di guidare (sebbene parzialmente e con piccoli incrementi) lo sviluppo degli eroi. In poche parole, inclinazioni come "Vita +1" hanno effetti immediati (sul totale della statistica), mentre altre statistiche (come Forza o Precisione) aggiungono un "punto inclinazione" (in sostanza una frazione di un punto intero). Per esempio, occorrono 5 aumenti di livello con l'inclinazione "Forza" attiva per ottenere un punto Forza. Sarà possibile modificare le inclinazioni attive in qualsiasi momento dal Menu dedicato, scegliendone altre tra quelle variabili a disposizione. Dal livello 18, alcune inclinazioni riceveranno miglioramenti "naturali" e sarà anche possibile scegliere un'inclinazione da migliorare: nel caso di statistiche come Vita, Mana e Vigore, il potenziamento ha effetto immediato (per i futuri livelli) passando es. da +1 a +2, mentre per le altre l'effetto è quello di diminuire i punti inclinazione necessari all'aumento di un'unità (per esempio, Precisione passerebbe da 2 punti a 1 solo punto necessario, dimezzando quindi i livelli necessari a ottenere un intero punto, che è una scelta con importanti conseguenze a lungo termine). Sicuramente più difficile a dirsi che a farsi, anche considerando che ad ogni variazione delle inclinazioni variabili, le stesse verranno inizialmente distribuite in automatico (il giocatore potrà del tutto ignorare il menu Inclinazioni e giocare "senza pensieri", oppure scegliere di scendere a fondo nella tana del bianconiglio e scambiarle ad ogni aumento di livello, per esempio impostando una build basata sui critici o sull'agilità). Ecco un esempio dei percorsi di Shanar e Senna per i primi 20 livelli, con distinzione tra inclinazioni variabili e fisse (e alcuni aumenti "naturali" visibili in grassetto): FORTUNA E COLPI CRITICI: Un'altra cosa che è sempre mancata sono i colpi critici, che rendono invece più interessanti i combattimenti. Il loro effetto è moltiplicare il danno per 1.5 (prima di ogni riduzione da difesa) con una probabilità che varia in base ai parametri di Fortuna (una nuova statistica aggiunta, l'undicesima) e Precisione. Per non penalizzare la statistica Fortuna per i maghi (e dare qualche utilità alla loro Precisione, che era assente pre-refactoring), la % di colpo critico verrà applicata anche a tecniche e magie, oltre agli attacchi fisici come di norma, ma generalmente non alle Limit (che utilizzeranno un nuovo moltiplicatore, basato su piccoli minigiochi). Naturalmente, lo stesso discorso vale per i nemici... La formula dei colpi critici è già implementata, ma non lo sono ancora per intero nel BS per tutte le tecniche (che ho bisogno di rifattorizzare prima a livello di codice); saranno comunque decisamente rari per i primi livelli, in quanto nessun eroe parte con alti valori di Fortuna (statistica che avrà comunque il suo oggetto di sviluppo dedicato, e appare in alcuni dei nuovi equipaggiamenti aggiunti). BS (minigiochi Limit e altro): Per quanto riguarda il BS, ho intenzione di apportare migliorie grafiche minori alle interfacce (per esempio niente più "035" se si ha 35 di vita, e il menu degli oggetti naturalmente da rifare con la nuova policy "a riempimento"), ma soprattutto implementerò dei minigiochi al lanciare delle limit, stile FFX, diversi per eroe e già definiti: Shanar (Waj e Chaos): stoppare una barra che si riempie e si svuota rapidamente, cercando di fermarla quand'è al massimo; Senna (Kyome e Flamar): ricordare una breve sequenza di simboli; Elros (Vishet e Lehrat): un puntatore si muove da dx a sx su una barra orizzontale, cercare di fermarlo al centro; Alwyn (solo la seconda, Hyperuranium): si hanno 4 ruote concentriche che ruotano, bisogna cercare di fermarne una alla volta allineando orizzontalmente una sequenza di simboli. Il tipo di gioco è fisso per eroe (4) e aumenta di difficoltà tra la prima e la seconda limit di ogni eroe (totale 9, è esclusa Sanctificio di Alwyn che non richiede alcun minigioco ed ha un effetto "fisso"). Il minigioco sarà da completare ad ogni lancio (con un limite di tempo) e garantirà un livello di "qualità del soluzione" da 1 a 4, che corrisponderà a un moltiplicatore sull'effetto (es. qualità 3 corrisponderà al danno attuale, cioè pre-refactoring, e sarà piuttosto facile ottenere sempre almeno 3). Mi piacerebbe anche aggiungere qualche nuova animazione agli sprites (è troppo brusco per esempio quando ricevono danno letale e passano a "incosciente" e viceversa quando si rialzano), ma sarà una bella sfida. DIALOGHI: La grafica del nuovo sistema dei dialoghi, che sfrutta le stringhe invece di infinite picture, è ulteriormente migliorata con l'aggiunta di un background (la cui dimensione sale dinamicamente all'aumentare del numero delle righe sfruttando lo Zoom, non è stato facile non farlo "ballare"). Lo vedrete senza dubbio in uno dei prossimi video. Naturalmente, questo implicherà riscriversi ogni singolo dialogo, attività mastodontica che mi darà però modo di rivederli accuratamente anche nei contenuti. NUOVI EQUIPAGGIAMENTI (+MENU, vedi video) ED OGGETTI: Ho voluto subito mettere le mani sul menu Equipaggiamento, che considero uno dei più complessi. Ora il menu è molto più rapido (chiede meno conferme) e mostra, scorrendo gli eroi, le immagini degli oggetti equipaggiati, che è sicuramente più piacevole; una volta selezionato un eroe, sono visibili le liste degli equipaggiamenti disponibili per lo slot attuale e l'eventuale scheda delle statistiche dell'oggetto equipaggiato. Ma finalmente, scegliendo uno slot, è possibile confrontare direttamente due schede (l'attuale equip VS il "nuovo"), scambiando anche gli equipaggiamenti con un solo click (nessune di queste 2 cose era prima possibile). Nella scheda di "confronto", saltano subito all'occhio eventuali requisiti non rispettati (come classe o destrezza). Se si equipaggia poi un'arma a due mani mentre c'è uno scudo equipaggiato, quest'ultimo viene evidenziato in rosso e rimosso automaticamente se si prosegue. È stato inoltre aggiunto un totale di 9 nuovi equipaggiamenti, oltre a una revisione di tutti i già esistenti (per esempio, la nuova statistica Fortuna ha permesso di aggiungere ulteriore varietà alle classi di armi e agli amuleti). Il totale di equipaggiamenti unici è ora 75, distribuiti in 6 slot e tutti già programmati (a meno di alcune picture). Tra gli oggetti, figurano: - un nuovo oggetto di Cura "Distillato Aureo" (che cura 15 punti Vita, Mana e Vigore, unico oggetto insieme a Venea ad occuparsi di tutte 3); - l'oggetto di Sviluppo "Cantico della Fortuna" dedicato alla nuova statistica (+3 come per Destrezza e Precisione); - il "Globo Minore", un oggetto di sviluppo che aggiunge liberamente punti Inclinazioni, meno efficace quindi del Sutra (che aggiunge invece intere unità) e con scelta limitata alle solo inclinazioni disponibili per ogni eroe; consentirà di gestire lo sviluppo in maniera ancora più granulare, permettendomi di rilasciare più spesso rewards dai nemici. TRAMA, NARRAZIONE E GAMEPLAY: Indubbiamente, a partire letteralmente dall'intro (che ahimè ancora devo rifare...), effettuerò una revisione accurata del flow del gioco, apportando modifiche (per esempio ai dialoghi e di conseguenza alla narrazione) e aggiungendo scene e spiegazioni (basandomi soprattutto sui feedback ricevuti nel thread della release). Alcuni esempi sono: - una scenetta aggiuntiva che riguarda il negoziante di Ledi; - la modifica della scelta iniziale impero/ribelli in un dialogo tra paesani, con la possibilità di annullare e rispondere in un secondo momento (in realtà è un minigioco finalizzato ad ottenere oggetti di cura, dicendo ad ognuno ciò che vuole sentirsi dire, quindi è onesto poter annullare e ripensarci); - piccole sezioni ad Alanyr (tra cui un BS preliminare col demone, dal quale fuggirà) che spiegheranno meglio, spero, alcuni collegamenti. In larga parte, lo svolgimento generale rimarrà invariato, senza stravolgimenti a livello di trama o sequenza delle aree visitabili rispetto a quanto visto nella release 2.5. Sezioni più "open world" arriveranno sicuramente più avanti nel gioco, come già previsto post-Pandemyr, con aree facoltative come una grotta con un miniboss a nord, l'avamposto imperiale a sud e il "tempio maledetto" a est (sarà inoltre disponibile il viaggio rapido tra i villaggi di Ledi, Naga e Pandemyr). Sperabilmente, l'esperienza di gameplay dovrebbe essere resa più piacevole, grazie a una rivisitazione di design e funzionalità per tutte le pagine dei menu (per esempio, mentre si usa un oggetto di Sviluppo si vedranno le attuali statistiche dell'eroe, per avere un'idea senza più dover tornare indietro al menu Status), concessa dall'uso delle stringhe e di più picture. BALANCE: Rigiocandolo inevitabilmente per i test sto effettuando piccole modifiche, per la maggior parte "in positivo" come il ritrovamento di più oggetti di cura e nuovi equipaggiamenti deboli nei primi capitoli (oltre al piccolo contributo dato ora dagli aumenti di livello). Alcune tecniche e magie sono state reworkate per essere rese più interessanti, ma nessuna di quelle che si imparano fino alla release 2.5. In buona sostanza, se avete terminato la 2.5 le cose saranno solo leggermente più facili. Vi lascio dunque un piccolo video delle mie ultime fatiche, incentrato sui menu Salva/Carica e la pagina Equipaggiamenti: In conclusione direi che il progetto è in fase di profonda rivisitazione e passerà molto tempo prima di proseguire con Ulvar e Naga; il prossimo nella todo list è il nuovo menu Inclinazioni da realizzare per intero, a seguire rifarò lo Status (includendo Fortuna, Livelli ed Esperienza), gli oggetti e i negozi; passerò poi probabilmente al BS e con calma ai dialoghi e all'intro. Come sempre, farò un salto ogni tanto per aggiornarvi sui progressi grazie ancora a chi ha giocato a Masks e a chi segue il thread, a presto!
-
Grazie mille Guardian, sei sempre rapidissimo nel darmi feedback!! <3 Oh sì, se devo solo testare le altre meccaniche li metto in punizione in un angolino dove non danno fastidio XD devo dire che è divertentissimo avere una "sandbox" in cui posso liberamente modificare la mappa del livello e pochi altri input per cambiare completamente lo svolgimento e l'esito. Questa settimana conto di ultimare gli ultimi dettagli e creare i livelli rimasti (saranno 8 in totale per superare Ulvar), ma per ora smetto di spammare e vi aggiornerò quando avrò qualcosa di più sostanzioso sullo stato di Masks in generale (di recente l'ho rigiocato per intero dall'inizio, risolvendo al volo un paio un paio di piccolissimi bug tecnici dovuti alla patch, e l'ho girato a qualche amico/betatester per provarlo tutto). Grazie ancora, a presto!
-
Ciao a tutti ragazzi, grazie mille per i feedback! Vi lascio un update davvero mini, nel caso in cui la mia esperienza possa tornare utile a qualcuno che usa la patch. Riguardando il video più volte, un problema che ho notato era la complessiva lentezza della battaglia (lo trovavo più godibile a 2x...), che peggiorava drammaticamente all'aumentare del numero di unità; nell'esecuzione dei turni ci sono numerosi "checkpoint" (come degli "Attendi fine movimento"), ma la maggiore causa era da identificarsi a mio parere nel "Wait" delle varie BA. Ancora una volta la patch mi è venuta incontro; avendo visto tempo fa un video al riguardo, sapevo che permetteva di mostrare più BA contemporaneamente sullo schermo, ma non mai ero riuscito a farle funzionare. Ho sbloccato solo ieri la situazione (la documentazione non è chiarissima su questo), quindi vi riporto la soluzione: in sostanza, dopo aver settato il limite con il Set Game Options (come dice la documentazione), la parte che mi mancava era utilizzare la variabile "buffer" (visibile solo con TPC) nel "Mostra Animazione", la quale funziona esattamente come gli ID delle picture. Basta semplicemente aumentarlo (naturalmente può anche prendere una variabile) per poter mostrare più BA insieme. Il risultato, una volta rimossi gli "Wait", mi sembra decisamente più godibile; si possono notare in particolare i "Sotto Attacco!" che spuntano insieme, e le unità che ora si picchiano a vicenda contemporaneamente (ho lasciato comunque un po' di attesa tra un fight e l'altro, altrimenti era davvero un po' troppo caotico). Allo stesso modo, ora anche gli arcieri iniziano a sparare prima che il precedente abbia finito. https://www.youtube.com/watch?v=0xfb7FB6Fqo Grazie ancora a tutti, alla prossima!
-
Ciao a tutti! Ansioso di sperimentare con la Maniacs Patch, e un po' indeciso su che direzione prendere con il progetto (in sostanza se proseguire con la storia o iniziare a rivederlo un po' tutto), ne ho approfittato per proseguire sulla sezione di Tower Defense, minigioco che andrà superato a Ulvar. Oltre a rivedere, e rifattorizzare con la patch, numerose parti del codice della battaglia e completarla per i vari tipi di unità (combattimenti con gli eroi compresi), ho finalmente ultimato tutta la parte "gestionale", ovvero relativa all'acquisto/posizionamento di unità e potenziamenti. Ci sono in totale 4 tipi di unità difensive (+le coppie di eroi) e 7 potenziamenti acquistabili (+ "riparazioni"), il posizionamento sulla mappa si può effettuare liberamente sia con il mouse che la tastiera, ma invece di ammorbarvi con l'elenco delle feature potete vederne direttamente alcune in questo video di test che ho realizzato con i primi livelli: https://www.youtube.com/watch?v=jCsbjvExULY Tenete a mente che molte cosucce in particolare lato musiche/effetti sonori e grafica (es. lo sprite dei nemici corazzati) sono ancora da sistemare! In generale direi che mancano pochi accorgimenti, come la gestione della sconfitta o la BA per l'olio bollente, per il resto è praticamente concluso - rimuovendo gli eroi e relativi fight, si potrebbe facilmente rendere anche un minigioco stand-alone. Nell'ultimo livello del video (in cui si può notare anche il nuovo sistema "dinamico" per i messaggi) si vede già qualcosa delle meccaniche che si sono rivelate le più complesse da realizzare (come la gestione delle mura di pietra), e fanno la loro prima apparizione anche i nemici volanti, i quali possono essere abbattuti solo dagli arcieri o dagli eroi (ma a livello di unità nemiche, le sorprese non finiranno qui...). Grazie come sempre a tutti coloro che seguono il progetto :) alla prossima!
-
Grazie mille @Louie, no no anzi, ho apprezzato tantissimo sia la sincerità dei feedback che i consigli pratici! Aggiornerò sicuramente il thread del progetto appena avrò deciso sostanzialmente che direzione prendere, per ora sono un po' a uno stallo in cui considero diverse possibilità (ma è più che altro questione di cosa fare prima e cosa dopo, sono piuttosto tentato da un pesante refactoring con la Maniacs Patch). Grazie davvero Rick! Scoprire grazie al tuo post la Maniacs Patch mi ha sicuramente messo voglia di fare - sono un po' indeciso se rimettere mano al progetto dall'inizio, rifacendo certe parti da zero o quasi (come tutti i dialoghi, con il nuovo sistema per mostrare i testi che ho ormai completato per intero), o andare semplicemente avanti. Per ora sto solo sperimentando (certamente alcune parti che erano già in sviluppo come il Tower Defense sono ora infinitamente più veloci da realizzare). Se dovessi bloccarti in qualunque punto ricorda di consultare la Guida presente nella cartella oppure non esitare a scrivere qui, non solo se non sai come proseguire ma anche es. per consigli su come superare un fight ^^ non ti preoccupare, so bene che non è facile ritagliarsi tempo libero, mi hai già aiutato tantissimo
-
Grazie mille Guardian! Ho già sviluppato la funzionalità per permettere il supporto a più righe, andando a capo sia volontariamente dall'editor (normalmente con invio) che dividendo le righe in automatico se troppo lunghe (ma solo quando trova uno spazio/virgola/punto ecc, senza spezzare le parole), e parametrizzato la velocità. Non ha limiti di righe, semplicemente sposta il tutto più su e riparte per la riga successiva (che trovo molto carino, ma se non piace si può facilmente adattare per fargli calcolare subito quale sarà il totale di righe necessario, così non c'è il movimento). Piccolo video aggiornato: Il fatto che rpgmaker non vada a capo automaticamente nei testi è sempre stato un grande meme, penso che potrebbe essere davvero utile a qualcuno - si può finalmente scrivere sull'editor liberamente e capirà da solo quando andare a capo. Se lo sviluppo ulteriormente magari vi posto i sorgenti aggiornati (suona stranissimo dirlo per il 2k3... what a time to be alive!)
-
Salve a tutti, forse scopro l'acqua calda ma ho da poco messo le mani sulla Maniacs Patch ed è stata una totale rivoluzione per me. A chi usa rpgmaker2003 e non la conosce consiglio subito di cercarla: purtroppo funziona solo con la versione ufficiale di Rpg Maker 2003 su Steam (che costa 19.50€ attualmente), ma stiamo parlando proprio di un altro mondo. Non mi dilungo qui su tutti gli incredibili miglioramenti e nuove funzionalità (che io stesso non ho ancora esplorato appieno), ma ho deciso di scrivere questo piccolo tutorial per mostrarne direttamente la potenza. Consiglio eventualmente articoli come questi (in inglese) per maggiori informazioni su installazione e feature: https://www.rmteka.pl/maniacs-patch-wont-bite-you-1-basic-feature-changes/ https://www.rmteka.pl/maniacs-patch-wont-bite-you-2-new-control-variables/ https://www.rmteka.pl/maniacs-patch-wont-bite-you-3-new-features/ TPC editor Una delle più importanti rivoluzioni è quella di permettere di editare/aggiungere comandi usando un linguaggio di programmazione direttamente dall'editor (consentendo tra le altre cose di parametrizzare sostanzialmente tutto, come l'ID di un evento da muovere o di una picture). Per farlo, è sufficiente premere col destro su un insieme di comandi, o usare le shortcut F2 e F3. Assicuratevi però di aver installato anche l'exe del TPC editor, che si scarica sempre dallo stesso sito giapponese ma separatamente dalla patch. Questo è attualmente l'unico modo per accedere ad alcune delle nuove stellari feature come le variabili di testo. String variables Ebbene sì, oltre all'array di variabili "v[]" (che avrete già visto nei messaggi standard, es. "\v[1]") che contiene valori numerici, è ora possibile accedere all'array "t[]", che consente di memorizzare e manipolare stringhe di testo. Grazie all'editor TPC, è inoltre possibile utilizzare queste variabili anche come nomi di file, per esempio per caricare dinamicamente una picture come vedremo qui. Per dichiarare una variabile di testo, si utilizza l'operatore ".asg" in questo modo: t[1] .asg "hello world!" Dopo l'assegnazione, che apparirà così: la variabile di testo con id 1 conterrà la stringa "hello world!". L'obiettivo è quello di creare un sistema di visualizzazione messaggi completamente custom, che consenta di mostrare nel gioco una stringa arbitraria centrata orizzontalmente a partire da una variabile di testo (settabile nell'editor, ma potenzialmente anche presa in input dall'utente!). Useremo t[1] per conservare il messaggio prima di richiamare l'evento comune che si occuperà della visualizzazione. Risorse: le picture dei caratteri Per prima cosa, ci serve l'alfabeto. Per questo tutorial ho ritagliato i caratteri del font "Visitor" di dimensione 10 con uno stroke esterno nero di 1 px. Potete scaricarli da qui: https://www.dropbox.com/scl/fi/h0a169zkerfquza352nfw/Picture.rar?rlkey=r53qgq2jk653winf4shfhqnt2&dl=0 Mi sono limitato alle lettere minuscole e ho aggiunto qualche carattere speciale (come la virgola, il punto, i due punti e il punto esclamativo), e soltanto la "à" e la "è" accentate (volendo è infatti possibile gestire l'accento separatamente), ma è facilmente espandibile per ogni necessità. Per praticità, ogni picture si chiama esattamente come il carattere che rappresenta, ad eccezione dei caratteri speciali e accentati che creerebbero giustamente problemi al filesystem (o purtroppo all'editor TPC nel caso degli accenti) e richiederanno una gestione separata. Queste pic hanno nomi dedicati, ad esempio "comma.png". Un'altra cosa importante da notare è che non hanno tutti la stessa dimensione, in larghezza o altezza. Vogliamo evitare es. di lasciare spazi vuoti a sinistra e a destra di una "i", e ho quindi deciso di usare picture della dimensione più minimale possibile e occuparmene lato programmazione. Un problema analogo riguarda la presenza di un colore trasparente o meno, come vedremo più avanti nella gestione dei caratteri particolari. L'algoritmo: Show Message L'algoritmo consiste in 2 loop principali, che divideremo in 2 diversi Eventi Comuni. Il primo, che chiameremo "Show Message" e sarà quello da richiamare dall'esterno, scorre i caratteri della stringa e serve a calcolare la sua totale lunghezza in pixel, per sapere come centrarla (o gestirla diversamente se è troppo lunga). Per prima cosa, scopriamo la lunghezza in caratteri della stringa (che abbiamo memorizzato in t[1]) grazie all'operatore .getLen: t[1] .getLen v[3361] L'ultimo parametro, "v[3361]", è semplicemente la variabile in cui memorizzare il risultato. Nell'editor a eventi apparirà così: Dopo questa istruzione, la variabile "Message Char Length" contiene la lunghezza (in caratteri) della stringa t[1]. Tuttavia, conoscere la lunghezza in caratteri non equivale a conoscere la lunghezza in pixel, che è quella che ci interessa ai fini di centrare graficamente il messaggio, in quanto abbiamo visto che i caratteri possono avere diversa larghezza (una "O" non dovrebbe occupare gli stessi pixel di una "I"). Vogliamo quindi scorrere la stringa carattere per carattere (grazie all'operatore ".subs" ovvero "substring"), andando a sommare di volta in volta la loro lunghezza effettiva. La primissima cosa da tenere a mente è che gli indici di una stringa iniziano da 0, non da 1, quindi il primo carattere sarà memorizzato alla posizione 0, mentre l'ultimo alla posizione "(lunghezza della stringa) - 1". Sistemeremo quindi subito questo offset diminuendo di uno la lunghezza che abbiamo precedentemente estratto con .getLen, inizializzando anche un altro paio di utili variabili: Analizziamo nel dettaglio queste prime righe: Il Conditional Branch è solo una misura di sicurezza, per evitare di avere a che fare per sbaglio con stringhe vuote. Max Line Length è la massima lunghezza in pixel che vogliamo concedere a un messaggio. Se stiamo giocando a 320x240 (sì, la patch consente anche di cambiare risoluzione...), un massimo di 300 consentirà di lasciare un piacevole margine di (almeno) 10 pixel a destra e a sinistra della riga. Y (First Line) è semplicemente la coordinata Y a cui vogliamo piazzare il messaggio. Questo tutorial non va così in profondità, limitandosi a una sola riga, ma naturalmente è possibile creare sistemi che spezzano automaticamente i messaggi in più righe diverse (per esempio memorizzando la posizione dell'ultimo spazio/virgola/punto trovato prima di sforare il limite, così da non spezzare le parole a metà). A seguire, troviamo come spiegato la diminuzione di "Message Char Length" di 1 (per sistemare l'offset dell'indice) e l'inizializzazione di Message Pixel Length a 0 (conterrà la lunghezza in pixel della stringa). Creiamo ora il nostro loop che va da 0 (il primo carattere) alla lunghezza della stringa in caratteri (-1), grazie al comando migliorato "Loop", e indichiamogli di memorizzare l'iteratore nella variabile "Loop Iterator": L'iteratore che stiamo salvando in Loop Iterator non è altro che un contenitore per l'indice che stiamo attualmente scorrendo: il loop stesso si occuperà di aumentarlo automaticamente di 1 ad ogni iterazione, e si interromperà quando raggiunto il limite indicato (Message Char Length). Immaginiamo cioè di ricevere in input la parola "MELA": .getLen ci restiturà 4lo diminuiamo di 1 per sistemare l'offset (ora Message Char Length è 3)creiamo un ciclo che va da 0 (il primo carattere, la "M") a Message Char Length (l'ultimo carattere, la "A"):ad ogni iterazione, Loop Iterator conterrà in ordine 0, 1, 2, 3Arriviamo così all'istruzione fondamentale del loop, ovvero il comando ".subs" che ci consente di estrarre in questo caso un carattere per volta: t[2] .asg .subs t[1], v[3363], 1 t[2] è una nuova variabile di testo, a cui assegniamo il carattere singolo; t[1] è la stringa originale, che contiene l'intero messaggio; v[3363] è l'indice di partenza, corrispondente al nostro Loop Iterator, che indicherà quindi di partire dall'n-esimo carattere; infine, 1 rappresenta quanti caratteri vogliamo prendere. Dopo questa istruzione, t[2] contiene il carattere che ci interessa analizzare in questa iterazione del ciclo. Ora non ci resta che controllare di quale carattere si tratta e sommare la sua lunghezza; per farlo, si può benissimo usare una serie di "if-else" annidati, ma non sono un grande fan di quanto l'indentazione del codice aumenterebbe facendo così: per migliorare leggibilità e manutenibilità, ho preferito utilizzare una label (il risultato è del tutto equivalente). Per ottenere una "Condizione Se" che utilizza variabili testuali, potete copiare questo template che utilizza l'operatore ".eq" per confrontare due stringhe: @if t[2] .eq "i" { v[3362] += 2 @label.jump 1 } Con una serie di condizioni analoghe, possiamo listare tutti i caratteri speciali che richiedono una gestione dedicata. Nell'esempio riportato, per il carattere "i" che è molto sottile stiamo andando a sommare solo 2 pixel nella variabile 3362 (che contiene la nostra somma totale). In particolare, questi caratteri: i , . ! : richiedono soltanto 2 pixel; un'altra classe contenente: ) ( 1 richiede 3 pixel, mentre tutti gli altri caratteri inclusi in questo tutorial hanno la larghezza "standard" di 6 pixel, e sono quindi considerati tutti insieme in fondo appena prima della label (si noti che ciò comprende lo spazio, che può essere gestito separatamente se lo si vuole invece più corto o lungo). In questo loop non abbiamo altro da fare: al suo termine, la variabile "Message Pixel Length" conterrà la totale lunghezza in pixel della stringa. Prima di proseguire, fuori dal loop aggiungiamo per sicurezza un controllo sulla lunghezza massima: nel caso sfori il limite che abbiamo impostato, possiamo qui introdurre una logica per cambiare riga automaticamente, dare semplicemente un errore o implementare altri sistemi complessi (non coperti da questo tutorial) per esempio per bilanciare la distribuzione delle parole su più righe (invece di es. avere la prima riga "piena" e solo una parola nella seconda). Se invece è tutto entro i limiti, passiamo al calcolo matematico che ci consentirà di centrare graficamente il messaggio. L'obiettivo in poche parole è trovare dove sistemare la prima lettera, in quanto tutte le altre non faranno che seguirla. Inizializziamo una variabile a 320, la massima X, e rimuoviamo la lunghezza della stringa in pixel calcolata dal loop: quello che otterremo sarà lo spazio "libero", sostanzialmente la somma del margine destro e sinistro. Siccome ci interessa solo il sinistro e vogliamo che il messaggio sia centrato, non resta che dividerlo a metà. Et voilà! Abbiamo le coordinate del primo carattere. Possiamo concludere chiamando l'evento comune "Display Chars", un altro loop che è bene tenere separato in quanto si occuperà esclusivamente di mostrare caratteri a partire da una certa X e Y, e potrebbe essere quindi utilissimo chiamarlo anche da altre parti (per esempio le voci di un menu o in generale scritte che non vogliamo siano centrate). Display Chars Questa è forse la sezione che meglio mostra le potenzialità della patch, ma ci saranno prima da gestire un po' di casi particolari. Anche qui a fare il grosso del lavoro sarà un loop sui caratteri della stringa, del tutto analogo al precedente (variabili utilizzate comprese). Per prima cosa, fuori dal loop inizializziamo l'id della picture del primo carattere, usando una nuova variabile "Char Pic ID". In questo esempio partiamo da 101, che significa che i messaggi avranno altissima priorità di visualizzazione rispetto ad altre picture, ma naturalmente si può adattare l'id iniziale come si preferisce. All'interno del loop, inizializziamo qualche variabile e switch che ci consentirà di gestire i casi più antipatici. Char: no picture indica se al carattere non deve corrispondere alcuna picture: è il caso dello spazio. Vogliamo infatti far comunque proseguire la frase in avanti, aggiungendo un offset alla coordinata X, ma senza bisogno di occupare una picture e un ID. Char: no transparency ci consente di indicare al Mostra Picture di non usare la trasparenza. Questo permette di gestire alcuni caratteri che sono "pieni" nel font, come la M o la S o anche sottili come la "i", che non hanno neanche un pixel libero per indicare la trasparenza (onestamente non so se è il modo migliore di gestire la cosa!). X Offset ToSum conterrà un valore del tutto analogo alla lunghezza in pixel che abbiamo utilizzato in Show Message (per esempio 2 per le "i", 6 per i caratteri standard ecc), e ci consentirà di far scorrere orizzontalmente la coordinata in cui posizionare il carattere successivo. Y Offset è infine utile a gestire caratteri che vanno visualizzati più in basso, come il punto e la virgola, o al contrario più in alto come quelli accentati. Esattamente come in Show Message, per proseguire prendiamo in t[2] l'n-esimo carattere e siamo pronti a controllarlo negli if-else (anche qui ho preferito usare una label): t[2] .asg .subs t[1], v[3363], 1 Ed ecco un esempio di IF che controlla lo spazio: @if t[2] .eq " " { } Vediamo tutte le categorie speciali coperte dal tutorial: Dopo tutti i controlli, ma ancora all'interno del loop, possiamo finalmente mostrare la nostra picture. Prima di tutto controlliamo che lo switch Char: no picture sia OFF, se lo è proseguiamo: sommiamo l'offset della Y (quello sulla X andrà gestito dopo, perché è cumulativo) alla Y standard assegnata in precedenza per la prima rigacontrolliamo se dobbiamo usare la trasparenza o meno, tramite lo switch Char: no transparencynei due rami dello switch, mostriamo la pictureaumentiamo l'id ("Char Pic ID") per la prossima picture Utilizzando il nuovo "Mostra picture", vediamo subito alcune opzioni interessanti. Prima di tutto possiamo impostare l'ID tramite una variabile (quella che avevamo inizializzato a 101), che ci tornerà utile per poterlo aumentare ad ogni iterazione. In secondo luogo possiamo settare "Top-left" come opzione per le nostre coordinate, che ci risparmia ulteriori calcoli. Naturalmente, le coordinate X e Y da settare sono quelle che abbiamo impostato/calcolato in precedenza ("X Offset" e "Y Offset"). E come picture cosa dovremmo settare? Nulla, potete sceglierne una qualunque e poi editare l'istruzione con F2. In particolare vogliamo sostituire la seconda riga con t[2] (mi raccomando, senza virgolette), che è proprio la variabile che contiene il carattere corrente (salvo gli aggiustamenti di cui ci siamo già occupati per i caratteri speciali). Ecco un esempio dell'istruzione finale per il ramo "Char: no transparency" = OFF: @pic[v[3367]].show { t[2] .pos v[3365], v[3369] .topLeft .chromakey 1 .scale 100 .trans 0 .rgbs 100, 100, 100, 100 .mapLayer 7 .eraseWhenTransfer .affectedByFlash .affectedByShake } .chromakey 1 indica se usare la trasparenza, ed è quindi l'unica istruzione da cambiare (da 1 a 0) nei due rami dello switch (il resto può essere copia-incollato). La comodità di questo passaggio è davvero sconvolgente, in quanto possiamo caricare una picture arbitraria dalla nostra cartella indicando il nome del file tramite variabile: se per esempio t[2] conterrà "m" come alla prima iterazione sulla parola "mela", quest'istruzione caricherà la picture "m.png". Finito? Non ancora. Fuori dallo switch non dimentichiamo di aumentare l'id della picture per il prossimo giro, e poi sempre all'interno del loop aumentiamo l'offset X sommandogli l'X Offset to Sum, quello che abbiamo settato in precedenza a seconda della larghezza del carattere. Questo consentirà al prossimo carattere di posizionarsi correttamente. Infine, possiamo gestire come vogliamo il tempo d'attesa tra un carattere e l'altro (non mettendo nulla, tutto il messaggio apparirà subito). Anche qui la patch ci viene in aiuto in maniera incredibile, in quanto consente di settare l'attesa per frame invece che per decimi di secondo (c'è un mondo compreso tra 0.0 e 0.1!), tramite questa istruzione: @wait 4 .frame Neanche a dirlo, tramite TPC anche questo valore è parametrizzabile, ovvero potete passarlo in una variabile così: @wait v[100] .frame per gestire diverse velocità di scrittura, o anche cambiarle dinamicamente all'interno dello stesso messaggio. Ora abbiamo davvero finito, con appena un paio di cortissimi Eventi Comuni siamo in grado di mostrare (quasi) qualsiasi stringa dove ci pare. Per richiamare la funzione, basterà prima settare in t[1] il testo che vogliamo: t[1] .asg "ciao!" Ecco un piccolo video dimostrativo: E per cancellare il messaggio? Questa parte non è nel tutorial, ma al termine della visualizzazione l'id dell'ultimo carattere sarà semplicemente contenuto nella variabile "Char Pic ID" che abbiamo usato. Sarà quindi sufficiente cancellare i caratteri, con l'effetto che si preferisce, manipolando le picture dalla 101 all'ultima usata. La patch consente infatti di indicare ".relative" al comando Move Picture, che significa che non è neppure necessario conservarsi le coordinate di tutti i caratteri (si può dire ad esempio a una picture "muoviti in basso di 10 px rispetto a dove sei"). Codice completo Non ho incluso un progetto scaricabile perché posso passarvi direttamente il codice! Evento comune "Show Message": Evento comune "Display Chars": Come richiamarlo: dove 1005 è l'id di "Show Message". L'unico accorgimento da tenere a mente dopo un copia-incolla è quello di chiamare il corretto Evento Comune (Display Chars) alla fine di Show Message, oltre ad avere abbastanza variabili e switch a disposizione (vengono usati ID molto alti). Come proseguire? Quanto presentato nel tutorial si può espandere tantissimo, andando a implementare come minimo tutto ciò che consente il sistema standard di rpgmaker per i testi (come colori, diverse velocità, pause), con infinite possibilità di customizzazione. Praticamente tutto è parametrizzabile, compresi i colori che si danno al Mostra Picture; è quindi possibile inventare da zero i propri comandi ed effetti sul testo (per esempio, il carattere "§" potrebbe corrispondere ad una pausa o un certo colore). Le potenzialità tuttavia non sono limitate a stringhe statiche, settate da noi, ma possono applicarsi a stringhe prese in input dall'utente (persino direttamente da tastiera, in quanto la patch offre il controllo completo delle key), come per dare la soluzione di un enigma, scrivere note e addirittura salvare/leggere da un file di testo esterno (altra cosa piuttosto incredibile concessa dalla patch: permette per esempio di introdurre dati che valgono per tutti i salvataggi, es. quante volte il giocatore ha ottenuto Game Over - e anche i menu di Salva e Carica sono finalmente customizzabili per intero). Beh che dire, potete immaginare quanto sia stato pazzesco per me (per fare tutto questo ho impiegato appena un pomeriggio): se qualcuno ha mai visto i file di Masks o seguito il progetto, forse saprà che dal 2008 a ieri ho creato con photoshop più di 1400 dialoghi diversi, ognuno con la sua picture dedicata…
-
Non la conoscevo, è pazzesca... mi hai aperto un mondo. Ho realizzato in un pomeriggio un sistema 100% custom per scrivere e visualizzare i messaggi (fino ad oggi li ho creati uno ad uno con photoshop... sconvolgente) e sto scrivendo un piccolo tutorial al riguardo, che posterò a breve! EDIT: eccolo QUI!
-
Ciao ragazzi, innanzitutto grazie per averlo scaricato e giocato tutto, è qualcosa che fa piacere a prescindere, anche se sembra che più che ringraziamenti vi debba delle scuse! Le recensioni e le critiche sono state recepite e interiorizzate, in particolare perché avete ragione sostanzialmente su tutto - non si tratta solo di leggere e comprendere le critiche diciamo lato giocatore, ma c'è anche la piena consapevolezza della loro verità, con poche giustificazioni a mia disposizione. Approfondisco in spoiler: Mi piacerebbe rimanere positivo e continuare a "giocarci" così com'è stato finora, molto lentamente e nei ritagli di tempo, quindi vi direi che i capitoli successivi dovrebbero portare tantissime migliorie, parti di gameplay potenzialmente interessanti (per esempio Ulvar avrà un Tower Defense, completamente ad eventi, di cui potete vedere un'anteprima nel thread del progetto) e (sperabilmente) maggiore maturità al gioco - e hey, se vorrete scaricare una futura demo vi garantisco che troverete un salvataggio aggiornato e non dovrete rigiocare le parti più brutte, da qui non può che migliorare
-
http://i.imgur.com/WOXdV.png Ciao a tutti bellissimi/e, con appena qualche mese di ritardo (ehm...) mi ritrovo finalmente a consegnarvi la release 2.5 di Masks. Per chi ha già giocato la 2.0 del Game Contest #3, nel lontano 2012, la parte nuova è ahimè davvero piccina, e in effetti questa release rappresenta più che altro un segno di vita da parte mia e del progetto, che confido rimarrà sempre "ongoing" in background tra le mie attività nonostante i lunghissimi periodi di pausa. Chi non l'avesse mai giocato potrà godere di una versione indubbiamente più curata, bilanciata e sanata della maggior parte dei bug segnalati, che dovrebbe assicurare qualche ora di interessante gameplay. La parte nuova include la conclusione dell'arco di Alanyr e le Paludi di Ashar, con un enigma e una bossfight piuttosto tosta. Presentazione Masks è un GDR fantasy che vanta un menu e un BS laterale completamente custom realizzati ad eventi, e segue le avventure di un ragazzo, Shanar, dalla notte in cui entra in possesso di un misterioso artefatto. Potete trovare QUI tutte le recensioni che ricevette al GC per farvi un'idea senza dubbio più completa e onesta! Mentre questo è il thread del progetto. Qualche screen dalla parte nuova: Per chi ha già giocato All'interno del gioco, selezionando "Riprendi" troverete già 3 salvataggi. Se hai già concluso la release 2.0 o 2.1 di Masks, puoi continuare esattamente da dove si è interrotta caricando il salvataggio 15. Tuttavia, ti consiglierei di caricare il 14, collocato all'inizio di Alanyr, per fare mente locale (in particolare essendo richiesto del backtracking). Il salvataggio 1, infine, è collocato all'inizio della parte giocabile (caricarlo ha lo stesso risultato di scegliere "Salta completamente l'intro"). Download http://i.imgur.com/Jis6x.png Dal link potete ignorare i pop-up di registrazione e fare direttamente Scarica in alto a sinistra. Il gioco non richiede RTP installati. Se ottenete l'errore "DirectDraw Error (DDERR_UNSUPPORTED)", cliccate col destro sull'eseguibile (RPG_RT.exe) e nella tab Compatibilità assicuratevi di selezionare "Windows 7" in "Esegui il programma in modalità compatibile per:". All'interno della cartella, troverete un'utile Guida al gioco se doveste bloccarvi in qualunque pezzo. Buon divertimento!
-
Ciao a tutti bellissimi, grazie mille Louie, Testament e Guardian, sono felicissimo che seguiate il thread e vi prometto che sto lavorando per voi, anche se non velocemente quanto vorrei! Batto infatti un colpo con una notizia dolceamara, la release si farà e includerà per intero le paludi, ma la data si sposterà a un indefinito "gennaio", approfittando delle ferie che avrò fino all'8. Il lavoro non mi ha lasciato molto tempo e in questi giorni confesso di aver un po' procrastinato per quanto riguarda i contenuti della release, facendo invece interventi più o meno importanti come l'aggiunta dell'area corrente come face dell'eroe al salvataggio per meglio orientarsi tra le posizioni (vedi screen), ma soprattutto la correzione di un bug malefico, di cui ho parlato diverse volte e anche yugi90 era stato vittima in casa di Shanar, che consentiva di skippare importantissimi eventi "al tocco dell'eroe" "sotto l'eroe" aprendo il menu in movimento. Infatti, eventi di questo genere scattano AL TERMINE del movimento, e il menu (che è con teletrasporto su mappa) scattava prima impedendone l'esecuzione. Dopo svariati tentativi con Wait, switch di controllo e ponderando anche la possibilità di memorizzare la pagina attiva per richiamare l'evento alla chiusura del menu (follia), la soluzione si è rivelata banalissima ovvero cambiare il setting in "collisione con l'eroe", che si comporta come desiderato ovvero prende il controllo immediatamente impedendo al menu di aprirsi. Tra le due impostazioni c'è qualche differenza come il timing (scatta qualche ms prima) e il fatto che l'evento continua a ripetersi finché l'eroe è lì sopra (rischiando di bloccare il gioco), e in generale ha richiesto di rifattorizzare tutte le mappe (+ testing), ma sono estremamente contento di essermene liberato. Save/load menu: Non mi fa impazzire che sia tutto sulla sinistra, mi sarebbe piaciuto usare 3 o anche 4 degli slot dei face (spezzettando cioè un'immagine lunga), ma tra uno e l'altro rimane per forza dello spazio (forse lo riempirò quindi in futuro con informazioni diverse, come la missione corrente). Vi lascio anche due screen di aree mappate di recente, una che si trova sotto la biblioteca, nulla di particolare (chip già usato sempre per i sotterranei di Alanyr, ma con colori alterati), e la stanza di Guil: Vi riaggiornerò quindi nell'anno nuovo, il che significa augurissimi di Buone feste a tutti! Fate i bravi, a presto :) <3
-
Quasi sicuramente un ad blocker o un'altra estensione, prova così: - copia il link http://loppaworks.altervista.org/utility/rm2k_resource_editor.rar - incollalo in una finestra di navigazione in incognito dopo il download potrà dirti che non è sicuro, probabilmente perché è un rar con un exe, ma l'ho scaricato facendo "conserva comunque" (Chrome) e mi sembra ok. Provandolo ho visto che funziona solo con il 2000, i file del 2003 non li accetta
-
Ahahah eh sì avevo seguito proprio quella guida mi sa, soprattutto perché gli RTP usati sono presenti anche nelle cartelle del progetto, non solo in quelle delle release, quindi mi sa che li avevo importati manualmente via via... ultimamente non ci ho più badato, convintissimo che esistesse un tool apposito. Comunque faccio sempre anche dei giri di test su un PC che non ha gli RTP installati, in qualche modo li ritroverò
-
Ciao a tutti,mi trovo con uno strano problema ovvero non ricordo come creare una release contenente soltanto le risorse utilizzate. Grazie al thread sui vari tool ho trovato questo: che parte su Windows11 tuttavia l'esecuzione di "Scan" mi crasha, senza stampare errori, forse perché ho un database modificato da varie patch (uso "rpg maker 2009 ultimate" di Cherry). La cosa bizzarra è che ho io stesso realizzato delle release "pulite" non molto tempo fa, ma non ricordo di aver utilizzato questo tool; forse era un altro ma a me pare di ricordare una funzione integrata del 2009, in cui invece ora trovo solo l'opzione di includere tutti gli RTP se uso "Tools -> Create installer". L'idea era di creare la cartella RTP inclusi con l'installer, poi pulirla automaticamente da tutto ciò che non è usato (RTP e non). Le cartelle delle mie stesse release vedo che contengono ad esempio alcuni sound RTP (ma non tutti), e non ricordo di essere stato così diligente da importarli a mano singolarmente (ma a questo punto non lo escludo).C'è per caso un altro tool che voi usate comunemente?
-
Ciao ragazzi, grazie a tutti! <3 Yugi, mi fa super piacere sentirlo! Così si fa ci saranno sempre alti e bassi nella produttività temo, l'importante è lasciarsi sempre la possibilità di tornare (e fare un sacco di backup...) Certo Guardian, hai assolutamente ragione, vi lascio intanto una scena safe e sicuramente il post delle release includerà anche screen delle nuove Paludi di Ashar (che ho definito meglio a livello di gameplay e ormai sono sicuro di voler includere per intero nella "2.5", release stimata per quest'anno , mentre Naga, il castello assediato e forse anche il ritorno a Daga saranno nella 3.0 stimata a occhio per la prima metà del 2024). Tra i quality of life improvements avevo dimenticato di citare uno dei migliori nel BS ovvero ora il puntatore memorizza la posizione dell'ultima spell usata (separatamente per ogni eroe), prima era tremendo specialmente per Shanar la cui prima spell è una passiva (ogni turno bisognava spostarlo). Ho implementato inoltre i concetti di immunità a spell e status alterati, e i nuovi slot a disposizione per le pic mi hanno permesso di realizzare con facilità alcune animazioni custom, per esempio scurire lo schermo come in questa limit di Senna: Mi mancano ormai un paio di mappe e scene per completare Alanyr, il da farsi è chiaro e per ora tutto procede bene :) grazie ancora, a presto!