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


Como deixar um jogo mais rápido?

4 participantes

Ir para baixo

Como deixar um jogo mais rápido? Empty Como deixar um jogo mais rápido?

Mensagem por Meokor Seg 20 Fev 2012, 22:11

Olá a todos! Laughing

Pessoal estou desenvolvendo um projeto de jogo com meu irmão, mas pelo que estamos pensando em fazer, pode ser que o o jogo fique um pouco pesado. Então, que tipo de dicas vocês podem me dar para que possamos "otimizar" bem o jogo e ele não fique tão pesado?

( Ex: Sei que menos códigos no evento "Step" é melhor. Acredito que quando desabilitamos os objetos que estão fora do "View" também aumente a performance.)

Acredito que deva ter muitas outras dicas para um jogo mais rápido...

Agradeço a atenção de todos, aguardo respostas.
Forte Abraço!
Meokor
Meokor

Data de inscrição : 02/01/2010
Reputação : 0
Número de Mensagens : 226
Prêmios : Como deixar um jogo mais rápido? 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.mindcrop.com.br

Ir para o topo Ir para baixo

Como deixar um jogo mais rápido? Empty Re: Como deixar um jogo mais rápido?

Mensagem por Mr.Brum Seg 20 Fev 2012, 22:33

Dê uma olhada neste tópico do Pedro:
https://gmbr.forumeiros.com/t19480-melhorando-o-desempenho-dos-jogos

ele ensina várias formas de deixar o jogo mais leve.
Mr.Brum
Mr.Brum

Games Ranking : Nota C

Notas recebidas : D + D + C + C + D + B
Data de inscrição : 28/04/2011
Reputação : 41
Número de Mensagens : 914
Prêmios : Como deixar um jogo mais rápido? Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 0

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

http://mrbrumgames.blogspot.com/

Ir para o topo Ir para baixo

Como deixar um jogo mais rápido? Empty Re: Como deixar um jogo mais rápido?

Mensagem por Meokor Seg 20 Fev 2012, 22:40

Valeu ae mrbrum22!

Era exatamente isso que eu estava precisando!
Bom, se alguém souber de mais algumas dicas estou sempre no aguardo.

Abraços...
Meokor
Meokor

Data de inscrição : 02/01/2010
Reputação : 0
Número de Mensagens : 226
Prêmios : Como deixar um jogo mais rápido? 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.mindcrop.com.br

Ir para o topo Ir para baixo

Como deixar um jogo mais rápido? Empty Re: Como deixar um jogo mais rápido?

Mensagem por Kabeção Ter 21 Fev 2012, 11:29

Usar ds_grid ou outras datas estruturadas é muito mais rápida do que muitas variáveis ou uma array. Elas são muito mais fáceis de se manipular.

Se você precisa usar a função execute_string com um código grande muitas vezes em um evento como o Step, seu jogo vai perder drasticamente a velocidade, é mais rápido você criar um novo objeto (em tempo de execução usando a função object_add) e usando object_event_add e coloque o código que seria usada na execute_string nele. O ganho de performance é enorme.

Background menores são desenhados mais rápido que os maiores. Se você precisa usar um background muito grande, divida-o em pedaços e desenhe-os juntos no jogo normalmente.

Embora não pareça, surfaces e draw_primitive são funções bem convenientes e rápidas se usadas corretamente, é possível criar diversos efeitos interessantes enquanto o jogo executa. Se você não sabe usar procure aprender porque são um dos melhores recursos gráficos do GM.

Usar o sistema de partículas é muito mais rápido que usar muitos objetos como partículas.

Evite processos desnecessários, veja como exemplo as páginas da internet, elas só executam algo quando a entrado do usuário, por exemplo: um menu deslizante só se abre quando o mouse esta posicionada encima dele, se não estiver o menu não tem nada o que executar então não o faço ficar processando códigos nesse momento.
Um exemplo disso no GM:
Código:
// Inimigo
// Event Step
mira = point_direction(x,y,player.x,player.y);
preparar ataque(arma2);
sortear_item_que_vai_cair();
// .......
Mas não há sentido em tudo isso se o jogador está longe do inimigo então:
Código:
// Inimigo
// Event Step
if distance_to_object(objPlayer) <= 50 {
mira = point_direction(x,y,player.x,player.y);
preparar ataque(arma2);
// .......
}
if player_me_matou sortear_item_que_vai_cair();

