Godot AdMob: Como Colocar Anúncios no Seu Jogo Mobile

Godot AdMob na prática: o plugin da Poing Studios, App ID, banner, intersticial e recompensado com IDs de teste, e as políticas que protegem sua conta.
Godot AdMob é daquelas buscas que todo desenvolvedor mobile faz no dia em que o jogo começa a ficar pronto e a pergunta "como isso vira dinheiro?" aparece. A resposta curta: dá para colocar anúncios do AdMob num jogo Godot 4, funciona bem, e o caminho passa por um plugin da comunidade, meia dúzia de configurações e uma disciplina de teste que protege a sua conta. A resposta longa, com o passo a passo, os IDs de teste oficiais do Google e as políticas que você precisa respeitar para não perder tudo, é este post.
Antes do como, um parágrafo de expectativa. Anúncio rende pouco por usuário e só vira receita de verdade com volume e retenção. Se você ainda não fez essa conta, leia quanto paga o AdMob num jogo mobile antes de investir dias nessa integração, para decidir com números honestos se ela faz sentido agora. Se faz, siga adiante.
O plugin Godot AdMob da Poing Studios
A Godot não tem suporte nativo ao AdMob, nem existe plugin oficial do Google para ela. O que existe, e funciona, é o plugin da comunidade mantido pela Poing Studios: open source, gratuito, com suporte a Godot 4, Android e iOS, e cobertura dos três formatos que importam (banner, intersticial e recompensado). É a opção consolidada da comunidade há anos, com repositório ativo no GitHub e documentação própria. Quando alguém pergunta "como colocar AdMob na Godot", a resposta prática é esse plugin.
A instalação tem duas partes, e entender isso evita metade dos problemas de fórum. A primeira parte é o plugin do editor, que você baixa pelo Asset Library dentro da própria Godot ou pela página de releases do projeto no GitHub, coloca na pasta addons do projeto e ativa em Project Settings, na aba Plugins. Essa parte adiciona a interface de configuração e a API que o seu GDScript vai chamar. A segunda parte é a dependência nativa de cada plataforma: para o Android, o pacote que o plugin fornece para a build (baixado pela própria interface do plugin ou junto do release), que precisa estar presente quando você exporta, com o preset de exportação Android configurado para usar o build Gradle. Sem a parte nativa, o jogo roda normalmente e os anúncios simplesmente nunca chegam, sem erro visível, que é o sintoma clássico de instalação pela metade.
Como versões e detalhes de instalação mudam entre releases, a regra de ouro é seguir a documentação oficial do plugin para a sua versão exata da Godot. O que este post te dá é o mapa do fluxo e os pontos onde os erros acontecem.
Configurando o App ID e os IDs de teste
No painel do AdMob você cria um app e recebe um App ID, aquele código no formato ca-app-pub-XXXXXXXXXXXXXXXX~XXXXXXXXXX. Dentro do app, você cria unidades de anúncio (ad units), uma para cada formato que for usar, e cada uma ganha o próprio ID. O App ID identifica o seu jogo para o SDK do Google e entra na configuração do plugin, que o injeta no manifesto do Android na exportação. Os IDs de unidade entram no seu código, um por formato.
Agora a parte que protege a sua conta: durante o desenvolvimento, você nunca usa os seus IDs reais. O Google publica IDs de teste oficiais exatamente para isso, que sempre devolvem anúncios de demonstração e não geram impressão inválida. Os de Android:
# ids_de_anuncio.gd
# IDs de TESTE oficiais do Google (Android). Troque pelos seus só na build de produção.
extends Node
const APP_ID_TESTE: String = "ca-app-pub-3940256099942544~3347511713"
const BANNER_TESTE: String = "ca-app-pub-3940256099942544/6300978111"
const INTERSTICIAL_TESTE: String = "ca-app-pub-3940256099942544/1033173712"
const RECOMPENSADO_TESTE: String = "ca-app-pub-3940256099942544/5224354917"
Por que tanta cerimônia? Porque clicar nos próprios anúncios, mesmo sem querer, durante o teste, é atividade inválida aos olhos do Google, e atividade inválida é o motivo número um de suspensão de conta. Conta suspensa de AdMob raramente volta. O custo de usar ID de teste é zero; o custo de não usar pode ser a conta inteira.
Chegando perto do lançamento, quando você precisar validar com os IDs reais, o caminho certo é cadastrar o seu aparelho como dispositivo de teste no painel do AdMob, o que faz os seus IDs reais devolverem anúncios de demonstração só para aquele aparelho.
Se nesse ponto você está sentindo que monetização é só uma das dezenas de peças que precisam se encaixar para um jogo chegar inteiro na loja, você está certo. Quem quer aprender Godot a sério, com um caminho que vai da base da engine até o jogo publicado e monetizado, economiza meses de tentativa e erro estudando numa trilha estruturada em vez de colar pedaços de tutorial.
Banner, intersticial e recompensado com GDScript tipado
Com o plugin instalado e os IDs de teste no lugar, a integração no seu código segue o mesmo desenho para qualquer formato: inicializar o SDK uma vez no começo do jogo, carregar o anúncio com antecedência, mostrar no momento certo e recarregar depois de exibir. Os nomes exatos de método e sinal variam com a versão do plugin, então confirme na documentação da sua versão; o desenho abaixo é o que não muda.
O banner é o mais simples: você cria a unidade apontando para o ID, define a posição (topo ou base da tela) e manda exibir. Ele fica visível continuamente, então o lugar dele é menu e tela de pausa, nunca sobre a área de jogo. Dois cuidados práticos: teste em mais de um aparelho, porque a altura do banner e os recortes de tela (notch e barra de gestos) variam e podem fazer o anúncio cobrir um botão seu em certos celulares; e esconda o banner ao entrar no gameplay em vez de destruir e recriar a unidade a cada tela, que é desperdício de requisição.
O intersticial é tela cheia e aparece em transições. O erro clássico é carregar na hora de mostrar, o que gera atraso e tela preta. O certo é carregar com antecedência e só mostrar se estiver pronto. A lógica de frequência é sua, não do plugin, e um autoload tipado resolve bem:
# gerenciador_de_ads.gd (autoload)
extends Node
const MORTES_POR_INTERSTICIAL: int = 3
var intersticial_pronto: bool = false
var _mortes_desde_o_ultimo: int = 0
func registrar_morte() -> void:
_mortes_desde_o_ultimo += 1
if _mortes_desde_o_ultimo >= MORTES_POR_INTERSTICIAL and intersticial_pronto:
_mostrar_intersticial()
_mortes_desde_o_ultimo = 0
func _mostrar_intersticial() -> void:
intersticial_pronto = false
# Aqui entra a chamada de exibição do plugin.
# Depois do fechamento, recarregue o próximo e marque intersticial_pronto = true.
pass
Repare que o estado intersticial_pronto só vira verdadeiro quando o plugin confirmar o carregamento (via sinal), e vira falso na hora de exibir. Esse pequeno cuidado elimina a categoria inteira de bugs de "mandei mostrar e não tinha anúncio".
O recompensado é o formato mais valioso e o único em que o jogador pede o anúncio: assistir um vídeo em troca de vida extra, moeda dobrada, continuar da fase. A regra inegociável é que a recompensa só é concedida quando o plugin emite o sinal de recompensa ganha, e não quando o anúncio abre, porque o jogador pode fechar no meio:
# No mesmo autoload: a recompensa só sai no sinal de conclusão.
signal recompensa_concedida(quantidade: int)
func _ao_ganhar_recompensa(quantidade: int) -> void:
recompensa_concedida.emit(quantidade)
O resto do jogo escuta recompensa_concedida e entrega a moeda, a vida ou o continue. Com essa separação, trocar de rede de anúncio no futuro mexe num arquivo só. E não esqueça o caso em que o anúncio não carrega, seja por falta de internet ou por fill rate baixo: o botão de "assistir e dobrar" só deve aparecer quando houver recompensado carregado, porque botão que promete e não cumpre é a forma mais rápida de ensinar o jogador a ignorar os seus anúncios.
As políticas que mantêm a sua conta viva
A parte técnica do AdMob é a parte fácil. O que derruba desenvolvedor é política, e vale listar as que mais pegam jogo indie. Nunca clique nos próprios anúncios nem peça para amigos clicarem, porque o sistema de detecção de atividade inválida do Google é implacável e a suspensão costuma ser definitiva. Não posicione anúncio onde o clique acidental é provável, como colado em botão de gameplay ou aparecendo de surpresa embaixo do dedo. Não mostre intersticial em momento inesperado, como no meio da ação ou em loop na inicialização. E se o seu jogo pode atrair crianças, o enquadramento nas regras de público infantil muda o que pode ser veiculado e como, e ignorar isso é risco de conta e de loja ao mesmo tempo.
Esse assunto rende mais do que um parágrafo, e o detalhamento do que o Google pune e de como se manter no lado seguro está em políticas do AdMob: como evitar conta suspensa. Leia antes de publicar, não depois do e-mail de suspensão.
Depois do primeiro anúncio funcionando
Com banner, intersticial e recompensado rodando com IDs de teste, o caminho até a produção é curto: troque pelos seus IDs reais na build final, exporte, publique e acompanhe o painel. A partir daí as perguntas mudam de "como fazer funcionar" para "como render mais", e a primeira resposta madura é mediação: colocar redes de anúncio para competir pelo mesmo espaço e deixar o leilão puxar o eCPM para cima. Quando o seu jogo tiver volume de impressões de verdade, mediação de anúncios em jogo mobile é o próximo passo natural.
Até lá, o resumo que importa: plugin da Poing Studios instalado nas duas partes, App ID configurado, IDs de teste durante todo o desenvolvimento, recompensado como formato principal, frequência de intersticial controlada por você, e políticas lidas antes do lançamento. É menos glamoroso do que a promessa de renda passiva dos vídeos de YouTube, e é exatamente o que funciona.
Perguntas frequentes
A Godot tem suporte oficial ao AdMob?
Não existe plugin oficial da Godot nem do Google para AdMob. O caminho consolidado é o plugin da comunidade mantido pela Poing Studios, open source, com suporte a Godot 4, Android e iOS, cobrindo banner, intersticial e recompensado. É o plugin mais usado pela comunidade para essa tarefa.
Posso testar os anúncios com meus IDs reais?
Não. Testar com ID real gera impressões e cliques inválidos na sua própria conta, e isso é exatamente o que o Google procura para suspender contas. Durante todo o desenvolvimento, use os IDs de teste oficiais do Google ou cadastre seu aparelho como dispositivo de teste. ID real só entra na build de produção que vai para a loja.
Qual formato de anúncio rende mais num jogo?
Em geral o recompensado tem o eCPM mais alto, porque o jogador escolhe assistir em troca de uma recompensa e o anunciante paga mais por essa atenção voluntária. O intersticial fica no meio e o banner rende pouco por impressão, compensando apenas pelo volume. Além de render mais, o recompensado é o formato que menos irrita o jogador, porque é opcional.
Quantos anúncios posso mostrar sem afastar o jogador?
Menos do que a ansiedade de receita sugere. Uma regra prática que funciona: recompensado sempre disponível mas nunca obrigatório, intersticial no máximo a cada poucos minutos de jogo e nunca em momento de tensão, e banner só em telas de menu, nunca durante o gameplay. Anúncio demais derruba a retenção, e sem retenção não há impressão nenhuma.


