Obrigado por visitar a The Game Makers Brasil 😁 Use o fórum de Dúvidas para fazer perguntas. Se está em busca de aprender dê uma olhada nos tutoriais.

Evitando memory leak Tópico resolvido

Perguntas? A comunidade te ajuda a resolver.
Avatar do usuário
Mysterious Stranger
Artista
Artista
Reações: 0
Mensagens: 62
Localização: BH

Contato:

Evitando memory leak

Mensagem por Mysterious Stranger » Qua Abr 13, 2022 8:24 pm

Noite, pessoas.

Eu percebi no modo debug do meu jogo que a memória estava subindo bem aos poucos, mesmo com tudo parado no jogo.
Depois de dar uma sondada, eu vi que isso estava acontecendo por conta da função font_add_sprite_ext que estou usando para carregar uma fonte própria que criei.
Eu sei que no help do GM tem escrito que isso poderia acontecer e por isso seria bom usar o font_delete() logo depois de usar a fonte, mas acontece que eu preciso dessa fonte ativa o tempo todo no jogo. Vejam o código da função que criei para dar draw na fonte:

Código: Selecionar todos

function scrPrint(_string, _font, _color, _align, _stringWidth, _xposition, _yposition){
	
	// construindo fonte
	var vfont = font_add_sprite_ext( _font, vgStringMap, 1, 1 );
	
	// printando fonte
	draw_set_font( vfont );
	draw_set_halign( _align );
	draw_set_color( _color );
	
	draw_text_ext( _xposition, _yposition, string_upper(_string), -1, _stringWidth );
	
	// para otimização de uso de memória, deletar a fonte logo depois de seu uso
	font_delete( vfont );
	
}
Mas parece que não funcionou já que estou tendo esse leak.
Alguém sabe uma maneira de evitar isso? Lembrando que preciso da fonte ativa o tempo todo. O jogo é pra celular e criei uma fonte 8bits pra ele mostrando hora in game, números, etc.

Valeu qualquer ajuda, cabrones.

Avatar do usuário
ValdeciVieira
Moderador
Moderador
Reações: 4
Mensagens: 103
Localização: Rio de Janeiro, Brasil

Re: Evitando memory leak  Tópico resolvido

Mensagem por ValdeciVieira » Sex Abr 15, 2022 7:15 pm

Se você precisa dela ativa o tempo todo durante o jogo, não seria melhor criá-la no create do objeto de inicialização, atribuí-la a uma variável global e deletá-la quando fechar o jogo? :detetive:

Avatar do usuário
Mysterious Stranger
Artista
Artista
Reações: 0
Mensagens: 62
Localização: BH

Contato:

Re: Evitando memory leak

Mensagem por Mysterious Stranger » Sáb Abr 16, 2022 1:31 pm

ValdeciVieira escreveu: Sex Abr 15, 2022 7:15 pm Se você precisa dela ativa o tempo todo durante o jogo, não seria melhor criá-la no create do objeto de inicialização, atribuí-la a uma variável global e deletá-la quando fechar o jogo? :detetive:
Funcionou perfeitamente! Fiz uma variável global receber a fonte e não está mais tendo o leak. Parece q o problema é que eu ficava recebendo a fonte constantemente na variável local dentro da função, né?! Nem me toquei.

Valeu, camarada.

Responder

Quem está online

Usuários navegando neste fórum: Bing [Bot] e 9 visitantes