# Como colocar efeitos sonoros e música num jogo de navegador

## Use os sons grátis incluídos ou envie seus arquivos MP3, WAV, OGG ou M4A e diga à IA quando cada um toca; o Go Bananas nivela o volume e cuida do celular.

O som é metade da sensação de um jogo. Uma moeda que tilinta, um pulo que faz "vush" e uma pancada que faz "tum" contam aos jogadores o que aconteceu sem eles lerem nada. A música cria o clima e faz um jogo curto parecer acabado. Este guia cobre os sons grátis que você pode usar agora mesmo, como enviar os seus, como pedir para a IA usá-los, o helper de áudio para desenvolvedores e como fazer tudo soar bem no celular.

## Por que o som importa nos jogos

- **Feedback.** Toda ação importante deve fazer um som: coletar, ser atingido, pontuar, perder uma vida. Os jogadores notam mais um som que falta do que um som mediano.
- **Sensação.** O mesmo pulo parece mais pesado ou mais leve dependendo do som. Efeitos curtos e marcantes deixam os controles mais responsivos.
- **Informação.** O som pode avisar sobre coisas fora da tela: um inimigo atrás de você, um cronômetro quase acabando.
- **Clima.** A música e o som de fundo dizem aos jogadores se o jogo é tenso, bobo ou tranquilo.

## Sons incluídos que você pode usar de graça

O Go Bananas tem um pequeno pacote de efeitos sonoros que qualquer pessoa pode usar nos próprios jogos, liberado sob CC0 (sem precisar de permissão nem de dar crédito). Cada um fica em `https://gobananas.co/sfx/<name>.mp3`:

| Nome | O que é |
| --- | --- |
| `gunshot` | Um tiro |
| `reload` | Uma arma sendo recarregada |
| `hit` | Um impacto |
| `footstep` | Um passo |
| `pickup` | Pegar alguma coisa |
| `menu_click` | Um clique de menu |
| `zombie_moan` | Um zumbi gemendo |
| `zombie_attack` | Um zumbi atacando |
| `zombie_death` | Um zumbi morrendo |
| `ambient_tension` | Um loop de fundo tenso de uns 10 segundos |

A IA não conhece esse pacote a menos que você conte, então coloque o endereço no seu pedido:

> Quando o jogador pegar uma chave, toque https://gobananas.co/sfx/pickup.mp3.

Sempre use o endereço completo, começando com `https://`. Os jogos rodam numa sandbox em que endereços curtos como `/sfx/pickup.mp3` não carregam.

## Enviando seus próprios sons

Você pode enviar efeitos sonoros, falas e músicas em [MP3](/formats/mp3), [WAV](/formats/wav), [OGG](/formats/ogg) ou [M4A](/formats/m4a). Use a janela **Upload Asset** (enviar arquivo), pela aba Assets (arquivos) ou pelo editor. Se você soltar um arquivo de áudio no painel de criação, essa janela abre para você. É preciso ter uma conta verificada, e você marca uma caixa confirmando que tem o direito de usar o áudio: obra sua, licenciada ou em domínio público.

| Limite | Valor |
| --- | --- |
| Tamanho do arquivo | 5 MB por arquivo |
| Duração | 120 segundos por arquivo |
| Armazenamento de áudio | 50 MB por conta |
| Capa e tags embutidas | 256 KB no máximo |

### O que o site faz com o seu áudio

Todo envio é processado do mesmo jeito, seja qual for o formato:

- **O volume é nivelado** em -16 LUFS, um nível padrão para jogos e streaming, então uma gravação baixinha e uma alta acabam no mesmo volume.
- **O silêncio do começo é cortado,** para o som tocar no instante em que é acionado. O silêncio do fim é mantido.
- **O áudio é convertido para MP3** a 44,1 kHz. Clipes de 5 segundos ou menos são tratados como efeitos sonoros e salvos em mono a 96 kbps; clipes mais longos são tratados como música e salvos em estéreo a 128 kbps.
- **Tags e capa são removidas.**
- **O arquivo original não é guardado,** só o MP3.

Você vê um aviso se a gravação estiver com clipping (distorcida nos pontos mais altos) ou se o volume dela já era baixo ou alto demais de início. Clipping não tem conserto depois, então vale exportar uma versão mais limpa.

### Corte e volume

Cada som nos seus arquivos tem um botão de play, uma forma de onda e a duração. Você pode cortar um som no app para manter só uma parte; o arquivo não é cortado, e o jogo toca só a parte que você manteve.

Na aba Assets do editor, **+ Attach to game** (anexar ao jogo) adiciona um som ao jogo que você está editando. Sons anexados ganham um controle de volume de 0 a 100, começando em 100, para você deixar a música mais baixa ou um passo mais suave sem mexer no código. As mudanças são salvas automaticamente.

## Pedindo para a IA usar seus sons

Digite **@** na caixa de criação ou de edição e escolha um som. O nome dele entra entre aspas, e você descreve quando ele toca:

> Toque "coin" quando o jogador coletar uma estrela, e "boing" quando ele pular. Deixe "forest-theme" em loop como música de fundo, com volume baixo.

Quando você cria um jogo, a IA fica sabendo de todos os sons que você enviou. Quando você edita um jogo com arquivos anexados, ela fica sabendo dos sons anexados, então anexe os que você quer que ela use.

## Para desenvolvedores: o helper de áudio

Todo jogo do Go Bananas recebe `window.__audio`, um pequeno helper que funciona na sandbox, libera o som no iPhone e segue o botão de mudo do site. Use-o em vez de `new Audio()` ou de criar seu próprio `AudioContext`.

```js
// O endereço de um som enviado vem do GAME_ASSETS (nome = nome do arquivo sem a extensão).
const coinUrl = window.GAME_ASSETS.audio['coin'].url;
const musicUrl = window.GAME_ASSETS.audio['forest-theme'].url;
const jumpUrl = 'https://gobananas.co/sfx/pickup.mp3';   // um som incluído

// Carregue os sons antes, para eles tocarem sem atraso.
Promise.all([__audio.load(coinUrl), __audio.load(jumpUrl)]);

// Comece o áudio no primeiro toque ou clique do jogador (necessário no iPhone).
startButton.addEventListener('click', () => {
  __audio.init();
  __audio.playMusic(musicUrl, { volume: 0.4, loop: true, fadeInMs: 1000 });
  startGame();
});

function onCoinCollected() {
  // Um tom um pouco diferente a cada vez evita que sons repetidos pareçam robóticos.
  __audio.play(coinUrl, { volume: 0.8, rate: 0.95 + Math.random() * 0.1 });
}
```

Os principais métodos:

- `init()`: chame a partir de um toque ou clique. Libera o áudio no iPhone.
- `load(url)`: baixa e decodifica um som e retorna uma promise. Carregue antes de tocar; um som que ainda não carregou só toca depois de ser decodificado.
- `play(url, { volume, pan, rate })`: toca um efeito sonoro. `pan` coloca o som à esquerda ou à direita, `rate` muda a velocidade e o tom.
- `play3D(url, x, y, z, camera, { volume, maxDist, rate })`: toca um som a partir de um ponto numa cena 3D, mais baixo com a distância.
- `playMusic(url, { volume, loop, fadeInMs })`: toca música. Por padrão, fica em loop, com volume 0.5 e um fade-in de meio segundo.
- `stopAll()`, `setMasterVolume(v)` e `setMuted(true ou false)`.

Sempre passe um endereço completo. Só o nome ou o ID de um som não funciona. O volume em que um som toca é o seu volume geral, vezes o controle da aba Assets, vezes o volume que você passa no código.

## Som no celular

- **Nada toca até o jogador tocar na tela.** Os celulares, principalmente os iPhones, bloqueiam o áudio até o jogador tocar na tela. Uma tela de "Toque para começar" que chama `__audio.init()` resolve.
- **O botão de mudo do site funciona em todo jogo.** Os jogadores podem silenciar qualquer jogo pelo botão de som do site, e o helper segue esse botão, então não faça um jogo que dependa do som para ser entendido.
- **Use arquivos pequenos.** Efeitos curtos e um loop de música compacto carregam mais rápido nos dados móveis.

## Dicas de mixagem

- **Deixe a música mais baixa que os efeitos.** Música com volume entre 0.3 e 0.5 deixa espaço para os sons que carregam informação.
- **Não empilhe cópias do mesmo som.** Se vinte moedas forem coletadas ao mesmo tempo, toque o som uma vez ou algumas vezes, não vinte.
- **Varie.** Uma pequena mudança aleatória no `rate` faz passos e golpes repetidos soarem naturais.
- **Dê a cada evento importante seu próprio som.** Os jogadores aprendem os sons rápido; se você usar o mesmo som para coisas diferentes, eles perdem essa informação.
- **Cuidado com a duração.** Efeitos sonoros funcionam melhor com menos de um segundo. Caudas longas atropelam o próximo som.
- **Faça loops limpos.** Uma música feita para repetir deve começar e terminar no mesmo ponto da batida.

## Leia também

- [Como criar um jogo](/guides/how-to-make-a-video-game)
- [Noções de game design](/guides/game-design-basics)
- [Como descrever um jogo para a IA criar o que você quer](/guides/how-to-describe-a-game)
- [Como fazer um jogo multiplayer para navegador](/guides/multiplayer-games)
- [Como fazer um jogo 3D para navegador](/guides/3d-games)
- [Como fazer jogos que funcionam no celular](/guides/games-on-phones)
- [Como publicar e compartilhar seu jogo](/guides/publish-and-share)
- [Como usar o Go Bananas pelo ChatGPT ou pelo Claude](/guides/chatgpt-and-claude)
- Formatos de arquivo: [MP3](/formats/mp3), [WAV](/formats/wav), [OGG](/formats/ogg), [M4A](/formats/m4a), [todos os formatos](/formats)
