out of memory come evitarlo?

Hai una curiosità o un problema con Game Maker? Domanda e ti sarà risposto!
Rispondi
Avatar utente
sfigatto
Membro
Messaggi: 227
Iscritto il: 18/04/2014, 23:20
Uso: GM:Studio 1.4 Pro
Contatta:

out of memory come evitarlo?

Messaggio da sfigatto »

salve ragazzi,
come da titolo il gioco mi va in Out of memory ,questo avviene nonostante (nella maggior parte del tempo) siano presenti pochi oggetti e pochi sprite non troppo grandi presenti nel gioco.

Questo post potrebbe essere un proseguo di un altro post in cui ero disperato perché non riuscivo a memorizzare degli included files nella giusta maniera.

http://gmitalia.altervista.org/forum/vi ... =5&t=13899
Questo problema l'ho risolto.


Il gioco è un semplicissimo puzzle game, dove una foto selezionata viene scomposta in 16 pezzi ed il giocatore la deve ricomporre spostando i vari tasselli.

Ora ho 100 foto in file jpg. che mediamente pesano dai 90/100 KB ciascuna.
Ad ogni foto è assegnato un oggetto, le foto appaiano in una unica schermata. Una volta selezionata la foto con cui si vuole giocare tutte le altre foto vengono distrutte e si può giocare con la foto scelta.
Una volta risolta la foto riappaiono tutte le foto e si può scegliere un'altra foto con cui giocare, e le altre foto ovviamente vengono nuovamente ricancellate tutte quante.
Si riesce a giocare senza problemi con 3 o 4 foto consecutivamente , ma poi il gioco va in out of memory, mentre sto giocando con una foto.
In teoria non dovrebbe andare in out of memory quando sono presenti tutte le foto? ossia nel momento in cui sono presenti più risorse che appesantiscono il gioco?

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: out of memory come evitarlo?

Messaggio da Jak »

Quanto sono grandi le foto come risoluzione? Le dimensioni su disco sono ben diverse da quelle in memoria. Probabilmente stai usando immagini troppo grandi che consumano tutta la memoria o vanno oltre quello che può reggere la scheda video come risoluzione mandando in pappa GM.
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

Avatar utente
sfigatto
Membro
Messaggi: 227
Iscritto il: 18/04/2014, 23:20
Uso: GM:Studio 1.4 Pro
Contatta:

Re: out of memory come evitarlo?

Messaggio da sfigatto »

La risoluzione delle foto è 640X416

quando sono tutte sullo schermo per selezionare la foto hanno un
image_xscale= 0.162
image_yscale= 0.165
che le rimpicciolisce,poi ovviamente quando si clicca sulla foto per giocarci ritornano alla dimensione normale 640X416

Quindi l'unica soluzione è abbassare la risoluzione delle foto o mettere meno foto

Avatar utente
cp94
Moderatore
Messaggi: 2789
Iscritto il: 04/07/2009, 19:18
Specialità: ddd
Località: Brescia
Contatta:

Re: out of memory come evitarlo?

Messaggio da cp94 »

Se hai 100 immagini dubito che saranno tuttte assieme su schermo, dovresti disattivare le istanze fuori view.
Inoltre image_scale non penso riduca il peso dell' immagine, dovresti creare 100 immagini thumbnail di dimensione minore, oppure avere tutto come risorse esterne ed usare sprite_add, sprite_remove.
Games you should check out
Naemo
E T U S
Overgravity
Inside the Code

Immagine

Avatar utente
boxbuilder
Membro
Messaggi: 158
Iscritto il: 25/06/2015, 10:37
Specialità: programmatore
Uso: GM:Studio 1.4 HTML5
Contatta:

Re: out of memory come evitarlo?

Messaggio da boxbuilder »

sfigatto ha scritto:Il gioco è un semplicissimo puzzle game, dove una foto selezionata viene scomposta in 16 pezzi
A sensazione mi sa che il problema stia nella scomposizione dell'immagine. Che algoritmo usi?

Avatar utente
sfigatto
Membro
Messaggi: 227
Iscritto il: 18/04/2014, 23:20
Uso: GM:Studio 1.4 Pro
Contatta:

Re: out of memory come evitarlo?

Messaggio da sfigatto »


A sensazione mi sa che il problema stia nella scomposizione dell'immagine. Che algoritmo usi?
Ci avevo pensato anche io, ma con il debuger l'incremento di memoria diventa spaventoso (passa da 98313,K a 318828,4 K) quando creo la lista delle foto
Quando clicco sulla foto e viene scomposta non c'è alcun incremento della memoria utilizzata.

