Pagina 6 di 6

Re: Rallentamenti: metodi, idee, soluzioni per snellire GM

Inviato: 08/06/2014, 17:40
da Riky0302
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.

Re: Rallentamenti: metodi, idee, soluzioni per snellire GM

Inviato: 08/06/2014, 17:49
da Vallo92
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.
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. :sisisi:

Re: Rallentamenti: metodi, idee, soluzioni per snellire GM

Inviato: 08/06/2014, 18:04
da mac12
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 :fapensare:

Re: Rallentamenti: metodi, idee, soluzioni per snellire GM

Inviato: 08/06/2014, 20:11
da Riky0302
si è stata una mi svista, nella fretta di testare i livelli non mi sono accorto che le due stanze avevano velocità diverse :spat: :spat:
grazie ragazzi gentili come sempre :cappa:

Re: Rallentamenti: metodi, idee, soluzioni per snellire GM

Inviato: 10/01/2016, 13:09
da Arcade Blues
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.

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);
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.

Re: Rallentamenti: metodi, idee, soluzioni per snellire GM

Inviato: 25/04/2017, 14:13
da Willshir3
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.