-
Posts
1,347 -
Joined
-
Last visited
-
Days Won
11
Content Type
Profiles
Forums
Calendar
Posts posted by Ste
-
-
-
Dopo tanto, pubblico qualcosa su Our Hero! Hyper Sword ^^
L'hud è cambiato, tornando ai simpatici cuoricini; è cambiata anche la risoluzione, ora di 960 x 544 ed è cambiata la faccia dell'eroe :3
http://image.prntscr.com/image/6e17f7d4297b4a868386e4f959715eaa.png
Vorrei chiedervi un consiglio su questo ambiente: secondo voi è piacevole così semplice, o ci aggiungereste qualche dettaglio? (ad esempio sulle pareti rocciose o l'erbetta) Se sì, cosa?
-
Guida all'uso avanzato delle variabili integrato a plugin e call script.
Ciao ragazzi, oggi vorrei parlare un po' con voi delle variabili e della loro potenza! :D
Come sappiamo, le variabili sono uno degli elementi fondamentali per creare un videogioco, se non il più importante.
Con le variabili si può decidere e cambiare tutto, se sappiamo usarle in modo intelligente.
Sono anche più toste delle switch, tant'è che una switch è semplicemente una variabile che può settare i suoi valori solo su 0 e 1.
Nelle variabili, invece, possiamo memorizzare numeri positivi, numeri negativi, addirittura stringhe. E per ogni valore assegnare una condizione diversa.
Tutti i trucchetti che pubblicherò in questo post potrebbero sembrarvi cose banali, qualcuno magari lo conoscete già anche voi, ma io ci sono arrivato man mano strada facendo... e mi piacerebbe condividere tutto con voi, sperando di dare una mano a chi magari ancora non si è accorto di che strumento potente ha fra le mani.
Cominciamo!- Variabili per gestire il pg che parla
Uno dei momenti in cui mi è stato molto utile l'utilizzo delle variabili è per gestire il personaggio che sta parlando. In Our Hero! Hyper Sword infatti il personaggio che sta parlando, durante un dialogo, ha il suo movimento che apre e chiude la bocca, proprio per far vedere che è lui che parla!
Ecco come avrei fatto una volta:
http://projectste.altervista.org/Immagini/img1.png
Ogni volta che un personaggio parlava modificavo il suo movimento, cambio di grafica (con la bocca) e animazione della camminata ON; lo stesso quando finiva il suo intervento, cambio di grafica (normale) e animazione della camminata OFF, così tornava a starsi fermo.
Capite bene che in questo modo veniva una pagina di eventi infinitamente lunga e non ci si capiva più nulla. Per ogni personaggio partecipante al dialogo, ad ogni suo messaggio un cambio grafica all'inizio e un cambio grafica alla fine!
Ecco come l'ho fatto diventare:
http://projectste.altervista.org/Immagini/img2.png
Decisamente più pulito! Com'è possibile? Il trucco in spoiler:
http://projectste.altervista.org/Immagini/img3.png
Mi è bastato utilizzare una variabile (in questo caso Parla pg) per decidere quale personaggio per un certo messaggio deve cominciare a muoversi (e quindi sta parlando) assegnando ad ogni personaggio un valore differente.
A questo soldato corrisponde il valore 1, quindi, quando la variabile è settata su 1, lui comincerà a muoversi e, quando la variabile assumerà un qualsiasi altro valore diverso da 1, il soldato smetterà di muoversi (il tutto funziona perché ogni personaggio è settato su “Processo parallelo” per adeguarsi al cambio di valore della variabile).
Per l'eroe invece ho agito in modo diverso, ovvero chiamando un evento comune al momento del suo messaggio e richiamando lo stesso evento alla fine del messaggio:
http://projectste.altervista.org/Immagini/img4.png
Una switch permette di variare il comportamento dell'evento comune ogni volta che lo si chiama.- Variabili per gestire le stringhe (plugin)
Ora passiamo ad un argomento più interessante: assegnare alle variabili delle stringhe!
Lo sapevate? Una variabile non può contenere soltanto numeri, ma anche lettere, parole, o intere frasi! Fantastico per gestire nomi di personaggi, di oggetti, di armi, o qualsiasi altra cosa che, col tempo, potrebbe venirci in mente di modificare.
Il Call Script per assegnare ad una variabile una stringa è infatti questo:$gameVariables.setValue(1, "Ciao!");
Tra le parentesi: il numero 1 corrisponde all'ID della variabile a cui ci stiamo riferendo, mentre “Ciao!” è il “valore” che la nostra variabile di riferimento andrà ad assumere.
Ricordiamoci che per memorizzare una stringa in una variabile dovremo mettere tutta la stringa fra le “virgolette”. Per memorizzare un qualsiasi numero invece le virgolette andranno tolte:$gameVariables.setValue(1, 52);
In quest'ultimo esempio la variabile 1 ha assunto il valore “52”.
Tutto molto bello, ma...
Se integrassimo questa funzione ad un potente plugin? Come, ad esempio, lo Iavra Localization?
Lo Iavra Localization permette di gestire tutti i testi del nostro gioco in un file .js esterno: messaggi, oggetti del database, nomi dei personaggi, elementi di sistema... tutto gestito esternamente e in un unico file, così da poter essere modificato dinamicamente in qualsiasi momento in tutto il gioco, solo in un istante! Perfetto per creare giochi multilingua e non solo.
Infatti ,il nostro messaggio di prima, da così:
http://projectste.altervista.org/Immagini/img2.png
è diventato così:
http://projectste.altervista.org/Immagini/img6.png
Un codice che richiamerà la corrispondente stringa dal file unico.
Allo stesso modo possiamo gestire le voci dei menu (Nuovo gioco, Continua...) o anche i nomi dei personaggi, richiamandoli tramite codice all'occorrenza. Richiamando il codice (e non un testo statico) qualsiasi nome potrà essere modificato una sola volta dal file unico ed averlo così modificato in qualsiasi punto del nostro gioco in cui avremo fatto riferimento ad esso tramite il codice!
Per ogni lingua (supportata dal nostro gioco) creeremo un file unico, dove gli stessi codici richiameranno stringhe differenti a seconda della lingua selezionata.- Variabili per gestire hud su schermo (plugin)
Questo trucco utilizza due plugin molto potenti: lo Iavra Localization e l'Orange Hud.
Cosa fa l'Orange Hud? Questo plugin permette di mostrare su schermo qualsiasi variabile, in qualsiasi posizione (e alla dimensione, il colore e lo stile che preferiamo).
Qualsiasi variabile?! E se le variabili possono assumere anche stringhe come valori, cosa siamo in grado di fare???
Hud dinamici, che modificano il loro testo come e quando vogliamo noi!
Questo è un esempio di utilizzo di questo trucco:http://projectste.altervista.org/Immagini/img7.png
Quello qui sopra è il menu di Our Hero! Hyper Sword e le parti cerchiate in rosso sono valori disegnati dal plugin Orange Hud. Nel primo caso vediamo sei variabili differenti, dove ognuna riporta il suo valore numerico. Nel secondo caso vediamo una stringa di testo (il nome della mappa). Per fare ciò è bastato ricorrere al primo trucchetto che abbiamo imparato, ovvero come assegnare una stringa ad una variabile e, combinando il tutto con lo Iavra Localization abbiamo ottenuto una variabile su schermo in formato stringa, che può variare quando vogliamo!
Infatti, nel momento in cui cambierò mappa nel gioco e mi trovo in una zona differente, mi basta usare il seguente Call Script:$gameVariables.setValue(28, "#{map.castle}");In questo modo la variabile 28 assumerà il valore corrispondente al codice richiamato tra le virgolette, che è naturalmente una stringa:
http://projectste.altervista.org/Immagini/img8.png- Variabili per gestire la posizione della telecamera (plugin)
Un altro modo intelligente per utilizzare le variabili è fargli gestire la posizione della telecamera.
Per procedere con questo metodo avremo bisogno di uno dei plugin, a parer mio, essenziali per utilizzare al meglio Rpg Maker MV. Si tratta del plugin di Galv: Cam Control.
Questo plugin ci permette di gestire la telecamera di gioco come preferiamo: incentrata sull'eroe (standard):
http://projectste.altervista.org/Immagini/img9.png
incentrata su un determinato evento:
http://projectste.altervista.org/Immagini/img10.png
oppure su delle specifiche coordinate:
http://projectste.altervista.org/Immagini/img11.png
Il bello viene con quest'ultima funzione: le coordinate, infatti, possono essere sì dei valori statici (0, 0), ma anche dei valori dinamici, sostituendoli con delle variabili!
Basterà assegnare a due differenti variabili (una per la coordinata X ed una per la coordinata Y) i valori che preferiamo, anche dal normale comando evento disponibile in Rpg Maker e, poi, aggiungere questo Comando Plugin:
http://projectste.altervista.org/Immagini/img12.png
In questo modo diremo alla telecamera di spostarsi alla coordinata X corrispondente al valore numerico contenuto nella variabile 1, ed alla coordinata Y corrispondente al valore numerico contenuto nella variabile 2.- Variabili per gestire il ciclo giorno/notte e cambio tinta
Questo trucchetto mi piace particolarmente, ed è anche l'ultimo che ho scoperto quando l'altro giorno mi sono ritrovato ad introdurre il ciclo giorno/notte nel mio gioco.
Ho tentato prima con un plugin. Ce ne sono, belli completi e sofisticati, ma avevo bisogno di qualcosa di più semplice e immediato, così ho preferito farmelo ad eventi, come al solito.
I metodi per realizzare un ciclo giorno/notte possono essere tanti e diversi, ognuno ha il suo. Basta utilizzare poche variabili, con un'attesa riferirsi allo scorrere dei secondi e ogni tot secondi conteggiare un minuto e in un ciclo, raggiunto un determinato ammontare di minuti, eseguire la transizione da un momento della giornata ad un altro, con un cambio tinta schermo.
Il problema è proprio il cambio tinta: il comando datoci a disposizione da Rpg Maker è statico, permettendoci di inserire determinati valori di colorazione (corrispondenti al R, G, B, A) per ogni comando. Ma se volessimo una transizione di colorazione dal giorno alla notte (o qualsiasi altro momento della giornata che vogliamo introdurre) più dinamico?
Dobbiamo creare trecento comandi di cambio tinta differenti?
http://projectste.altervista.org/Immagini/img13.png
(è solo un'immagine a scopo d'esempio)
E anche l'attesa in frames, per ognuno di questi cambio tinta, se dopo aver creato trecento comandi diversi ci accorgiamo che è troppo lenta o troppo veloce? Dobbiamo modificare l'attesa di ogni comando uno ad uno? … Follia.
Ebbene, fortunatamente esistono i Call Script, e ne abbiamo uno anche per il cambio tinta:$gameScreen.startTint([red,green,blue,grey], duration);
Al posto di red, green, blu e grey dovremo inserire i valori tonali della colorazione, che vanno da 0 a 255 e al posto di duration la durata in numero di frames.
http://projectste.altervista.org/Immagini/img14.png
A questo punto forse avrete già capito dove sto per arrivare.
Infatti, possiamo sostituire questi 5 valori con 5 variabili! In questo modo, ognuno di questi valori (red, green, blu, grey, duration) assumerà dei valori dinamici che cambieranno con il modificare del valore assegnato a ciascuna variabile!$gameScreen.startTint([$gameVariables.value(73),$gameVariables.value(74),$gameVariables.value(75),$gameVariables.value(76)], $gameVariables.value(72));
http://projectste.altervista.org/Immagini/img15.png
E in questo modo avremo la possibilità di modificare dinamicamente il nostro comando di cambio tinta, modificando i valori contenuti nelle variabili: ad esempio, ad ogni ciclo, possiamo sottrarre un -2 al valore corrispondente al Green e aggiungere un +1 al valore corrispondente al Grey e alla fine del ciclo chiamare lo stesso Call Script, senza creare trecento comandi differenti. Lo stesso vale per la durata in frames del cambio tinta.Prima di concludere questa parte, una piccola nota: il comando chiamato tramite Call Script non “attende la fine” come il comando normale:
http://projectste.altervista.org/Immagini/img16.png
Dopo il Call Script del cambio tinta ci basterà aggiungere semplicemente un altro Call Script per l'attesa in frames:
this.wait( duration );
Anche qui duration può essere sostituito o da un valore o da una variabile. Abbiamo imparato che per sostituire un valore con il valore contenuto in una variabile ci basta inserire:
$gameVariables.value(n)
dove n è l'ID della nostra variabile.
- Variabili per posizionare un evento generato (plugin)
L'Orange Custom Events è uno dei plugin che più amo.
Questo plugin ci permette di generare nuovi eventi in una mappa copiati da eventi presenti nella stessa mappa o in mappe differenti.
I nuovi eventi copiati possiamo generarli a caso in una determinata regione, riempendo un'intera regione oppure in una specifica posizione x,y.
Non sono qui per parlarvi del plugin, di cui comunque ho già aperto una discussione qui, ma di come può essere sfruttato al meglio grazie all'uso delle variabili.
Grazie a questo plugin, infatti, in Our Hero! Hyper Sword mi è bastato creare un solo ed unico evento per gestire tutti i nemici dell'intero gioco, evitando di copia e incollare centinaia di eventi diversi in ogni mappa. Quando voglio far apparire un nemico, semplicemente... lo chiamo!
L'evento appena chiamato si adeguerà alla battaglia in base al valore assegnato ad una variabile, che gestisce la tipologia dei nemici. Grazie a questa variabile, da un unico evento, potremo creare nemici differenti (utilizzando più pagine) che cambiano il loro aspetto, la quantità di PV, l'attacco o qualsiasi altro valore desideriamo in base al valore assegnato ad una variabile.
http://projectste.altervista.org/Immagini/img17.png
Plugin ottimo per creare eventi che in tutto il gioco sono sempre uguali e non vogliamo ricopiarli continuamente come, ad esempio: trappole, luci, massi e chi più ne ha più ne metta.
Ma ora arriviamo al punto principale: come facciamo a posizionare questi eventi a delle coordinate x,y che noi non conosciamo e potrebbero variare di volta in volta?
Ormai lo sappiamo bene. Basta questo codice per chiamare il valore contenuto in una variabile:$gameVariables.value(n)
e, come ora sappiamo, possiamo inserire questo codice in qualsiasi Call Script, anche di plugin esterni.
Quindi, se per posizionare un evento in una specifica posizione x,y con l'Orange Custom Events useremo il Call Script:$gameMap.copyEventFrom(5, 1, 15, 20, true)
dove 5 è l'ID della mappa dalla quale prenderemo l'evento da copiare, 1 è l'ID dell'evento che stiamo andando a clonare e 15 e 20 sono rispettivamente le coordinate x e y in cui si andrà a posizionare il nostro nuovo evento clonato nella mappa attuale.
Sì, possiamo sostituire ogni valore con i valori contenuti all'interno di variabili:$gameMap.copyEventFrom(5, 1, $gameVariables.value(1), $gameVariables.value(2), true)
Nell'esempio qui sopra ho deciso di rendere variabili solo le coordinate x e y, ma possiamo sostituire anche il valore che si riferisce alla mappa (la Spawn Map) o quello che si riferisce all'ID dell'evento che stiamo copiando.
- Variabili locali (plugin)
Concludo questa guida con uno dei plugin più interessanti di sempre: YEP.113 Self Switches & Variables.
Ommioddio sì, variabili locali, finalmente! E anche Self Switches infinite piuttosto che limitarci alle solite quattro (A, B, C, D) okay... ma se abbiamo già delle variabili locali che possono assumere migliaia di valori diversi che ce ne facciamo più delle Switch Loc... Vabe'!
Il giorno in cui ho scoperto questo plugin di Yanfly sono stato così contento che vorrei aver detto a Yanfly “Tieni, prendi tutti i miei soldi!”. Avere delle variabili locali è fantastico! Soprattutto se hai da gestire centinaia di nemici su mappa tutti diversi e generati da un solo ed unico evento (eheh ^^).
Quest'ultima parte non tratta di un trucchetto in particolare vero e proprio, ma desideravo concludere parlandovi di questo plugin, sia perché lo ritengo un plugin fantastico e sia perché devo concludere ciò che vi ho introdotto poco fa, con la generazione dei nemici da un unico evento e in tante mappe diverse.
Clonando eventi per il gioco, infatti, se questi eventi sono gestiti dalle variabili standard di Rpg Maker, non avremo alcuna possibilità di avere eventi che modificano il loro aspetto o i loro PV o qualsiasi altra cosa in modo diverso l'un dall'altro in base al valore assegnato ad una variabile.
Perché? Cloniamo 10 nemici dalla mappa 5 e ora impostiamo una variabile per determinare i PV del nemico: “Enemy PV = 100”, per esempio.
Così facendo tutti i nemici appena generati avranno i loro PV settati su 100. E come facciamo se in battaglia invece ci ritroviamo nemici di tipo 1, nemici di tipo 2 e nemici di tipo 3? Ogni tipo di nemico ha i suoi diversi PV, perché qualcuno è più forte e qualcuno più debole.
Grazie alle variabili locali possiamo fare tutto ciò. Con le variabili locali, infatti, ogni nuovo nemico generato avrà la sua variabile locale e sarà gestito esclusivamente da questa.
Il valore della variabile locale può essere modificato in base ad una variabile standard di cui modificheremo il suo valore in tempi diversi, per assegnare alle variabili locali valori diversi.
Questo è tutto! L'esempio del mio caso specifico (con i nemici) l'ho riportato solo per farvi capire le potenzialità offerte dal plugin Self Switches & Variables.
La guida ai trucchetti è conclusa! Spero che comprendiate tutto quanto e sicuramente che possa esservi utile in tanti modi diversi! Se qualcosa non vi è chiaro non preoccupatevi, chiedete spiegazioni e dettagli e, se conoscete qualche altro trucchetto anche voi, riportatelo pure che fa sicuramente piacere! :)
Link utili:
RMMV Script Calls -
Lo screen contest! Che bello, finalmente i risultati! L'importante comunque non è quando escono i risultati, ma che questi contest si continuino a fare di tanto in tanto :)
Mi fa piacere anche il primo posto, anche se ammetto le vecchie mappette di oh Hyper sword erano un po troppo larghe e squadrate. Ho fatto tutto nuovo ora, anche l'hud. Vedrò di pubblicare qualche screen nel topic prossimamente :3
E un grande grazie ai giudici che si sono presi l'impegno di recensire, votare e darci consigli sugli screen :)
-
Ci sono anch'io!
L'ho saputo ieri sera con certezza xD
Vediamo se trovo qualcuno, o se qualcuno mi trova ahah
-
Fantastico!
E magari uscisse un Klonoa 3
Ho rigiocato il 1° questa estate, che gioco bello è! :3
-
Un platform ad eventi col 2k3???
Ma come cavolo..??! O_O
Comunque solo una leggera somiglianza, non mi sembra così esagerato xD
-
Bella mappa e bell'effetto!

