Rpg˛S Forum uses cookies. Read the Privacy Policy for more info. To remove this message, please click the button to the right:    I accept the use of cookies

Vai al contenuto

Rpg˛S Forum uses cookies. Read the Privacy Policy for more info. To remove this message, please click the button to the right:    I accept the use of cookies

Screen Contest #90

Kamikun






  • Si prega di effettuare il log in prima di rispondere
Come creare una coda di eventi?

    Satsume
  • Alex (Rm2k)

  • Utenti
  • Rens: 129
  • 2
  • StellettaStellettaStellettaStellettaStelletta
  • 1260 messaggi
  • Sesso:Maschio
  • Provenienza:Campania
  • Abilitā:Esperto

#1 Inviato 15 December 2023 - 15:13 PM

Ciao a tutti, è da un po che non mi connetto, non avendo molto da mostrare ma soprattutto perchè da firefox il forum veniva bloccato da malware bytes, mentre con brave stranamente non lo fa, quindi visto che ho bisogno di una mano ne approfitto.

 

Innanzitutto mi spiego meglio cosa VORREI fare e quello che ACCADE ora come ora.

 

Come titolo vorrei creare una coda di eventi, che possano essere dei testi, delle pictures o quant'altro..

perchè mi serve la coda? semplicemente alcuni eventi e variabili possono capitare nello stesso momento, e a quanto pare secondo Rpgmaker c'è solo una priorità, quindi praticamente;

Variabile = 50 = testo/picture

Variabile2 = 50 = testo/picture

se queste variabili arrivano allo stesso risultato, soltanto la prima verrà mostrata e la seconda sarà sovrapposta.

Quindi io vorrei che dopo il testo della prima variabile, uscisse anche quello della seconda, e via via dicendo.

Per risolvere questo problema avevo ideato una sorta di delay randomico in cui ogni volta che una variabile raggiunge il valore predisposto, veniva callato un evento che a seconda della casualità c'era un'attesa da 20 frames fino ad un massimo di 100/120 mi pare, però contanto 20 frames per volta (quindi 20,40,60,etc anche perchè meno 20 di frames non calcola la priorità).

In questo caso diciamo che ho risolto in maniera rozza la cosa, anche se essendo comunque una casualità limitata (1 su 6) poteva comunque capitare stesso evento e stessa casualità, però diciamo che per "tamponare" il problema poteva andare bene.

Ora mi sono reso conto che anche con le pictures che dovrebbero attivare animazioni succede (ovviamente) la stessa cosa, ma anzi, avendo lo stesso numero, va a crearsi un'animazione quasi buggata (visto che mixa gli eventi).

Allora approfittando di questa cosa diciamo che sono predisposto a voler creare una coda.. ma ora a mente fredda devo ancora pensare come fare, per questo intanto che penso, magari se qualcuno ha una soluzione mi farebbe davvero comodo, altrimenti ho pensato di limitare alcune casualità del gioco (quindi una perdita di contenuti) o di fare tipo un elencone di IF ma in ogni caso ci sarebbero comunque dei bruschi stop.

 

Ho preferito mettere qui il topic perchè alla fine sarebbe meglio un metodo tradizionale, ma se qualora ci fosse spazio per un plugin, sarebbe comunque accettabile.

 

Grazie per le risposte eventuali.



    Guardian of Irael
  • Coniglietto Rosso

  • Rpg˛S Admin
  • Rens: 195
  • 19
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 58424 messaggi
  • Sesso:Maschio
  • Provenienza:Bagnaia (Viterbo)
  • Abilitā:Apprendista


#2 Inviato 15 December 2023 - 18:30 PM

Un dubbio prima: quanti testo/immagini in conteporanea sono previsti? Lo dico anche da un punto di vista di design (ma anche da codice). Se ogni testo/immagine appare dietro l'altro ogni tot secondi e raccogli 100 oggetti rischi di avere minuti di messaggi continui. In quei casi si incolonnano i testo/immagini per mostrarne diversi a schermo.

Nel tuo caso, con la premessa di variabile1 e variabile2 non viene sempre e comunque un elenco di if? Se ci sono più variabili di base dovrai tenerne conto.

Se sfrutti un evento in processo parallelo non dovresti avere i "bruschi stop" in gioco se intendi che l'eroe si blocca.

Un codice di questo tipo dovrebbe funzionare:

se variabile1 è 50 mostra testo, aspetta tot secondi