Ho realizzato un piccolo file dove ho inserito solo il metodo in cui scompongo le foto perché è piuttosto lungo, ma non riesco ad allegarlo, mi dice che l'estensione non è valida.

intanto provo con il consiglio di cp94

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: out of memory come evitarlo?

Messaggio da Jak »

La grandezza con cui visualizzi le immagini è indipendente dalla quantità di memoria che utilizzano, che resta fissa. Ogni immagine peserà 640*416*4 byte = circa un mega ciascuna. 100 immagini fanno 100 mega tralasciando eventuali controlli/doppioni che GM potrebbe farsi per cassi suoi.
sfigatto ha scritto:ma con il debuger l'incremento di memoria diventa spaventoso (passa da 98313,K a 318828,4 K) quando creo la lista delle foto
200 mega di incremento non mi sembrano così spaventosi ed irrealistici anzi.
100/200 mega sono comunque pochi ma a questo punto mi domando, su che dispositivo ti da il problema?
Se sei su PC, oltre a continuare ad essere difficile che sia tutto qua il problema, apri il task manager e prova a guardare quanto e come incrementa la memoria man mano che carichi foto un pò alla volta.
Così almeno scopriamo se è effettivamente GM che consuma molta memoria per gestire le immagini (che è anche plausibile) o se cè qualche bug, interno o esterno, che causa il problema. Magari un'immagine specifica.
Su cellulare la cosa non mi sorprende invece, se non hanno fatto i miracoli con GM (difficile) la memoria video è solitamente condivisa con quella normale e l'immagine viene quindi duplicata.
Vale anche su PC la cosa comunque se hai schede video con poca memoria a disposizione tipo 1 giga o meno dove è facile sommare risorse di windows e GM esterne/interne.
Considera che quelle che carichi nel progetto GM è in grado di ottimizzarne l'uso ed il caricamento mentre per quelle esterne sta a te evitare problemi come questo.
Personalmente mi ci dedicherei un po per caricare e liberare risorse tenendo in memoria soltanto quelle strettamente necessarie.
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

Avatar utente
sfigatto
Membro
Messaggi: 227
Iscritto il: 18/04/2014, 23:20
Uso: GM:Studio 1.4 Pro
Contatta:

Re: out of memory come evitarlo?

Messaggio da sfigatto »

100/200 mega sono comunque pochi ma a questo punto mi domando, su che dispositivo ti da il problema?
Se sei su PC, oltre a continuare ad essere difficile che sia tutto qua il problema, apri il task manager e prova a guardare quanto e come incrementa la memoria man mano che carichi foto un pò alla volta.
Così almeno scopriamo se è effettivamente GM che consuma molta memoria per gestire le immagini (che è anche plausibile) o se cè qualche bug, interno o esterno, che causa il problema. Magari un'immagine specifica.
Su cellulare la cosa non mi sorprende invece, se non hanno fatto i miracoli con GM (difficile) la memoria video è solitamente condivisa con quella normale e l'immagine viene quindi duplicata.
Vale anche su PC la cosa comunque se hai schede video con poca memoria a disposizione tipo 1 giga o meno dove è facile sommare risorse di windows e GM esterne/interne.
Considera che quelle che carichi nel progetto GM è in grado di ottimizzarne l'uso ed il caricamento mentre per quelle esterne sta a te evitare problemi come questo.
Personalmente mi ci dedicherei un po per caricare e liberare risorse tenendo in memoria soltanto quelle strettamente necessarie.
il problema è su pc dopo 5 o 6 foto va in out of memory, per curiosità ho provato anche su andorid e giocando alla prima foto la app si chiude (non che mi aspettassi un comportamento diverso).

Facendo controlli più approfonditi ho notato che alcune foto causavano alcuni problemi. Le ho cancellate e reinserite dopo averle rilavorate con Photoshop ed ora sembrano non creare più problemi.

Mi sono dedicato anche al cercare di ottimizzare le risorse esterne, sono ancora all'inizio ma vedo già qualche risultato, faccio anche ampio uso di sprite_delete , anche se ho letto che non sempre funziona perfettamente.

Spero che questi accorgimenti possano bastare per migliorare la situazione.

Grazie a tutti per i sempre utili consigli che mi date.

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 113 ospiti