Tutorial: GameMaker Studio – Parte 06: Músicas e Efeitos Sonoros


No tutorial anterior, nós fizemos melhorias no gameplay do nosso jogo adicionando as flores, limitando a área de jogo das raquetes e fazendo a direção da bola ser rebatida conforme o local que pega na raquete. Entretanto, nosso jogo está muito silencioso.

Vamos corrigir isto adicionando sons e efeitos sonoros nele.

Adicionando Música

Assim como qualquer recurso do gamemaker, é muito fácil importar músicas. Mas primeiro, precisamos pegá-las. A música que escolhi hoje é esta aqui, chamada “Fun in a Bottle” composta por Kevin MacLeod e licenciada em Creative Commons.

Agora que baixou a música, assim como os outros recursos, ela pode ser importada pelo clique no ícone da música no Windows Explorer e arrastada para dentro do programa. Isto vai abrir as propriedades da Música:

Altere o nome da música para “snd_FunInABottle” e clique em “OK”.  Agora, vamos executar a música quando o jogo começar. Abra a Room “rm_level1”, então vá na aba “Settings” e clique em “Creation Code”.

O editor de código irá abrir. O código aqui inserido será executado quando a room for iniciada, antes mesmo dos objetos que compõe a room. Agora adicione a seguinte linha:

01. audio_play_sound(snd_FunInABottle, 0, true);

A função audio_play_sound possui três parâmetros: a primeira é o nome da música, aquela que definimos quando a importamos para o nosso projeto. O segundo parâmetro é a prioridade, que serve para quando houver necessidade de desativar alguma música, as de baixa prioridade são escolhidas para serem silenciadas. O terceiro parâmetro é se a música deve ficar em loop ou não. Queremos que fique em loop, então sempre que a música acabar, ela será reiniciada. Se você testar agora, a música tocará assim que o jogo começar.

Para fins de boas práticas de programação, sempre que iniciar uma música, é bom verificar se a mesma não está tocando. Isto evitará possíveis erros causados por recursos já sendo utilizados, e o que acabei de falar vale não só para o GameMaker, como para qualquer ferramenta que utilize. Para fazer este código preventivo, vamos modificar o código para que fique assim:

01. if (audio_is_playing(snd_FunInABottle) == false) {
02.     audio_play_sound(snd_FunInABottle, 0, true);
03. }

Aqui, verificamos se a música “snd_FunInABottle” não estiver tocando, então começamos a tocar.

 

Efeitos Sonoros

Cada vez que a bola acertar uma flor, vamos executar este som aqui, chamado de Eye Poke, composto por Klocko e sob licença Attribution 3.0. Importe o som como fizemos para a música, e nas configurações, renomeie-o para “snd_EyePoke”.

Agora, vamos fazer com que a cada batida da bola nas flores seja emitido um som e para uma sequência de flores batidas, aumente um pouco o tom do som. Para isso, abra o “obj_bola”, selecione o evento “Create” e adicione o seguinte código:

01. emit = audio_emitter_create();
02. tom = 1;

Audio Emitter, que em inglês significa emissor de som, como o nome diz, controla a emissão de som. Com um emissor, podemos até mesmo alterar os sons que serão reproduzidos, que é o nosso objetivo. Na segunda linha, temos uma variável chamada “tom” sendo igual a 1. Ela controlará a tonalidade do som conforme a bola vai rebatendo.
Agora selecione o evento da “Colisão com as flores” e adicione o seguinte código:

01. audio_emitter_pitch(emit, tom);
02. audio_play_sound_on(emit,snd_EyePoke,false,0);
03. if (tom < 2){
04.    tom += 0.1;
05. }
Aqui, mandamos o GameMaker ajustar o tom do som. Em seguida executamos o som usando o emissor que criamos no código anterior (primeiro parâmetro). O som executado vai ser o “snd_EyePoke”  (segundo parâmetro) e não será repetido (terceiro parâmetro). Finalmente, prioridade 0, que não interessa agora porque não temos grandes seleções de músicas e efeitos sonoros para que isto seja necessário. E por fim, aumentamos o tom, mas limitando o aumento de tom até o 2.
Agora, para restaurar o tom para 1, selecione o evento da colisão com a raquete e insira o seguinte código:

01. tom=1;

E por último, como criamos manualmente o emissor de som, temos que destruí-lo manualmente quando não for mais necessário. Para isso, vamos criar mais um evento, clique em “Add Event” e em seguida “Destroy”. Este evento será executado quando a bola for destruída. Vamos adicionar aqui o seguinte código:

01. audio_emitter_free(emit);

Pronto, isto fará com que o emissor não ocupe memória do computador quando o mesmo não for necessário.

 

Conclusão

Hoje o tema foi Música e Efeitos Sonoros. Vimos como adicionar música, sons e alterar o tom dos sons usando os emissores. Para sons simples, também tem o “Play Sound” na aba “Main1” da lista de comandos pré-feitos, então para quem quer mais praticidade em sons simples, pode usá-lo. Então pessoal, até o próximo tutorial.

Thalisson Christiano de Almeida

Thalisson Christiano de Almeida

Formado em Ciência da Computação (UDESC). Foi Programador da Céu Games e professor do Técnico em Informática do SENAI-SC. Atualmente, trabalha na empresa By Seven. Já foi jogador de xadrez e praticou kung-fu, ambos por 4 anos. Hoje é praticante do Jiu-jitsu, esperando que não fique nos 4 anos. Não tem preferência de tipos de jogos em especifico, variando desde jogos casuais de Facebook até jogos mais hardcore.

Send this to a friend