Voltar para o Blog
Quest Log

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

Celular com um jogo feito na Godot exibindo um banner de anúncio na parte de baixo da tela

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.

Ferramenta:Godot

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.

Curso de Godot
Quer fazer seu primeiro jogo na Godot?

No curso de Godot da CursoGame.Dev você vai do zero ao primeiro jogo, com um desafio prático em cada level e suporte individual no WhatsApp quando travar.

Conhecer o curso de Godot
Suporte no WhatsAppAcesso vitalícioGarantia de 7 dias

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.