Rallentamenti: metodi, idee, soluzioni per snellire GM
- PeppeAs95
- GMI Advanced
- Messaggi: 2231
- Iscritto il: 24/06/2008, 16:10
- Specialità: Modellazione[LD-HD]
- Località: Sonosce (MO)
- Contatta:
Re: Rallentamenti: metodi, idee, soluzioni per snellire GM
Perchè non aggiungere object dopo che il gioco è avviato e metterci un loading come tutti i giochi normali?
Cioè, prima di entrare in una room ci metto "loading" un if_object(o altro) exists(ecc...) e avviare la room ma eliminare gli objects/sprites non usati. Così il gioco rimane con pochi mega, e và perciò più fluido... semplice no?
Cioè, prima di entrare in una room ci metto "loading" un if_object(o altro) exists(ecc...) e avviare la room ma eliminare gli objects/sprites non usati. Così il gioco rimane con pochi mega, e và perciò più fluido... semplice no?
Mario: Livello 51
Luigi: livello 51
Bowser: livello 40
Spoiler
Re: Rallentamenti: metodi, idee, soluzioni per snellire GM
puoi ricorrere a un trucchetto da manuale: prima fai la room e con un codice speciale salvi tutte le coordinate di creazione in un file esterno all'exe. poi prendi le coordinate e le inserisci come codice... e poi... 1500x1500 non è moltissimo...
- maz85
- Admin
- Messaggi: 8287
- Iscritto il: 07/02/2004, 15:57
- Specialità: Nientologo
- Località: Oblio
- Contatta:
Re: Rallentamenti: metodi, idee, soluzioni per snellire GM
Meno male che il topic raccoglie suggerimenti per l'ottimizzazione...
Se in una stanza ci sono x oggetti perchè dovrei distruggerli quando li ho messi nella creazione della stanza?
Piuttosto sarebbe più corretto creare x oggetti in base alla stanza evitando di creare quelli che non servono al livello.
Se poi Peppinoas intendeva durante una stanza eliminare gli sprite che non venivano usati beh, se si ha scelto di non averli in memoria (preload) questi sprite saranno un problema perchè devono ancora essere richiamati e caricati.
Se in una stanza ci sono x oggetti perchè dovrei distruggerli quando li ho messi nella creazione della stanza?
Piuttosto sarebbe più corretto creare x oggetti in base alla stanza evitando di creare quelli che non servono al livello.
Se poi Peppinoas intendeva durante una stanza eliminare gli sprite che non venivano usati beh, se si ha scelto di non averli in memoria (preload) questi sprite saranno un problema perchè devono ancora essere richiamati e caricati.
Votate GmItalia nella classifica!
Ultime dal fronte.... notizie e altro sul sito di GmItalia
°Pagina personale: % di sviluppo giochi e altro°
Ultime dal fronte.... notizie e altro sul sito di GmItalia
°Pagina personale: % di sviluppo giochi e altro°
- Mrk
- GMI Advanced
- Messaggi: 1887
- Iscritto il: 22/08/2009, 15:35
- Specialità: Gameplay - Concept
- Uso: GM:Studio 1.4 Standard
- Contatta:
Re: Rallentamenti: metodi, idee, soluzioni per snellire GM
Scusate per la rianimazione del topic... però mi viene una domanda.
Sul manuale Mark Overmars dice di non abusarne, perchè l'evento Step rallenta notevolmente il gioco, perchè il gioco controlla ed esegue ogni step le azioni.
Come mai vedo che usate questo evento molto spesso? Se le azioni vengono messe dentro un if, il gioco subisce ugualmente un rallentamento?
Sul manuale Mark Overmars dice di non abusarne, perchè l'evento Step rallenta notevolmente il gioco, perchè il gioco controlla ed esegue ogni step le azioni.
Come mai vedo che usate questo evento molto spesso? Se le azioni vengono messe dentro un if, il gioco subisce ugualmente un rallentamento?
Il mio sito Mrk Play --- Profilo GameJolt
Admin Pagine GMI su Facebook (gmitalia) e Twitter (@GameMakerIta)
- guidox
- GMI Honor
- Messaggi: 5765
- Iscritto il: 26/07/2009, 17:23
- Specialità: programmazione
- Uso: GM:Studio 1.4 Android
- Località: Marche
- Contatta:
Re: Rallentamenti: metodi, idee, soluzioni per snellire GM
Si è vero gli eventi step rallentano molto il gioco ogni secondo(dipende però da come setti) il gioco fa un continuo controllo!
Ma non credo ci sia un modo per fare diversamente!
Ma non credo ci sia un modo per fare diversamente!
- BaronVsCorsar
- GMI VIP
- Messaggi: 4699
- Iscritto il: 14/02/2004, 12:05
- Specialità: Saccenza
- Uso: GameMaker 8.1
- Località: Ferrara
- Contatta:
Re: Rallentamenti: metodi, idee, soluzioni per snellire GM
l'evento step rallenta in quanto è eseguito incondizionatamente ad ogni step.Mrk ha scritto:Scusate per la rianimazione del topic... però mi viene una domanda.
Sul manuale Mark Overmars (inchino) dice di non abusarne, perchè l'evento Step rallenta notevolmente il gioco, perchè il gioco controlla ed esegue ogni step le azioni.
Come mai vedo che usate questo evento molto spesso? Se le azioni vengono messe dentro un if, il gioco subisce ugualmente un rallentamento?
Quindi il codice che è al suo interno viene eseguito sempre.
In un evento collisione il codice viene eseguito SOLO se hai collisione, quindi nella peggiore delle ipotesi crea rallentamenti occasionali.
Prendiamo per esempio una stanza con 1000 istanza di un oggetto, con del codice in step. Questo codice sarà eseguito ad ogni step.
Se togliamo l'evento queste 1000 istanze non rallenteranno assolutamente, e se hanno anche un evento collision solo occasionalmente questo verrà eseguito, e verosimilmente non per tutte e 1000 le istanze in una sola volta.
Magari ad ogni step ci saranno 10 collisioni... un bel risparmio!
Perchè noi usiamo spesso lo step? perchè a volte è indispensabile: il gioco prevede di fare qualche cosa anche se non ho collisioni, tasti premuti e così via. Bisogna sforzarsi di scrivere buon codice in modo che rallenti il meno possibile!
Più il gioco si fa complesso, e più diventa difficile gestirlo senza nessun evento step
Ricorda che uno step pesante in un oggetto "nemico" presente con centinaia di istanze influenza 100 volte di più dello step dell'oggetto controllore presente in singola istanza!
solo per eseguire il controllo dell'if, ma non eseguendo il codice al suo interno il rallentamento è decisamente minore! Se si usa lo step va programmato con intelligenza. La struttura switch e if sono ottime per spezzetare (con pochi controlli) un codice lunghissimo che però riusulta eseguito non più di 10-20 comandi a step: ecco che minimizzo il rallentamento.Se le azioni vengono messe dentro un if, il gioco subisce ugualmente un rallentamento?
Schiva questo - http:\\baronvscorsar.altervista.org
by Lego: Vado in un bar e faccio "votiamo che quel tizio la in fondo venga buttato fuori", ma perché?
by Lego: Vado in un bar e faccio "votiamo che quel tizio la in fondo venga buttato fuori", ma perché?
- fra3point
- Membro attivo
- Messaggi: 388
- Iscritto il: 24/08/2010, 15:16
- Specialità: Prog. e 3D Modelling
- Località: L'Aquila
- Contatta:
Re: Rallentamenti: metodi, idee, soluzioni per snellire GM
aspettate.. io un problema simile l'ho avuto.. cioè avevo messo per sbaglio in step un'azione abbastanza pesante (mi pare un create instance) che piano piano sovraccaricava la memoria e rallentava progressivamente il gioco.. e questo veniva ripetuto all'infinito.. ecco a volte questi rallentamenti potrebbero essere anche causa di errori come questo.. (oltre che ai caricamenti in sè per sè)..
draw_text(100,100,"fra3point");
Progetti in corso:
Progetti in corso:
Spoiler
-
- Admin
- Messaggi: 12355
- Iscritto il: 19/08/2009, 16:20
- Specialità: Programmazione 3D
- Uso: GM:Studio 2
- Contatta:
Re: Rallentamenti: metodi, idee, soluzioni per snellire GM
1) questo topic è da un'anno che è mortofra3point ha scritto:aspettate.. io un problema simile l'ho avuto.. cioè avevo messo per sbaglio in step un'azione abbastanza pesante (mi pare un create instance) che piano piano sovraccaricava la memoria e rallentava progressivamente il gioco.. e questo veniva ripetuto all'infinito.. ecco a volte questi rallentamenti potrebbero essere anche causa di errori come questo.. (oltre che ai caricamenti in sè per sè)..
2) ma è ovvio che se creiamo delle istanze(che contengono variabili) si consuma la memoria, non ci vuole un genio. E comunque se uno deve creare queste istanze non cé nulla da fare. Qua si discute di metodi per migliorare l'ottimizzazione quindi quali cose è meglio fare piuttosto che altre non quali cose appesantiscono perché se uno deve bé...deve, non importa quante risorse usa.
Comunque sei stato troppo generico e non si capisce bene a cosa era dovuto il rallentamento quindi uno non se ne fa niente.
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you
- maz85
- Admin
- Messaggi: 8287
- Iscritto il: 07/02/2004, 15:57
- Specialità: Nientologo
- Località: Oblio
- Contatta:
Re: Rallentamenti: metodi, idee, soluzioni per snellire GM
Il topic può benissimo essere aggiornato tant'è che è pinnato.
Votate GmItalia nella classifica!
Ultime dal fronte.... notizie e altro sul sito di GmItalia
°Pagina personale: % di sviluppo giochi e altro°
Ultime dal fronte.... notizie e altro sul sito di GmItalia
°Pagina personale: % di sviluppo giochi e altro°
-
- Admin
- Messaggi: 12355
- Iscritto il: 19/08/2009, 16:20
- Specialità: Programmazione 3D
- Uso: GM:Studio 2
- Contatta:
Re: Rallentamenti: metodi, idee, soluzioni per snellire GM
Sì lo so maz, ma non si capisce bene cos'è che fa rallentare e come risolverlo.maz85 ha scritto:Il topic può benissimo essere aggiornato tant'è che è pinnato.
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you
- cp94
- Moderatore
- Messaggi: 2789
- Iscritto il: 04/07/2009, 19:18
- Specialità: ddd
- Località: Brescia
- Contatta:
Re: Rallentamenti: metodi, idee, soluzioni per snellire GM
ovvio che se metti un instance_create in uno step si rallenta, in un secondo infatti vengono create 30 istanze sovrapposte
- Ghost
- Membro super
- Messaggi: 540
- Iscritto il: 08/06/2010, 3:48
- Specialità: Programmazione
- Località: 63 69 76 69 74 61 76 65 63 63 68 69 61
- Contatta:
Re: rallentamenti
STEP EVENT:Filo ha scritto:game_process_priority(6) aumenta la priorità del gioco, così il computer impiega più memoria per quel programma, però se si blocca sono veramente cavolimasterchief ha scritto:ho messo un pò di objects ( non tantissimi ) e l'andatura del gioco si è rallentata notevolmente sapete darmi qualche consiglio?
if fps<5
game_end();
- maz85
- Admin
- Messaggi: 8287
- Iscritto il: 07/02/2004, 15:57
- Specialità: Nientologo
- Località: Oblio
- Contatta:
Re: Rallentamenti: metodi, idee, soluzioni per snellire GM
Occhio, per un breve step è possibile che il pc vada sotto tot fps, ma dopo quello step vada a scheggia (magari per un caricamento o altro) quindi potrebbe uscire senza essere necessario.
Comunque resta una buona soluzione.
Comunque resta una buona soluzione.
Votate GmItalia nella classifica!
Ultime dal fronte.... notizie e altro sul sito di GmItalia
°Pagina personale: % di sviluppo giochi e altro°
Ultime dal fronte.... notizie e altro sul sito di GmItalia
°Pagina personale: % di sviluppo giochi e altro°
- cp94
- Moderatore
- Messaggi: 2789
- Iscritto il: 04/07/2009, 19:18
- Specialità: ddd
- Località: Brescia
- Contatta:
Re: Rallentamenti: metodi, idee, soluzioni per snellire GM
si, di solito dopo un cambio room gli fps scendono a 9-12 (con un fade out in), non so se è la transizione o il cambio di per se...
- Ghost
- Membro super
- Messaggi: 540
- Iscritto il: 08/06/2010, 3:48
- Specialità: Programmazione
- Località: 63 69 76 69 74 61 76 65 63 63 68 69 61
- Contatta:
Re: Rallentamenti: metodi, idee, soluzioni per snellire GM
CREATE:maz85 ha scritto:Occhio, per un breve step è possibile che il pc vada sotto tot fps, ma dopo quello step vada a scheggia (magari per un caricamento o altro) quindi potrebbe uscire senza essere necessario.
Comunque resta una buona soluzione.
fpscounter=0;
STEP:
if fps<5{
fpscounter+=1;}
if fpscounter>10{
game_end();
}
- cp94
- Moderatore
- Messaggi: 2789
- Iscritto il: 04/07/2009, 19:18
- Specialità: ddd
- Località: Brescia
- Contatta:
Re: Rallentamenti: metodi, idee, soluzioni per snellire GM
si, però ci devi aggiungere
if fps>25 if fpscounter>0 fpscounter-=1
edit: corretto, avevo messo al contrario
if fps>25 if fpscounter>0 fpscounter-=1
edit: corretto, avevo messo al contrario
Ultima modifica di cp94 il 03/09/2010, 12:31, modificato 1 volta in totale.
- maz85
- Admin
- Messaggi: 8287
- Iscritto il: 07/02/2004, 15:57
- Specialità: Nientologo
- Località: Oblio
- Contatta:
Re: Rallentamenti: metodi, idee, soluzioni per snellire GM
Nel senso che devi resettare il counter se il gioco si riprende quindi al massimo un -=1.
Votate GmItalia nella classifica!
Ultime dal fronte.... notizie e altro sul sito di GmItalia
°Pagina personale: % di sviluppo giochi e altro°
Ultime dal fronte.... notizie e altro sul sito di GmItalia
°Pagina personale: % di sviluppo giochi e altro°
- Ghost
- Membro super
- Messaggi: 540
- Iscritto il: 08/06/2010, 3:48
- Specialità: Programmazione
- Località: 63 69 76 69 74 61 76 65 63 63 68 69 61
- Contatta:
Re: Rallentamenti: metodi, idee, soluzioni per snellire GM
vero, non ci avevo pensato xD
Re: Rallentamenti: metodi, idee, soluzioni per snellire GM
ciao, mi permetto di dire la mia:
precaricare suoni e sprites aumenta la lentezza nel caricamento, ma una volta che il gioco è caricato dovrebbe girare a velocità normale.
ciò che rallenta, oltre a tutto quello che è stato detto sopra, è la cattiva programmazione.
man mano che il vostro gioco diventa più complesso, inevitabilmente vi troverete a gestire interazioni tra oggetti sempre + incasinate.
dato che siamo esseri umani e non macchine, commettiamo errori.
per esempio, nel costruire una espressione con IF con 2 condizionali ( if keyboard_check(vk_space) AND noammo=true, and esempio, e poi apriamo un altro IF sotto) , tendiamo a considerare solo le situazioni in cui il condizionale è vero e non il contrario.
è un cosiddetto cognitive bias, un errore sistematico. per saperne di più, Philip Johnson-Laird, per conoscere i principi di logica formale e come noi li sbagliamo spesso.
Quindi, pianificare il più possibile gli eventi STEP e le collisioni, come base di tutto.
ad esempio, invece di attribuire una collisione all'oggetto obj_player, posso attribuire la stessa collisione all'oggetto enemy, utilizzando la funzione OTHER. in questo modo GM si occuperà della collisione solo quando l'oggetto esiste.
insomma, secondo me programmare secondo logica evita di fare errori che creano loop, rallentano il gioco o creano istanze inutili.
inoltre consiglio - per le istanze che sono usate solo una volta - di caricare sprite e sonoro tramite le funzioni sprite_add and sound_add, di modo che quando l'istanza non serve +, si possono eliminare con sound_delete e sprite_delete. buttare via il superfluo!
liberare memoria il + possibile, anche utilizzando dll apposite, come cleanmem.dll, che si trova nel forum di yoyogames.
precaricare suoni e sprites aumenta la lentezza nel caricamento, ma una volta che il gioco è caricato dovrebbe girare a velocità normale.
ciò che rallenta, oltre a tutto quello che è stato detto sopra, è la cattiva programmazione.
man mano che il vostro gioco diventa più complesso, inevitabilmente vi troverete a gestire interazioni tra oggetti sempre + incasinate.
dato che siamo esseri umani e non macchine, commettiamo errori.
per esempio, nel costruire una espressione con IF con 2 condizionali ( if keyboard_check(vk_space) AND noammo=true, and esempio, e poi apriamo un altro IF sotto) , tendiamo a considerare solo le situazioni in cui il condizionale è vero e non il contrario.
è un cosiddetto cognitive bias, un errore sistematico. per saperne di più, Philip Johnson-Laird, per conoscere i principi di logica formale e come noi li sbagliamo spesso.
Quindi, pianificare il più possibile gli eventi STEP e le collisioni, come base di tutto.
ad esempio, invece di attribuire una collisione all'oggetto obj_player, posso attribuire la stessa collisione all'oggetto enemy, utilizzando la funzione OTHER. in questo modo GM si occuperà della collisione solo quando l'oggetto esiste.
insomma, secondo me programmare secondo logica evita di fare errori che creano loop, rallentano il gioco o creano istanze inutili.
inoltre consiglio - per le istanze che sono usate solo una volta - di caricare sprite e sonoro tramite le funzioni sprite_add and sound_add, di modo che quando l'istanza non serve +, si possono eliminare con sound_delete e sprite_delete. buttare via il superfluo!
liberare memoria il + possibile, anche utilizzando dll apposite, come cleanmem.dll, che si trova nel forum di yoyogames.
Re: Rallentamenti: metodi, idee, soluzioni per snellire GM
ma set_program_priority è obsoleta :-| come faccio quindi?
Chi c’è in linea
Visitano il forum: Google [Bot] e 41 ospiti