Buonasera ragazzi, oggi ho terminato i primi due livelli di un piccolo gioco che sto realizzando, solo che ho un problema, nel primo livello fila tutto liscio, ma quando vado a collidere con un personaggio che mi manda nella seconda room, che sarebbe il secondo livello, nella seconda room rallenta terribilmente, ora la mia domanda è, se ci sono problemi di rallentamento perché non ci sono fin dall'inizio del gioco? ma solo quando entro nel secondo livello?
- Animazioni per ora non ce ne sono, i personaggi sono dei semplici quadrati.
- Gli object che ci sono sono i muri e le varie piattaforme.
- Il Background è un png disegnato da me diverso per ogni livello di dimensioni 1280x720.
Rallentamenti: metodi, idee, soluzioni per snellire GM
- Vallo92
- GMI Advanced
- Messaggi: 1508
- Iscritto il: 15/07/2011, 20:26
- Specialità: Grafico
- Uso: GM:Studio 2
- Contatta:
Re: Rallentamenti: metodi, idee, soluzioni per snellire GM
Molto strano... Per caso hai aumentato la room speed della prima room? Se si, probabilmente l'effetto di rallentamento è dato dalla diversità dei due valori che hai impostato.Riky0302 ha scritto:Buonasera ragazzi, oggi ho terminato i primi due livelli di un piccolo gioco che sto realizzando, solo che ho un problema, nel primo livello fila tutto liscio, ma quando vado a collidere con un personaggio che mi manda nella seconda room, che sarebbe il secondo livello, nella seconda room rallenta terribilmente, ora la mia domanda è, se ci sono problemi di rallentamento perché non ci sono fin dall'inizio del gioco? ma solo quando entro nel secondo livello?
- Animazioni per ora non ce ne sono, i personaggi sono dei semplici quadrati.
- Gli object che ci sono sono i muri e le varie piattaforme.
- Il Background è un png disegnato da me diverso per ogni livello di dimensioni 1280x720.
-Questi occhiali da sole le stanno benissimo. Vuole provarli con le lenti più scure?
- Si vede che le sto guardando le tette?
- Si
- Allora si
- mac12
- Membro d'elite
- Messaggi: 1124
- Iscritto il: 18/09/2012, 17:32
- Specialità: programmazione
- Uso: GameMaker 8.1
- Contatta:
Re: Rallentamenti: metodi, idee, soluzioni per snellire GM
se le room speed non coincidono, prova ad iniziare subito dal secondo livello:
Se lagga, allora è "colpa" del livello in se(ma da quello che dici non dovrebbero esserci rallentamenti, dev'essere qualche pezzetto di codice che viene eseguito solo nella seconda room che rallenta il tutto).
Se non lagga allora la cosa è molto strana
Se lagga, allora è "colpa" del livello in se(ma da quello che dici non dovrebbero esserci rallentamenti, dev'essere qualche pezzetto di codice che viene eseguito solo nella seconda room che rallenta il tutto).
Se non lagga allora la cosa è molto strana
Spoiler
- Riky0302
- Membro
- Messaggi: 69
- Iscritto il: 31/05/2014, 13:37
- Specialità: Grafico
- Uso: GM:Studio 1.4 Pro
- Contatta:
Re: Rallentamenti: metodi, idee, soluzioni per snellire GM
si è stata una mi svista, nella fretta di testare i livelli non mi sono accorto che le due stanze avevano velocità diverse
grazie ragazzi gentili come sempre
grazie ragazzi gentili come sempre
-
- Newbie
- Messaggi: 47
- Iscritto il: 09/01/2016, 12:05
- Specialità: Sogno a occhi aperti
- Uso: GM:Studio 1.4 Master
- Località: Napoli
- Contatta:
Re: Rallentamenti: metodi, idee, soluzioni per snellire GM
Uno dei metodi che mi sembra non sia stato aggiunto sino ad ora è quello del frame skip.
E' molto pratico e veloce da implementare e viene in aiuto soprattutto se il rendering del frame ciuccia molta cpu.
Non aiuta quasi per nulla se il tempo cpu è speso altrove es. nell' ia , fisica etc.
Potrebbe comunque essere riadattato per altri sistemi e sottosistemi di gioco es potreste aggiornare l'ia o un particolare aspetto di un object solo nelle instanze pari in un frame e nelle instanze dispari in un altro frame in modo molto simile o anche dividerle su piu' frame tramite if(((instanza.id) % numgruppi) == GruppoAttivo) Esegui Calcolo su instanza altrimenti skippa.
Per utilizzare il frame skip si setta la room speed a 60 e si sceglie in base alla potenza del device di renderizzare un frame ogni 2 frame o ogni 3 ottenendo 60 , 30 o 20 fps.
Differenza puramente visuale a parte, il gioco girerà identico su tutti i device con aggiornamento a 60 fps per input,fisica e quant'altro.
Applicato alla grafica non intacca il determinismo del gioco in nessun modo; Invece, se applicato su altri sistemi di gioco, il metodo è deterministico solo per valori fissi;
girerà, quindi, in maniera differente su 2 pc con valori di skipping differenti o variabili, perdendo di determinismo.
Questa è un implementazione veloce visto che non ho il mio codice alla mano comunque dovrebbe funzionare, o almeno, farvi capire il concetto.
FrameCounter ad un certo punto andrà in overflow e wrapperà, non dovrebbe essere un problema, ma per i più pipi si puo' anche evitarlo accumulando in FrameCounter.
nel codice di esempio avremo 30fps con room settata a 60.Per avere gli originali 60 settare FrameToSkip a 0.
E' molto pratico e veloce da implementare e viene in aiuto soprattutto se il rendering del frame ciuccia molta cpu.
Non aiuta quasi per nulla se il tempo cpu è speso altrove es. nell' ia , fisica etc.
Potrebbe comunque essere riadattato per altri sistemi e sottosistemi di gioco es potreste aggiornare l'ia o un particolare aspetto di un object solo nelle instanze pari in un frame e nelle instanze dispari in un altro frame in modo molto simile o anche dividerle su piu' frame tramite if(((instanza.id) % numgruppi) == GruppoAttivo) Esegui Calcolo su instanza altrimenti skippa.
Per utilizzare il frame skip si setta la room speed a 60 e si sceglie in base alla potenza del device di renderizzare un frame ogni 2 frame o ogni 3 ottenendo 60 , 30 o 20 fps.
Differenza puramente visuale a parte, il gioco girerà identico su tutti i device con aggiornamento a 60 fps per input,fisica e quant'altro.
Applicato alla grafica non intacca il determinismo del gioco in nessun modo; Invece, se applicato su altri sistemi di gioco, il metodo è deterministico solo per valori fissi;
girerà, quindi, in maniera differente su 2 pc con valori di skipping differenti o variabili, perdendo di determinismo.
Codice: Seleziona tutto
#define timing_FrameSkip_Create
//nell' evento create di un vostro controller.
FrameCounter = 0;
FrameToSkip = 2;
#define timing_FrameSkip_Step
//nell' evento step
if(FrameToSkip == 0)exit;
FrameCounter++;//Se usate il FrameCounter altrove dovreste incrementare il valore prima del controllo del frameskipping a 0
if(FrameCounter % FrameToSkip )
draw_enable_drawevent(false);
else
draw_enable_drawevent(true);
FrameCounter ad un certo punto andrà in overflow e wrapperà, non dovrebbe essere un problema, ma per i più pipi si puo' anche evitarlo accumulando in FrameCounter.
nel codice di esempio avremo 30fps con room settata a 60.Per avere gli originali 60 settare FrameToSkip a 0.
Re: Rallentamenti: metodi, idee, soluzioni per snellire GM
Domanda nabbissima: come faccio a compilare GML in ordine, con gli spazi giusti? Ricordo che c'era un modo per far si che il tool stesso mi staccasse le varie righe di codice una volta premuto spazio.
Chi c’è in linea
Visitano il forum: Nessuno e 71 ospiti