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
» Retorno da GMBR!!!
por theguitarmester Ter 19 Mar 2024, 22:38

» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27

» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30

» Mudar cor de apenas uma palavra
por lunalol Sex 01 Mar 2024, 13:42

» 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

» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18

» 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

» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42

» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56

» Alguém aqui já ganha dinheiro com seus games?
por Joton Seg 15 Jan 2024, 16:49

» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21

» como aumentar o obj sem aumentar a colisão??
por GabrielXavier Qua 10 Jan 2024, 07:21

» Asteroid Core - Early Acesse Update [0.2.0.0]
por JOZ. Seg 08 Jan 2024, 14:39

» Versionamento de código com GitHub
por GabrielXavier Seg 08 Jan 2024, 07:32

» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por kolesovsup Sex 29 Dez 2023, 07:16

» a funçao approach ainda existe?
por PEDRINDEV Ter 26 Dez 2023, 20:05

» Inimigo ataca até por trás! >:(
por saim Sex 22 Dez 2023, 08:55

» [RESOLVIDO]Spawn após morte
por Deception_1999 Dom 17 Dez 2023, 16:39

» Remunerado $$$ - Procuro programador para ajudar a "montar" um jogo
por theguitarmester Sáb 02 Dez 2023, 16:28

» Game maker nao abre
por Cerf Dom 26 Nov 2023, 12:01


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