se variabile2 è 50 mostra testo, aspetta tot secondi

se variabile3 è 50 mostra testo, aspetta tot secondi

Perché il tot secondi dovrebbe mettere in pausa i comandi successivi e l'evento in processo parallelo può ricominciare andando a prendere gli eventuali if saltati nel caso in cui prendi altri oggetti nel frattempo.

^ ^


(\_/)
(^ ^) <----coniglietto rosso, me!     
(> <)

 
Il mio Tumblr dove seguire i miei progetti, i progetti della Reverie : : Project ^ ^
 
KdUDtQt.png disponibile su Google Play, qui i dettagli! ^ ^
 
FwnGMI3.png completo! Giocabile online, qui i dettagli! ^ ^  
 
REVERIE : : RENDEZVOUS (In allenamento per apprendere le buone arti prima di cominciarlo per bene ^ ^) Trovate i dettagli qui insieme alla mia intervista (non utilizzerò più rpgmaker) ^ ^

Spoiler


    Satsume
  • Alex (Rm2k)

  • Utenti
  • Rens: 129
  • 2
  • StellettaStellettaStellettaStellettaStelletta
  • 1260 messaggi
  • Sesso:Maschio
  • Provenienza:Campania
  • Abilitā:Esperto

#3 Inviato 15 December 2023 - 19:53 PM

Non volevo fare spoiler ma per farmi capire devo mettere tutto su carta, sto facendo un tamagotchi ahah (minchia idea che non mi ha mai sfiorato la mente)

Lo sto facendo tutto a pictures, nè chara, nè tileset, nè altro. (nemmeno i testi base)

Quindi tenendo conto di ciò dov'è il problema;

Ho creato con soddisfazione una sorta di log system in alto allo schermo (passando da 1 a 3 righe, quindi 3 messaggi visibili alla volta)

ed ovviamente come dice il nome avvisa di alcune cose, se il cibo va a 0, avvisa, se il coso fa la cacca, avvisa, etc etc.

quindi se il cibo va a 0 e l'acqua va a 0, nonostante le 3 righe di spazio, lui mi mostra solo il testo (picture sempre) del cibo, come ho scritto sotto, ho messo un wait casuale leggero per smorzare la cosa, ma non posso esagerare, non posso piazzare wait da +160 frames, perchè sarebbe troppo in ritardo il messaggio, quindi gioco su sta cosa, ovviamente più avvisi ci sono e piu' la possibilità di beccare "la coincidenza" c'è, ma fino a qua va bene.

Però ora che sto iniziando a fare le animazioni è lo stesso discorso, se io faccio l'animazione del cibo, e nel frattempo caga, le 2 animazioni si mixano e si crea il bug, e ripeto, per la questione Wait system o MULTI-if system potrei anche cavarmela, ma chiedevo se magari non avessi pensato ad un metodo piu' elegante per creare appunto una coda di cose, che anche in caso di 5 eventi simultanei, quelli me li riproduce tranquillamente uno dopo l'altro.

 

Spero di esser stato chiaro



    Guardian of Irael
  • Coniglietto Rosso

  • Rpg˛S Admin
  • Rens: 195
  • 19
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 58424 messaggi
  • Sesso:Maschio
  • Provenienza:Bagnaia (Viterbo)
  • Abilitā:Apprendista


#4 Inviato 15 December 2023 - 20:26 PM

Avevo capito il sistema che c'era dietro, il problema è che così a occhio non credo tu possa saltare il...

 

MULTI-if system

cioè da qualche parte dovrai pur considerare variabileCibo, variabileCacca, variabileAcqua.

Per il log system puoi usare una switch per mettere le righe in occupate. Tipo se switch Riga1 è ON allora mostri il testo sulla riga 2 e se tutte sono occupate aspetti che una si liberi. Però un controllo sulle righe e su quale variabile ha tot valore o no devi comunque farlo.

Forse intendiamo due cose diverse con quello... tipo il tuo MULTI-if system come funzionerebbe? ^ ^


(\_/)
(^ ^) <----coniglietto rosso, me!     
(> <)

 
Il mio Tumblr dove seguire i miei progetti, i progetti della Reverie : : Project ^ ^
 
KdUDtQt.png disponibile su Google Play, qui i dettagli! ^ ^
 
FwnGMI3.png completo! Giocabile online, qui i dettagli! ^ ^  
 