Além de performance você também precisa se preocupar com praticidade. O melhor exemplo de praticidade que me vem a cabeça agora é a boa e velha matemática sendo usada de forma inteligente. Um exemplo é o movimento do jogador, se ele pode andar livremente então checar teclas pressionadas a todo momento é algo inevitável, então use esse problema para tornar as coisas mais práticas para você.
Código:
if keyboard_check(vk_left) x -= 4;
if keyboard_check(vk_right) x += 4;
if keyboard_check(vk_up) y -= 4;
if keyboard_check(vk_down) y += 4;
Não há problemas no código acima, ela não vai "pesar" seu jogo mas mesmo assim pode ser otimizado:
Código:
x += (keyboard_check(vk_right)-keyboard_check(vk_left))*velocidade;
y += (keyboard_check(vk_down)-keyboard_check(vk_up))*velocidade;
Essa forma é muito mais prática, sendo que keyboard_check retorna 1 ou 0 caso a tecla esteja apertada ou não, basta imaginar o resultado para entender.
Código:
// x += (keyboard_check(vk_right)-keyboard_check(vk_left))*velocidade;
// Tecla vk_left foi pressionada então
x += (0-1)*4;
// x += -4;

// Tecla vk_right foi pressionada então
x += (1-0)*4;
// x += 4;

// As duas foram pressionadas
x += (1-1)*4;
// x += 0; não há movimento
Além disso é mais fácil controlar, se em algum momento você quer proibir o movimento do jogador então:
Código:
x += (keyboard_check(vk_right)-keyboard_check(vk_left))*velocidade*livre
Imaginando o resultado:
Código:
x += (0-1)*4*0;  // livre é false, então 0
// x += 0; não há movimento, todo multiplicado por 0 retorna 0
x += (0-1)*4*1 // livre é true, então 1
// x += -4; se está livre, então o resultado é multiplicado por 1 e todo vezes 1 é ele mesmo

with é definitivamente um recurso poderoso. Você pode usa-lo não só com um objeto mas com todos do mesmo tipo, todos os parentes de um certo objeto ou até mesmo todos de uma vez usando o "all" com apenas algumas linhas de código.
Um simples
Código:
with (all) instance_destroy()
destruiria todos os objetos do jogo de um vez.

Um
Código:
valor = max(0,min(10,valor));
é melhor que um
Código:
if valor < 0 valor = 0;
if valor > 10 valor = 10;

Isso são boas práticas de programação, não são exatamente um meio de aumentar a performance do jogo mas são um meio de otimizar o código o que aumenta a performance do próprio programador no projeto.
Kabeção
Kabeção

Games Ranking : Sem avaliações

Data de inscrição : 08/06/2008
Reputação : 100
Número de Mensagens : 2314
Prêmios : Como deixar um jogo mais rápido? Empty

Medalhas x 0 Tutoriais x 7 Moedas x 0

Ouro x 3 Prata x 0 Bronze x 1

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

http://blackcapapps.blogspot.com.br/

Ir para o topo Ir para baixo

Como deixar um jogo mais rápido? Empty Re: Como deixar um jogo mais rápido?

Mensagem por Gustavo Gamer Ter 21 Fev 2012, 13:20

Você poderia usar o Room Speed.


Última edição por Gustavo Gamer em Ter 21 Fev 2012, 13:24, editado 1 vez(es)
Gustavo Gamer
Gustavo Gamer

Games Ranking : Nota C

Notas recebidas : C
Data de inscrição : 18/01/2012
Reputação : 1
Número de Mensagens : 20
Prêmios : Como deixar um jogo mais rápido? 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://redwordgames.weebly.com

Ir para o topo Ir para baixo

Como deixar um jogo mais rápido? Empty Re: Como deixar um jogo mais rápido?

Mensagem por Gustavo Gamer Ter 21 Fev 2012, 13:21

Você poderia usar o Room Speed, se o propósito for deixar ele com mais velocidade.

Editado por Joton
Cuidado com o post duplo, sugiro que leias as regras para entender como funciona o fórum.
Gustavo Gamer
Gustavo Gamer

Games Ranking : Nota C

Notas recebidas : C
Data de inscrição : 18/01/2012
Reputação : 1
Número de Mensagens : 20
Prêmios : Como deixar um jogo mais rápido? 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://redwordgames.weebly.com

Ir para o topo Ir para baixo

Como deixar um jogo mais rápido? Empty Re: Como deixar um jogo mais rápido?

Mensagem por Meokor Ter 21 Fev 2012, 13:53

Parceiros, muito obrigado pelas dicas!! Very Happy

Kabeção: Obrigado pelo tutorial postado ae, vai ser de grande proveito pra mim durante toda a criação do meu jogo!

Forte Abraço!
Meokor
Meokor

Data de inscrição : 02/01/2010
Reputação : 0
Número de Mensagens : 226
Prêmios : Como deixar um jogo mais rápido? 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.mindcrop.com.br

Ir para o topo Ir para baixo

Como deixar um jogo mais rápido? Empty Re: Como deixar um jogo mais rápido?

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