Entrar
Últimos assuntos
» [Resolvido] Dúvida, colisão única de objetopor vdm842 Sex 24 maio 2024, 09:50
» Servidor de Discord do fórum?
por Super Games Sáb 18 maio 2024, 01:27
» Problemas com a caixa de diálogo, ela é pequena e as letras não cabem dentro
por Rukasu777 Qui 16 maio 2024, 18:10
» Problemas com particulas
por RastaMaan Dom 12 maio 2024, 17:03
» Problema ao entrar por uma porta e voltar por ela
por aminaro Seg 06 maio 2024, 10:08
» Alguém aqui já ganha dinheiro com seus games?
por theguitarmester Ter 30 Abr 2024, 11:43
» Colisões não funcionando
por theguitarmester Ter 30 Abr 2024, 10:16
» Como ajustar velocidade de cada frame da animação no game maker
por pequetux Sex 26 Abr 2024, 16:45
» Preciso de ajuda
por AftonDuGrau Dom 21 Abr 2024, 20:18
» Como faz o evento drawn GUI, não se repetir?
por aminaro Sex 19 Abr 2024, 20:30
» PROBLEMAS COM FÍSICAS DE ÁGUA
por aminaro Ter 16 Abr 2024, 10:07
» Retorno da GMBR!!!
por Ralphed Sex 12 Abr 2024, 22:45
» JOGADOR PARANDO NO AR QUANDO ATACA
por aminaro Qua 10 Abr 2024, 13:51
» Problemas com texto interativo
por Kaaru72 Dom 07 Abr 2024, 11:31
» Erro escondido e indecifrável
por dev_gabize.azv Qui 04 Abr 2024, 10:11
» Mudar cor de apenas uma palavra
por Ralphed Sáb 30 Mar 2024, 00:39
» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27
» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30
» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17
» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18
» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34
» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13
» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12
» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02
» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55
[Trancado] erro: out of memory
3 participantes
Página 1 de 1
[Trancado] erro: out of memory
tenho um objeto-parent que, quando colide com outro objeto-parent deve destruir as duas instâncias, criando um outro objeto-efeito. Esse objeto-efeito precisa ter uma sprite que é igual às duas sprites anteriores juntas. Pra isso, eu elaborei um script que cria a nova sprite e posiciona o objeto corretamente.
Aí, no evento de colisão, eu destruo as duas instâncias, garantindo que apenas uma delas irá rodar o evento.
Todos os childs têm "event_inherited()" no começo do create e nenhum deles tem o evento de colisão (garantindo que o evento rode).
Entretanto, ao fazer isso, o GMS me dá a mensagem "out of memory" e fecha o jogo.
Por que?
eis os códigos do objeto-parent:
[edit] faltou uma informação: eu testei o script em outro projeto, só com dois objetos e o evento de rodar o script quando apertasse "enter". A sprite foi criada na posição correta, não deu o erro.
[edit2] No outro projeto, se eu movo o evento pra uma colisão, o erro acontece novamente... estranho!
Aí, no evento de colisão, eu destruo as duas instâncias, garantindo que apenas uma delas irá rodar o evento.
Todos os childs têm "event_inherited()" no começo do create e nenhum deles tem o evento de colisão (garantindo que o evento rode).
Entretanto, ao fazer isso, o GMS me dá a mensagem "out of memory" e fecha o jogo.
Por que?
eis os códigos do objeto-parent:
e o script "criaSpriteBoom" é:>create<>colisão<
- Código:
jaCriou = false;
- Código:
if (jaCriou == false){
with(instance_create(0, 0, objEfBoom)){
sprite_index = criaSpriteBoom(id, other . id);
// sprite_index = other . sprite_index; // se eu troco qual linha está comentada, o erro não acontece
}
with(other){
jaCriou = true;
instance_destroy();
}
instance_destroy();
}
- Código:
// cria uma sprite que é a soma das duas sprites dadas como argumentos, nas posições originais, com origem no centro
// posiciona o objeto de modo que sua sprite sobreponha as originais
var instancia1, instancia2,x1, x2, y1, y2 lar, alt, Surf, Sprite;
instancia1 = argument0; instancia2 = argument1;
x1 = min(instancia1 . bbox_left, instancia2 . bbox_left);
x2 = max(instancia1 . bbox_right, instancia2 . bbox_right);
y1 = min(instancia1 . bbox_top, instancia2 . bbox_top);
y2 = max(instancia1 . bbox_bottom, instancia2 . bbox_bottom);
lar = x2 - x1; alt = y2 - y1;
Surf = surface_create(lar, alt);
surface_set_target(Surf);
draw_clear_alpha($000000, 0);
draw_sprite(instancia1 . sprite_index, instancia1 . image_index, instancia1 . x - x1, instancia1 . y - y1);
draw_sprite(instancia2 . sprite_index, instancia2 . image_index, instancia2 . x - x1, instancia2 . y - y1);
surface_reset_target();
Sprite = sprite_create_from_surface(Surf, 0, 0, lar, alt, 0, 0, lar / 2, alt / 2);
surface_free(Surf);
x = x1 + lar / 2; y = y1 + alt / 2; // posiciona o objeto
return(Sprite);
[edit] faltou uma informação: eu testei o script em outro projeto, só com dois objetos e o evento de rodar o script quando apertasse "enter". A sprite foi criada na posição correta, não deu o erro.
[edit2] No outro projeto, se eu movo o evento pra uma colisão, o erro acontece novamente... estranho!
Última edição por saim em Qua 27 Mar 2013, 10:07, editado 3 vez(es)
saim- Games Ranking :
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios :
x 1 x 6 x 0
x 1 x 0 x 3
x 0 x 0 x 0
Re: [Trancado] erro: out of memory
Não sei se é isso, mas olhando rápido dá pra perceber que você define como true o jaCriou do other, e não do próprio objeto, o que permite que o loop siga ativo. E criando várias instâncias, provavelmente o jogo trave mesmo.
Depois olho com mais calma se não for isso...
Depois olho com mais calma se não for isso...
Gonçalves- Games Ranking :
Notas recebidas : B + A + C
Data de inscrição : 29/10/2010
Reputação : 79
Número de Mensagens : 1013
Prêmios :
x 0 x 4 x 0
x 2 x 0 x 0
x 0 x 0 x 0
Re: [Trancado] erro: out of memory
Essa variável só existe pra evitar das duas instâncias criarem o objEfBoom. A primeira instância roda o código, define "jaCriou" como "true" pra segunda, que não vai mais rodar o código. Não existe (ou não deveria existir) loop. O objEfBoom não é child do objeto. Repare naquela linha em comentário.
Ah, tenho que adicionar uma informação. Vou editar o post inicial.
Ah, tenho que adicionar uma informação. Vou editar o post inicial.
saim- Games Ranking :
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios :
x 1 x 6 x 0
x 1 x 0 x 3
x 0 x 0 x 0
Re: [Trancado] erro: out of memory
Não há erros no seu código. O problema é do seu computador. Pesquisando por "out of memory", você encontrará vários resultados.
Há um artigo no Wikipedia: http://en.wikipedia.org/wiki/Out_of_memory
E ao que tudo indica não é limitação de hardware (física).
Há um artigo no Wikipedia: http://en.wikipedia.org/wiki/Out_of_memory
E ao que tudo indica não é limitação de hardware (física).
Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.
Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.
Aprenda a calcular a velocidade de suas animações
Entre para o Clube do Inglês:
Re: [Trancado] erro: out of memory
Estranho. Porque, então, no outro projeto, o erro não aconteceu? (ver o edit do primeiro post)PedroX escreveu:O problema é do seu computador.
Se importa de testar o projeto? (está em formato .zip, GMS)
saim- Games Ranking :
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios :
x 1 x 6 x 0
x 1 x 0 x 3
x 0 x 0 x 0
Re: [Trancado] erro: out of memory
Claro que não me importo. Era o que eu ia pedir. O erro aconteceu aqui também.
Mas acho que sei o erro:
Se era pra ser os dois anteriores juntos, então seria:
Mas acho que sei o erro:
- Código:
with(instance_create(0, 0, objEfBoom)) sprite_index = criaSpriteBoom(id, other . id);
Se era pra ser os dois anteriores juntos, então seria:
- Código:
var ele; ele=other.id; with(instance_create(0, 0, objEfBoom)) sprite_index = criaSpriteBoom(other.id, other.ele);
Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.
Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.
Aprenda a calcular a velocidade de suas animações
Entre para o Clube do Inglês:
Re: [Trancado] erro: out of memory
É isso mesmo! Eu estava usando a variável "id" dentro do "with", o que causava (de fato) um loop. O objeto, pra definir seu sprite_index, usava o próprio sprite_index!
Tá, talvez não seja um loop INFINITO, mas acho que isso transtornou a máquina...
Agora funcionou! Pode trancar o tópico!
Tá, talvez não seja um loop INFINITO, mas acho que isso transtornou a máquina...
Agora funcionou! Pode trancar o tópico!
saim- Games Ranking :
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios :
x 1 x 6 x 0
x 1 x 0 x 3
x 0 x 0 x 0
Re: [Trancado] erro: out of memory
É que o código foi traduzido assim:
with(objEfBoom) sprite_index = criaSpriteBoom(objEfBoom, objCriador);
Sendo que era pra ser assim:
with(objEfBoom) sprite_index = criaSpriteBoom(objCriador, objCriador);
O problema é que o other dentro do with() serve para quem chamou. E dentro da colisão para o outro objeto colidindo. Ou seja, você confundiu. O other lá dentro aplicava-se ao principal da colisão e não ao secundário.
with(objEfBoom) sprite_index = criaSpriteBoom(objEfBoom, objCriador);
Sendo que era pra ser assim:
with(objEfBoom) sprite_index = criaSpriteBoom(objCriador, objCriador);
O problema é que o other dentro do with() serve para quem chamou. E dentro da colisão para o outro objeto colidindo. Ou seja, você confundiu. O other lá dentro aplicava-se ao principal da colisão e não ao secundário.
Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.
Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.
Aprenda a calcular a velocidade de suas animações
Entre para o Clube do Inglês:
Tópicos semelhantes
» Erro ao iniciar GM - Out of memory
» Erro e não erro na compilação do GMS para Android.
» [Resolvido]Qual o erro aqui? Erro no código
» Out of memory
» Out Of Memory
» Erro e não erro na compilação do GMS para Android.
» [Resolvido]Qual o erro aqui? Erro no código
» Out of memory
» Out Of Memory
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|