REVERIE : : RENDEZVOUS (In allenamento per apprendere le buone arti prima di cominciarlo per bene ^ ^) Trovate i dettagli qui insieme alla mia intervista (non utilizzerò più rpgmaker) ^ ^

Spoiler


    Satsume
  • Alex (Rm2k)

  • Utenti
  • Rens: 129
  • 2
  • StellettaStellettaStellettaStellettaStelletta
  • 1260 messaggi
  • Sesso:Maschio
  • Provenienza:Campania
  • Abilitā:Esperto

#5 Inviato 15 December 2023 - 21:15 PM

Il problema non sono le righe Guardian, come ti ho scritto, il problema è la coincidenza di valori, se 2 o 3+ si attivano in contemporanea, rpgmaker attiva la prima e le altre 2 le nasconde.

il multi if system non ci ho ancora messo mano, ma potrebbe essere un evento comune da callare ad ogni animazione (che è piu' importante dei testi) in cui ci sarà un elenco di tutte le if che producono una animazione (o testo, magari 2 multi-if system uno per i testi e l'altro per le animazioni), con dei wait o delle disattivazioni a caso, però pensandolo comunque velocemente ci sarebbe un problema, te lo espongo con un problema:

Mettiamo che abbiamo 3 valori in contemporanea che vanno allo zero per casualità

Cibo Acqua e Sonno, mettiamo che ho creato questo multi if system con i vari wait

Ma visto che il multi if system tiene conto di TUTTI i valori, non escluderebbe nemmeno quello che lo scatena..

quindi multi if system = se cibo è zero, wait 20, se se acqua 0, wait 20  se sonno 0, wait 20