Tutto disegnato da te quindi? Un gran bel lavorone! ;)
-
Mi piace un sacco la mappona divisa in sezioni *_*
Bel mapping, bravo! Il contorno nero è fatto proprio bene ;)
Quindi se ho capito bene la mappa è divisa in 16 mappe delle dimensioni di 816x624 ciascuna?
-
D: ma Bug della zucca si è mangiato l'opzione di bloccare la telecamera di gioco? O.O Sapete come evitare che segua il pg? e come sbloccarla ovviamente... denghiu!
Con il Cam Control di Galv! :)
-
Tanti e stabili quanto al VX? ne dubito..
Io ne sto usando una quarantina per il mio progetto e vanno tutti alla perfezione. Dove stanno tutti questi problemi?
In ogni caso, più che altro, un utente si è impegnato per realizzare da solo uno script che può essere utile a tante persone, non vedo perché non gratificare il suo lavoro e parlare di MV quando siamo nella sezione Vx Ace.
Inoltre può anche essere che zoro conosca bene l'rgss e poco il javascript, dato che i due tool sono caratterizzati da linguaggi di programmazione differenti, quindi cerchiamo di apprezzare l'impegno per ciò su cui gli utenti hanno le competenze.
Fine OT :)
-
beata insonnia! però facciamo script anche per MV daje...

