GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» [Resolvido] Dúvida, colisão única de objeto
por 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

Ir para baixo

[Trancado] erro: out of memory Empty [Trancado] erro: out of memory

Mensagem por saim Ter 26 Mar 2013, 21:30

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:
>create<
Código:
jaCriou = false;
>colisão<
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();
   
    }
e o script "criaSpriteBoom" é:
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
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : [Trancado] erro: out of memory Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Trancado] erro: out of memory Empty Re: [Trancado] erro: out of memory

Mensagem por Gonçalves Ter 26 Mar 2013, 21:33

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...
Gonçalves
Gonçalves

Games Ranking : Nota B

Notas recebidas : B + A + C
Data de inscrição : 29/10/2010
Reputação : 79
Número de Mensagens : 1013
Prêmios : [Trancado] erro: out of memory Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 2 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Trancado] erro: out of memory Empty Re: [Trancado] erro: out of memory

Mensagem por saim Ter 26 Mar 2013, 22:30

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.
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : [Trancado] erro: out of memory Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Trancado] erro: out of memory Empty Re: [Trancado] erro: out of memory

Mensagem por PedroX Ter 26 Mar 2013, 22:52

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

_________________


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:
PedroX
PedroX

Games Ranking : Nota B

Notas recebidas : C+B
Data de inscrição : 26/07/2008
Reputação : 311
Número de Mensagens : 6087
Prêmios : [Trancado] erro: out of memory Empty

Medalhas x 0 Tutoriais x 17 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

https://web.whatsapp.com/send?phone=5519995935953&text=Pedro

Ir para o topo Ir para baixo

[Trancado] erro: out of memory Empty Re: [Trancado] erro: out of memory

Mensagem por saim Ter 26 Mar 2013, 23:00

PedroX escreveu:O problema é do seu computador.
Estranho. Porque, então, no outro projeto, o erro não aconteceu? (ver o edit do primeiro post)
Se importa de testar o projeto? (está em formato .zip, GMS)
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : [Trancado] erro: out of memory Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Trancado] erro: out of memory Empty Re: [Trancado] erro: out of memory

Mensagem por PedroX Ter 26 Mar 2013, 23:10

Claro que não me importo. Era o que eu ia pedir. O erro aconteceu aqui também.

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:
PedroX
PedroX

Games Ranking : Nota B

Notas recebidas : C+B
Data de inscrição : 26/07/2008
Reputação : 311
Número de Mensagens : 6087
Prêmios : [Trancado] erro: out of memory Empty

Medalhas x 0 Tutoriais x 17 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

https://web.whatsapp.com/send?phone=5519995935953&text=Pedro

Ir para o topo Ir para baixo

[Trancado] erro: out of memory Empty Re: [Trancado] erro: out of memory

Mensagem por saim Ter 26 Mar 2013, 23:48

É 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!
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : [Trancado] erro: out of memory Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Trancado] erro: out of memory Empty Re: [Trancado] erro: out of memory

Mensagem por PedroX Ter 26 Mar 2013, 23:57

É 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.

_________________


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:
PedroX
PedroX

Games Ranking : Nota B

Notas recebidas : C+B
Data de inscrição : 26/07/2008
Reputação : 311
Número de Mensagens : 6087
Prêmios : [Trancado] erro: out of memory Empty

Medalhas x 0 Tutoriais x 17 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

https://web.whatsapp.com/send?phone=5519995935953&text=Pedro

Ir para o topo Ir para baixo

[Trancado] erro: out of memory Empty Re: [Trancado] erro: out of memory

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos