full screen background image

Desenvolvendo um Jogo Digital do Zero: Parte 22 – Incluindo efeitos sonoros e música de fundo

Desenvolvendo um Jogo Digital do Zero: Parte 22 – Incluindo efeitos sonoros e música de fundo

Daremos continuidade no desenvolvimento do Shark Pong voltando à etapa de programação.

Vocês, nossos fiéis leitores, devem ter percebido que houve uma publicação sobre a criação de áudio para o jogo porém, esse áudio não foi adicionado efetivamente.

Então … o nosso artigo de hoje será sobre isso.

 

Todas as partes da saga:

http://fabricadejogos.net/colunas/producao-jogo-digital-do-zero

No último artigo da saga “Desenvolvendo um Jogo Digital do Zero”, escrito pelo redator Filipe, vocês viram como publicar um jogo digital no canal Google Play.

QuasarLogoEu comentei no início do artigo de hoje que houve essa publicação, escrita pelo nosso parceiro Victor, integrante da empresa parceira Quasar Sound Work, que falava sobre as etapas de criação de música em jogos. No final do artigo escrito por ele, foi mostrado o resultado da criação da música de fundo do Shark Pong.

Apesar de haver um único artigo sobre efeitos sonoros, a equipe da Quasar Sound Work elaborou outros quatro efeitos, além da música de fundo já apresentada. Dois efeitos sonoros de mordida do tubarão, um efeito de rebatimento do tubarão e um efeito de aplausos. Todos esses efeitos, além da música de fundo, serão contextualizados nesse artigo e serão adicionados no jogo.

Antes dos trabalhos, baixe esse arquivo e o descompacte na pasta “Resources”, no projeto do Shark Pong. Para que possamos tocar as músicas, precisamos adicioná-las no repositório do jogo.

Daremos início ao artigo de hoje com a inclusão da música de fundo.

 

Música de fundo

OrquestraA música de fundo é o primeiro áudio que nos vêm a cabeça quando pensamos nos efeitos sonoros de um jogo. Para o Shark Pong, iniciaremos a música de fundo quando o jogo começar e a pararemos quando um dos competidores perder. Essas modificações são simples e pontuais.

Para iniciar a música de fundo, abra o arquivo “HelloWorldScene.cpp” e adicione as seguintes linhas de código:

CocosDenshion::SimpleAudioEngine::sharedEngine()->setBackgroundMusicVolume(0.2);

CocosDenshion::SimpleAudioEngine::sharedEngine()->playBackgroundMusic(“Background.mp3”,true);

logo abaixo dessas:

CCSequence* seq = CCSequence::create(CCDelayTime::create(0.75),

  CCCallFunc::create(this,callfunc_selector(HelloWorld::iniciaJogo)),NULL);

runAction(seq);

Apenas deixamos o volume da música de fundo em 20% do volume oficial, por ser um áudio de fundo, e iniciamos o áudio. Essa mudança é suficiente para fazer a música de fundo iniciar junto com o jogo.

Agora faremos com que a música de fundo pare de tocar no momento que algum competidor perde o jogo. Para isso, no mesmo arquivo, adicione a seguinte linha de código:

CocosDenshion::SimpleAudioEngine::sharedEngine()->stopBackgroundMusic();

logo abaixo dessa:

HelloWorld::paIA->runAction(CCAnimate::create(CCAnimation::createWithSpriteFrames(surfIA,0.15)));

e dessa:

HelloWorld::paJogador->runAction(CCAnimate::create(CCAnimation::createWithSpriteFrames(surfJog,0.15)));

Pronto. O início e o término da música de fundo já estão implementados no Shark Pong.

 

Efeitos sonoros

EqualizadorAgora precisaremos adicionar os quatro efeitos sonoros restantes. Iniciaremos com a inclusão do efeito de rebatida do tubarão. No momento que a barbatana do tubarão entra em contato com a prancha de um dos competidores, o tubarão é rebatido e um efeito sonoro é tocado. Para que isso aconteça, precisaremos tocar esse efeito quando o jogador rebate o tubarão e quando o NPC rebate o tubarão. Dessa forma, abra o arquivo “HelloWorldScene.cpp” e adicione a seguinte linha de código:

CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect(“Rebatida.mp3”);

no final do bloco pertencente a essa estrutura de seleção:

