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
» player não consegue andar
por lovn7 Qui 21 Nov 2024, 13:33

» É possível fazer istó no game maker
por William Lima Qui 21 Nov 2024, 10:56

» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22

» (Resolvido) Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31

» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23

» (RESOLVIDO) Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49

» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58

» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36

» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36

» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33

» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51

» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28

» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18

» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08

» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10

» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16

» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40

» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01

» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45

» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34

» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28

» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48

» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54

» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14

» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50


Carregando o necessário

3 participantes

Ir para baixo

Carregando o necessário Empty Carregando o necessário

Mensagem por Davichococat Dom 22 Jan 2012, 17:59

(blah blah blah começa aqui)

Olá, pessoal. Andei esses dias trabalhando no meu novo (e primeiro) projeto.

Porém, o meu jogo pesa muito na memória. "Porque?", você deve estar se perguntando.

O mapa(a room) do meu jogo tem 64000 pixels de largura e 48000 pixels de altura. Sei, é muito, mas não pesa na memória. Tive ótima estabilidade usando esse sistema. Porém, essa room é cheia, realmente e literalmente cheia de objetos.

A ponto de cubrir 1/9 da mesma.

Então eu fiz as contas. Um objeto da room é 16x16. Eles, juntos iram encher uma área equivalente a uns 1/9 da room, em altura, e toda a room, em largura.

Ou seja, uns 341333333 objetos, sei lá, sou ruim em matématica mesmo. Mas de qualquer forma, é muuito objeto.

Só que,o quê o player vê dessa room é apenas uma view 640x480.

(blah blah blah termina aqui)


Agora vai a super-mega dúvida hiper-ultra complicada díficil de explicar e responder Rolling Eyes .

Bem, a primeira coisa que pensei era fazer um sistema em que apenas os objetos entre a visão do player fossem carregados, ou "existissem". Ou seja, o que o player não vê, não existe, não ocupa espaço, não ocupa memória.

Pórem, o jogo tem inimigos, também. E eu não queria que eles ficassem parados no espaço e tempo se o player não conseguisse ver-los. Quero que eles continuassem a se mover, idependente do player estar olhando ou não.

Ah, e quando eu digo "não existe", eu queria que deixasse de ocupar memória, e não ser deletado. Não quero que os objetos sejam deletados se saírem do campo de visao do player.

Então, alguem tem alguma ideia de como posso fazer isso? Ou, pelo menos alguma coisa que me ajudasse na super missão de fazer o jogo funcionar sem a necessidade de um computador do Chuck Norris?

Agradeço desde já.
Davichococat
Davichococat

Data de inscrição : 29/12/2011
Reputação : 1
Número de Mensagens : 182
Prêmios : Carregando o necessário Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

http://www.google.com

Ir para o topo Ir para baixo

Carregando o necessário Empty Re: Carregando o necessário

Mensagem por Markituh Dom 22 Jan 2012, 18:13

Tem dois modos: ou você usa a DLL cleanmem

ou você dá instance_deactivate_region no que está fora da room. Porém, como o deactivate region, o objeto vai parar de ser processado.

De qualquer forma, mesmo se você fizer o objeto deixar de ser desenhado, a posição, direção, velocidade etc ainda vão continuar sendo processadas.
Markituh
Markituh

Games Ranking : Sem avaliações

Data de inscrição : 11/10/2009
Reputação : 106
Número de Mensagens : 2184
Prêmios : Carregando o necessário Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 0 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

Carregando o necessário Empty Re: Carregando o necessário

Mensagem por Davichococat Dom 22 Jan 2012, 18:20

Ótimo. Como os objetos 16x16 que eu disse são completamente estáticos, acho que vai aliviar um pouquinho.

Mas você acha que deativar as instances é suficiente? E a cleanmen, ela vai instruir o GM à parar de processar tudo que esteja fora da view?

Além disso, quais são os parametros da função? Dei um search no manual mas não achei nada.

Ah, e estou usando o GM 8.0. Essa função existe?
Davichococat
Davichococat

Data de inscrição : 29/12/2011
Reputação : 1
Número de Mensagens : 182
Prêmios : Carregando o necessário Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

http://www.google.com

Ir para o topo Ir para baixo

Carregando o necessário Empty Re: Carregando o necessário

Mensagem por Markituh Dom 22 Jan 2012, 18:36

Não vou dizer que é a solução divina, mas funciona bem, principalmente que você disse que os objetos são estáticos. E a cleanmem, na verdade a função dela é limpar a memória que não é usada, deixando o jogo mais leve. Instance_deactivate + cleanmen = um bom desempenho.

Não achou? Tem certeza de que digitou o nome certo? = instance_deactivate_region. Os argumentos são:
Código:
instance_deactivate_region(left,top,width,height,inside,notme)
Se souber um pouco de inglês, deve saber os valores que vão em cada argumento, não?
Markituh
Markituh

Games Ranking : Sem avaliações

Data de inscrição : 11/10/2009
Reputação : 106
Número de Mensagens : 2184
Prêmios : Carregando o necessário Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 0 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

Carregando o necessário Empty Re: Carregando o necessário

Mensagem por saim Dom 22 Jan 2012, 18:41

Com instance_deactivate_region, você desativa as instâncias que não estão na view.
Depois, você ativa as instâncias da view com instance_activate_region e, finalmente, ativa os inimigos com instance_activate_object.
Lembre-se que desativar um piso enquanto mantém um inimigo ativo pode fazer o inimigo cair, se ele tiver códigos de gravidade.
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 : Carregando o necessário 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

Carregando o necessário Empty Re: Carregando o necessário

Mensagem por Davichococat Dom 22 Jan 2012, 18:56

Bem, obrigado pela ajuda. Na verdade tinha digitado a função de modo incorreto, por isso não achei no manual.

A solução vai ser fazer com que os inimigos tenham sua própia "view", mas muito menor. Assim resolverei o problema da gravidade e colisões.

Queria saber também se a função é lenta, e se é uma boa idéia colocar no step com esse mapa colossal que o jogo tem.
Davichococat
Davichococat

Data de inscrição : 29/12/2011
Reputação : 1
Número de Mensagens : 182
Prêmios : Carregando o necessário Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

http://www.google.com

Ir para o topo Ir para baixo

Carregando o necessário Empty Re: Carregando o necessário

Mensagem por saim Dom 22 Jan 2012, 19:05

Essas funções existem só pra agilizar o processamento, não deve ser lenta.
Mas nunca testei, então não posso dizer com certeza.
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 : Carregando o necessário 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

Carregando o necessário Empty Re: Carregando o necessário

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