Non preoccuparti, di plugin per mv ce ne sono a valanghe.
Gran bello script Zoro! :)
-
Bellissimo progetto!
Le mappe, i personaggi, lo stile è tutto proprio come piace a me *_*
Grande Lakaroth!
Lo rilascerai anche per mobile? Se non sbaglio ti eri interessato alla possibilità :)
-
Dogma
in Progetti MV
Era un po'che non si vedeva un progetto così personalizzato e curato!
Mi piacciono moltissimo le mappe e lo stile degli hud. Con photoshop te la cavi proprio bene, si vede che riesci a piegarlo alle tue esigenze ;)
Sono fiducioso e seguirò costantemente il progetto. Bravo Gatto! :)
-
Non esiste un plugin specifico per fare quello che chiedi, ma probabilmente può aiutarti il plugin sync save data:
http://himeworks.com/2015/12/sync-save-data/
Questo plugin permette di creare switch (e variabili) che si attivano o disattivano per tutto il gioco e per ogni partita salvata.
Questo significa che puoi "caratterizzare" un determinato file da una switch X e, opportunamente modificando il plugin che gestisce i save file (cosa che io non so fare) inserire una condizione "if switch X è off -> impedisci di effettuare il salvataggio"
-
Sta venendo bene! Bello screen.
Mi piace tutto tranne il ponticello, che stona un po' e forse ci starebbe meglio di un altro colore, più in linea con lo stile del paesello :)
-
Cavolo, è la prima volta che provo un gioco mv su mobile! Che carino :3
Però si, lagga abbastanza... ho un s5, ma non credo dipenda dal telefono come già si è detto :/
Gmn puoi comunque modificare i tuoi messaggi precedenti quando hai da aggiungere qualcosa alla tua ultima risposta a distanza di tempo così ravvicinata, in modo da evitare di fare doppi post, che sono contro regolamento :)
-
Ottime queste risorse!
Per quanto riguarda il salto della corda: c'è uno spostamento dei due bambini di 1 e poi 2 pixel verso destra nel momento in cui la bambina salta. Per il resto è perfetta :)
-
Bello!
Mi piacerebbe vedere l'animazione del chara nella sua versione finale :)
-
Grazie!
Di che tipo di risorse si tratta? Characters, tileset, windowskin...?
Puoi postare alcune immagini di esempio delle risorse?
Aiuterai così gli altri a capire se sono risorse che fanno al caso loro :)
-
Io avevo cominciato a mappare in parallaxe, poi per via del peso eccessivo delle immagini, della difficoltà di modificare le mappe in un secondo momento e soprattutto del lag in game (in parallaxe non è possibile fare mappe troppo grandi, da me una mappa 100x80 già laggava abbastanza, su altri pc più deboli non reggeva proprio) ho preferito optare per alcuni compromessi e mappare direttamente sull'editor.
Il parallaxe conviene piuttosto usarlo per alcune mappe/scene particolari piuttosto che farci ogni mappa di gioco :)
-
Nella versione mobile del forum basta che pigi il dito sul tuo messaggio che vuoi modificare per fare comparire il bottone di modifica ;)Ah ok, grazie...
cmq questo tastino sta solo sul pc e io spesso scrivo da tablet...
Cmq la prossima volta faro maggiore attenzione, promesso!

-
Vx ace in effetti ha una specie di antilag integrato, che disattiva automaticamente tutti gli eventi che stanno poco al di là della visuale del giocatore.
Ricordo che questo mi aveva causato non pochi fastidi e nell'ultimo gioco fatto con Ace (Crazy Rainbow Rabbits) chiesi ad Holy come poterlo disattivare.
Vatti a ricordare le righe che avevo modificato... xD
-
Ciao shadowheart, quando il topic del progetto incorpora già anche la release puoi anche pubblicare un unico topic in release per presentare il gioco, piuttosto che aprire due topic diversi che si collegano l'un con l'altro :)

Copiare porzioni di mappa
in Supporto MV
Posted
Sì, sull'editor tieni premuto il tasto destro e ora spostati nella mappa per tutta l'area che vuoi copiare.
L'area compresa nel rettangolo verrà copiata. Click sinistro dove preferisci per incollarla :)
Per domande veloci come queste si consiglia il topic: Sportello aiuti veloci MV