if((HelloWorld::tubarao->getPositionY()<=HelloWorld::paJogador->getPositionY()+HelloWorld::paJogador->boundingBox().size.height/2)&&

  (HelloWorld::tubarao->getPositionY()>=HelloWorld::paJogador->getPositionY()-HelloWorld::paJogador->boundingBox().size.height/2)) {

e no final do bloco pertencente a essa estrutura de seleção:

if((HelloWorld::tubarao->getPositionY()<=HelloWorld::paIA->getPositionY()+HelloWorld::paIA->boundingBox().size.height/2)&&

  (HelloWorld::tubarao->getPositionY()>=HelloWorld::paIA->getPositionY()-HelloWorld::paIA->boundingBox().size.height/2)) {

Para finalizar, adicionaremos os outros três efeitos sonoros que são tocados somente no final do jogo. Adicionaremos um efeito que será tocado quando o tubarão come o jogador, outro que será tocado quando o tubarão come o NPC e outro que será tocado quando o jogador ganha. Esses três efeitos precisam ser tocados após o decorrer de um certo tempo. Dessa forma, precisamos criar métodos que serão programados para serem executados no momento certo e, em consequência disso, os efeitos sonoros serem tocados quando esses métodos serem executados.

Começaremos incluindo o protótipo desses métodos na classe “HelloWorld”. Para isso, abra o arquivo “HelloWorldScene.h” e adicione as seguintes linhas de código:

void tocaSomJogadorPerdeu();

void tocaSomJogadorGanhou();

void tocaSomAplausos();

logo abaixo dessa:

float posicaoInicialTubarao[2];

PerdeuPreyBoyOs nomes dos métodos são bastante sugestivos e praticamente descrevem as suas funções. Agora vamos adicionar a implementação dos métodos no arquivo “HelloWorldScene.cpp”. Inclua no final desse arquivo as seguintes linhas de código:

void HelloWorld::tocaSomJogadorPerdeu() {

    CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect(“MordidaJogador.mp3”);

}

void HelloWorld::tocaSomJogadorGanhou() {

    CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect(“MordidaInimigo.mp3”);

}

void HelloWorld::tocaSomAplausos() {

    CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect(“Aplausos.mp3”);

}

Agora que os métodos estão devidamente implementados, os chamaremos quando os competidores perderem. Claro que precisaremos tomar cuidado com a identificação de qual competidor ganhou. Como foi dito, dois efeitos somente são tocados quando o jogador ganha e o outo efeito somente é tocado quando o NPC ganha. Para tocar o efeito do tubarão comendo o NPC, seguido do efeito de aplausos, visto que o jogador ganhou, adicione as seguintes linhas de código:

scheduleOnce(schedule_selector(HelloWorld::tocaSomJogadorGanhou),0.3);

scheduleOnce(schedule_selector(HelloWorld::tocaSomAplausos),1.3);

logo abaixo dessas:

HelloWorld::paIA->runAction(CCAnimate::create(CCAnimation::createWithSpriteFrames(surfIA,0.15)));

CocosDenshion::SimpleAudioEngine::sharedEngine()->stopBackgroundMusic();

Para finalizar o artigo de hoje, faremos o efeito sonoro do tubarão comendo o jogador ser tocado quando o NPC ganha o jogo. Para isso, adicione a seguinte linha de código:

scheduleOnce(schedule_selector(HelloWorld::tocaSomJogadorPerdeu),0.3);

logo abaixo dessas:

HelloWorld::paJogador->runAction(CCAnimate::create(CCAnimation::createWithSpriteFrames(surfJog,0.15)));

CocosDenshion::SimpleAudioEngine::sharedEngine()->stopBackgroundMusic();

fanning_tubaraoAgora sim … se você compilar o código e executar o jogo, os efeitos sonoros serão tocados nos momentos certos. A música de fundo ficará tocando em um volume um pouco mais baixo durante toda a execução do jogo, até o momento em que um dos competidores perder. Será tocado um som quando um competidor rebater o tubarão. Por último, serão tocados os efeitos do tubarão devorando os surfistas quando o jogo terminar e, se o jogador ganhar, será tocado também o efeito de aplausos.

Vimos no artigo de hoje como adicionar os efeitos sonoros e a música de fundo no Shark Pong. Diminuímos o volume da música de fundo para 20% e implementamos os efeitos sonoros de rebatimento do tubarão, do tubarão devorando um dos surfistas e da finalização do jogo com aplausos caso o jogador ganhe.

Um grande abraço e até mais. []



Santiago Viertel

Formado em Bacharelado em Ciência da Computação (UDESC), mestre e doutorando em Análise de Algoritmos (UFPR). Atualmente é programador da Céu Games (8 anos). Possui a preferência por jogos de estratégia e de tiro em primeira pessoa. Jogando bastante DotA 2, Left 4 Dead 2 e Age of Empires II HD.


Show Buttons
Hide Buttons