alla fine quei 20 wait non cambieranno niente perchè sono 3 wait 20 entrambi (a meno che il calling dell'evento non ragiona diversamente)

era meglio se tipo, lo callo dal cibo a 0, e i wait li avevano solo acqua e il sonno, che comunque al secondo giro, quindi al secondo messaggio sarebbe comunque uscito solo l'acqua senza il sonno.. visto i 2 wait 20, c'è sempre un problema diciamo..

O faccio multi-if PER ogni if, quindi tipo una 10 di multi-if (anche se essendo callati non peseranno niente, però in ogni caso è un metodo molto rozzo, peggio di quello che ho creato) 

Per le animazioni diciamo che basta suddividere le animazioni in switch (quelle casuali, quelle che starta il giocatore e boh), e attivarle e disattivarle nei casi (ma ci sarebbe lo stop brusco ugualmente, ma onestamente non posso comunque fare miracoli, come continuità di animazioni o altro, la coda sarebbe stata comoda almeno per evitare gli stop..)



    Guardian of Irael
  • Coniglietto Rosso

  • Rpg˛S Admin
  • Rens: 195
  • 19
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 58424 messaggi
  • Sesso:Maschio
  • Provenienza:Bagnaia (Viterbo)
  • Abilitā:Apprendista


#6 Inviato 15 December 2023 - 21:46 PM

 

ma potrebbe essere un evento comune da callare ad ogni animazione (che è piu' importante dei testi) in cui ci sarà un elenco di tutte le if che producono una animazione (o testo, magari 2 multi-if system uno per i testi e l'altro per le animazioni), con dei wait o delle disattivazioni a caso, però pensandolo comunque velocemente ci sarebbe un problema, te lo espongo con un problema:

Mettiamo che abbiamo 3 valori in contemporanea che vanno allo zero per casualità

Cibo Acqua e Sonno, mettiamo che ho creato questo multi if system con i vari wait

Ma visto che il multi if system tiene conto di TUTTI i valori, non escluderebbe nemmeno quello che lo scatena..

Tecnicamente no. Cioè l'evento che hai suggerito è simile a quell'esempio che ho fatto nel mio primo messaggio. Anche se tutti e tre i valori vanno a 0, comunque rpg maker rispettando gli aspetta non eseguirà gli altri. Considera che il codice funziona dall'altro verso il basso, quindi finché i comandi nel primo if non saranno eseguiti quelli nel secondo if non saranno considerati.

Se gli aspetta ti creano problemi puoi usare le etichette/label per creare un loop e bloccare il codice in quel punto finché non vuoi uscire, tipo...

switch blocco = ON

etichetta tungsteno

instruzioni varie

se l'animazione nelle istruzioni è andata a buon fine (non so come gestisci la cosa, dipende dalle istruzioni) allora switch blocco metti OFF

se switch blocco è ON vai all'etichetta tungsteno

 

e solo a questo punto il codice proseguirà. Comunque come detto dipende dalle istruzioni e da come crei l'animazione o la notifica, deve esserci qualcosa che ti dice con sicurezza che è finita e che ti mette il blocco OFF se non vuoi usare aspetta.

^ ^


(\_/)
(^ ^) <----coniglietto rosso, me!     
(> <)

 
Il mio Tumblr dove seguire i miei progetti, i progetti della Reverie : : Project ^ ^
 
KdUDtQt.png disponibile su Google Play, qui i dettagli! ^ ^
 
FwnGMI3.png completo! Giocabile online, qui i dettagli! ^ ^  
 
REVERIE : : RENDEZVOUS (In allenamento per apprendere le buone arti prima di cominciarlo per bene ^ ^) Trovate i dettagli qui insieme alla mia intervista (non utilizzerò più rpgmaker) ^ ^

Spoiler


    Satsume
  • Alex (Rm2k)

  • Utenti
  • Rens: 129
  • 2
  • StellettaStellettaStellettaStellettaStelletta
  • 1260 messaggi
  • Sesso:Maschio
  • Provenienza:Campania
  • Abilitā:Esperto

#7 Inviato 15 December 2023 - 22:20 PM

Guardian non si può fare come hai detto tu, perchè se capitano 5 eventi consecutivi i wait si allungano sempre di piu', inoltre la parte dell'On Off non si può fare, perchè sono testi che devono essere mostrati ogni volta, le variabili sono eventi paralleli, quindi vanno in parallelo, comunque piu' che pensare a come piazzare i wait o le if che son cose che piano posso anche inserire e testare, devo capire se posso creare un sistema di coda di eventi, quello mi risolverebbe il problema da subito



    Guardian of Irael
  • Coniglietto Rosso

  • Rpg˛S Admin
  • Rens: 195
  • 19
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 58424 messaggi
  • Sesso:Maschio
  • Provenienza:Bagnaia (Viterbo)
  • Abilitā:Apprendista


#8 Inviato 15 December 2023 - 22:57 PM

Cosa intendi per gli wait si allungano sempre di più? In quel codice se per esempio acqua e cibo vanno a 0 viene mostrata la notifica dell'acqua, c'è un attesa di tot secondi, viene eliminata la notifica dell'acqua, viene mostrata la notifica del cibo, si aspettano tot secondi uguali e viene eliminata la notifica del cibo. Non c'è un'attesa che si aggiunge, ogni notifica è spaziata dagli stessi tot secondi.

Ho provato con un mostra immagine...

◆If:#0001 = 1
  ◆Show Picture:#1, Actor1_1, Upper Left (0,0), (100%,100%), 255, Normal
  ◆Wait:240 frames
  ◆Erase Picture:#1
  ◆Control Variables:#0001 = 0
  ◆
:End
◆If:#0002 = 1
  ◆Show Picture:#1, Actor1_2, Upper Left (0,0), (100%,100%), 255, Normal
  ◆Wait:240 frames
  ◆Erase Picture:#1
  ◆Control Variables:#0002 = 0
  ◆
:End
◆If:#0003 = 1
  ◆Show Picture:#1, Actor1_3, Upper Left (0,0), (100%,100%), 255, Normal
  ◆Wait:240 frames
  ◆Erase Picture:#1
  ◆Control Variables:#0003 = 0
  ◆
:End

Tutto quello in un evento parallelo. Se metto tutte e tre le variabili a 1, le notifiche vengono mostrate una dopo l'altra senza problemi di sovrapposizione o ritardi, tutti alla stessa distanza di 4 secondi.

^ ^


(\_/)
(^ ^) <----coniglietto rosso, me!     
(> <)

 
Il mio Tumblr dove seguire i miei progetti, i progetti della Reverie : : Project ^ ^
 
KdUDtQt.png disponibile su Google Play, qui i dettagli! ^ ^
 
FwnGMI3.png completo! Giocabile online, qui i dettagli! ^ ^  
 
REVERIE : : RENDEZVOUS (In allenamento per apprendere le buone arti prima di cominciarlo per bene ^ ^) Trovate i dettagli qui insieme alla mia intervista (non utilizzerò più rpgmaker) ^ ^

Spoiler


    Dax
  • C'č pių gioia nel dare che nel ricevere

  • Rpg˛S Admin
  • Rens: 838
  • 7
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 4554 messaggi
  • Sesso:Maschio
  • Provenienza:Nord Sud Ovest Est
  • Abilitā:Maestro


#9 Inviato 17 December 2023 - 14:44 PM

Penso che se vuoi gestire la cosa a eventi sia molto molto difficile, invece tramite script/programmazione dovrebbe essere molto più gestibile la cosa.

Ora non ricordo se lo scripting di MZ permette l'uso di liste o array, ormai con js dovrebbe esserci assolutamente, ma quello che serve a te è precisamente questo: una lista di "eventi" da eseguire in ordine e da rimuovere una volta eseguiti. Alla peggio una lista di stringhe codificate che si collegano a eventi tramite switch o if.

La coda verrebbe gestita da una classe manager che esegue il codice di apparizione del messaggio per ogni elemento in coda.

Non ti devi curare invece delle tempistiche, se ci sono 20 messaggi in coda e al topo manca l'acqua, quello sarà un messaggio in coda visibile dopo... 20x 3 secondi (metti caso che 3 secondi sia il tempo di durata di un messaggio). 

 

Quello che potresti fare è non limitarti ai messaggi testuali ma, come per il tamagotchi originale, affidarti alle icone per dare un'istantanea del problema. L'utente non è quindi costretto a leggere il messaggio che ha sete per dare da bere. Il messaggio apparirà, ma ormai sarà già risolto.

 

Eventualmente puoi sempre ordinare la lista, dando precedenza a un tipo di messaggio, rimuovere elementi risolti ecc..


Membro Segreto della
Vecchia Guardia del Making [Gif in fase di reload]

SCContest1Oct.gif[icona di un premio]

tgSY1j0.pnggifnatale1.pnggifnatale12.png


    Satsume
  • Alex (Rm2k)

  • Utenti
  • Rens: 129
  • 2
  • StellettaStellettaStellettaStellettaStelletta
  • 1260 messaggi
  • Sesso:Maschio
  • Provenienza:Campania
  • Abilitā:Esperto

#10 Inviato 22 December 2023 - 10:33 AM

Penso che se vuoi gestire la cosa a eventi sia molto molto difficile, invece tramite script/programmazione dovrebbe essere molto più gestibile la cosa.

Ora non ricordo se lo scripting di MZ permette l'uso di liste o array, ormai con js dovrebbe esserci assolutamente, ma quello che serve a te è precisamente questo: una lista di "eventi" da eseguire in ordine e da rimuovere una volta eseguiti. Alla peggio una lista di stringhe codificate che si collegano a eventi tramite switch o if.

La coda verrebbe gestita da una classe manager che esegue il codice di apparizione del messaggio per ogni elemento in coda.

Non ti devi curare invece delle tempistiche, se ci sono 20 messaggi in coda e al topo manca l'acqua, quello sarà un messaggio in coda visibile dopo... 20x 3 secondi (metti caso che 3 secondi sia il tempo di durata di un messaggio). 

 

Quello che potresti fare è non limitarti ai messaggi testuali ma, come per il tamagotchi originale, affidarti alle icone per dare un'istantanea del problema. L'utente non è quindi costretto a leggere il messaggio che ha sete per dare da bere. Il messaggio apparirà, ma ormai sarà già risolto.

 

Eventualmente puoi sempre ordinare la lista, dando precedenza a un tipo di messaggio, rimuovere elementi risolti ecc..

 

Eh capacità 0 di scriptare quindi direi che non si può fare minimamente, comunque diciamo che ho risolto grossomodo facendo ad eventi, nel caso peggiore, un testo viene mangiato dai precedenti, ma spero che non accada proprio.

In ogni caso il log system è solo un mio capriccio, ogni cosa sarà sempre visibile, quindi in realtà nemmeno servirà leggere i messaggi, solo che la trovavo una meccanica carina e mi sono tolto lo sfizio di implementarla, poi con guardian, l'ho migliorata e quindi per ora va bene così XD

Poi bisogna vedere a gioco configurato quanti messaggi escono fuori, e quindi quante possibilità di "coincidenze" e in base al risultato vedremo che fare.. se togliere alcuni avvisi e metterne altri più controllati o boh.

 

Grazie della risposta ugualmente


Modificato da Satsume, 22 December 2023 - 10:34 AM.





  • Feed RSS