Voltar para o Blog
Quest Log

Godot Mobile: Guia para Fazer Jogo de Celular na Godot 4

Celular exibindo um jogo 2D feito na Godot com joystick virtual desenhado na tela

Godot mobile na prática: configure o projeto para celular, controles de toque, performance em aparelho fraco, teste no dispositivo e exporte para Android.

Ferramenta:Godot

Godot mobile é uma dupla que combina muito melhor do que a maioria dos iniciantes imagina. A Godot 4 exporta para Android e iOS, tem um renderizador feito para celular, lê toque nativamente e instala o jogo no seu aparelho com um clique, tudo de graça e sem royalties. O que falta para a maior parte das pessoas não é ferramenta, é um mapa: o que configurar no projeto, como fazer controle de toque que presta, o que muda na performance e qual é o caminho até o APK instalado. Este guia é esse mapa, do projeto vazio ao jogo rodando no seu celular.

Uma coisa antes de começar: jogo de celular não é jogo de PC espremido numa tela menor. A tela é pequena, o dedo cobre parte dela, o hardware varia de monstro a sucata e a sessão de jogo dura dois minutos na fila do mercado. As decisões abaixo existem por causa dessas quatro realidades.

Configurando um projeto Godot mobile do jeito certo

A primeira decisão é o renderizador. Ao criar o projeto, a Godot 4 oferece três métodos de renderização: Forward+, Mobile e Compatibility. Para jogo de celular, esqueça o Forward+, que é pensado para desktop. A escolha fica entre Mobile, que aproveita melhor os recursos de aparelhos modernos, e Compatibility, que usa OpenGL ES e roda em praticamente qualquer Android que ainda liga. Se o seu jogo é 2D e você quer alcançar o maior número de aparelhos, Compatibility é a escolha segura. Você pode trocar depois em Project Settings, em Rendering, na opção Renderer, então essa decisão não é uma prisão.

A segunda decisão é resolução e orientação. Em Project Settings, na seção Display e depois Window, defina o Viewport Width e o Viewport Height com a sua resolução base. Para jogo em retrato, 720x1280 é um ponto de partida honesto: leve o suficiente para aparelho fraco e nítido o suficiente para a maioria das telas. Logo abaixo, na parte de Handheld, defina a Orientation: portrait para retrato, landscape para paisagem, ou sensor se quiser que o jogo gire com o aparelho. Jogo casual de uma mão funciona melhor em retrato; jogo com dois polegares na tela, como plataforma ou shooter, pede paisagem.

A terceira decisão é o stretch, e é aqui que muita gente se perde. Celulares têm proporções de tela diferentes entre si, de 16:9 até 22:9, então o seu jogo precisa se esticar sem distorcer. Em Project Settings, na seção Display, Window, parte de Stretch, configure o Mode como canvas_items e o Aspect como expand. Com canvas_items, a Godot desenha tudo na resolução real da tela, então nada fica borrado. Com expand, telas mais compridas que a sua resolução base mostram mais área de jogo em vez de barras pretas. A contrapartida é que a sua interface precisa usar âncoras e containers para se posicionar em relação às bordas, e não em posição fixa, porque a área visível muda de aparelho para aparelho.

Por último, uma configuração pequena que salva o seu fluxo de trabalho: em Project Settings, Input Devices, Pointing, ative Emulate Touch From Mouse. Com isso, o clique do mouse no editor gera eventos de toque, e você testa a lógica de toque sem pegar o celular a cada mudança.

Controles de toque que funcionam em tela pequena

Toque não é mouse. O dedo é impreciso, cobre o que está embaixo dele e não tem hover. Na Godot, o toque chega pelo evento InputEventScreenTouch, que diz onde o dedo encostou ou soltou, e pelo InputEventScreenDrag, que diz para onde ele arrastou. Um padrão simples e robusto para jogo casual é tocar para definir o destino e deixar o personagem ir até lá:

extends CharacterBody2D

@export var speed: float = 400.0

var _destino: Vector2 = Vector2.ZERO
var _movendo: bool = false

func _input(event: InputEvent) -> void:
    if event is InputEventScreenTouch and event.pressed:
        _destino = event.position
        _movendo = true

func _physics_process(delta: float) -> void:
    if not _movendo:
        return
    global_position = global_position.move_toward(_destino, speed * delta)
    if global_position.distance_to(_destino) < 4.0:
        _movendo = false

Repare nos tipos em tudo: speed é float exportado, _destino é Vector2, a função recebe delta: float e devolve void. Em projeto mobile isso importa dobrado, porque erro silencioso de tipo que passaria despercebido no desktop vira bug difícil de reproduzir no aparelho do jogador.

Para botões na tela, a Godot tem o nó TouchScreenButton, que diferente do Button comum aceita múltiplos toques simultâneos, essencial para andar e pular ao mesmo tempo. E se o seu jogo pede movimento analógico, o caminho é um joystick virtual. Esse componente merece um texto próprio, e ele existe: em controles touch na Godot com joystick virtual eu mostro a construção completa, com zona morta e âncora dinâmica.

Duas regras de design que valem para qualquer controle de toque: alvos de toque generosos, porque um botão de 40 pixels que funciona com mouse é uma tortura com o polegar, e feedback imediato, porque sem o clique físico do botão o jogador precisa ver ou ouvir que o toque registrou.

Se você está montando seu primeiro projeto mobile e sente que está juntando peças soltas de tutorial sem entender o todo, esse é exatamente o tipo de buraco que um caminho estruturado fecha. Quem quer aprender Godot a sério, do primeiro nó até o jogo publicado, se beneficia muito mais de uma trilha com ordem e projetos completos do que de mais uma playlist aleatória.

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

Performance em celular fraco

O celular que vai rodar o seu jogo quase nunca é parecido com o computador em que você o desenvolve. A regra número um da performance mobile é essa: teste no aparelho mais fraco que você conseguir, desde cedo. Se roda liso ali, roda em qualquer lugar.

Dito isso, alguns hábitos resolvem a maior parte dos problemas antes de eles existirem. Primeiro, pare de processar o que não está na tela. O nó VisibleOnScreenNotifier2D emite sinais quando o objeto entra e sai da área visível, e você usa isso para desligar o processamento de quem saiu:

extends Node2D

@onready var notificador: VisibleOnScreenNotifier2D = $VisibleOnScreenNotifier2D

func _ready() -> void:
    notificador.screen_exited.connect(_ao_sair_da_tela)
    notificador.screen_entered.connect(_ao_entrar_na_tela)

func _ao_sair_da_tela() -> void:
    set_process(false)
    set_physics_process(false)

func _ao_entrar_na_tela() -> void:
    set_process(true)
    set_physics_process(true)

Segundo, cuidado com o que roda todo frame. Função _process com busca de nó, alocação de array ou cálculo pesado dentro dela é o assassino clássico de frame rate em aparelho fraco. Guarde referências com @onready, calcule uma vez e reutilize.

Terceiro, respeite a GPU modesta: texturas menores, menos partículas, menos luzes em tempo real (em 2D mobile, idealmente nenhuma), e atenção especial a overdraw, que é desenhar muitas camadas transparentes umas sobre as outras. Fundos com cinco camadas de parallax semitransparente custam caro em GPU de entrada.

Quarto, meça antes de otimizar. Com o jogo rodando no aparelho pelo deploy remoto, o painel Debugger do editor mostra os monitores de FPS, tempo de frame, draw calls e memória. Otimizar sem medir é chute, e chute costuma mirar no lugar errado.

Um detalhe que poupa bateria e reclamação nas lojas: celular agradece limite de FPS. Travar em 60 com Engine.max_fps = 60 no _ready de um autoload evita que cenas leves disparem a 120 FPS e esquentem o aparelho à toa.

Testando no aparelho de verdade

Emular toque com mouse serve para o dia a dia, mas três coisas só aparecem no aparelho físico: a sensação real do controle sob o dedo, a performance verdadeira e os bugs específicos de Android. A boa notícia é que a Godot torna esse teste quase instantâneo com o deploy de um clique.

O caminho: instale os export templates da Godot (menu Editor, Manage Export Templates), configure o Android SDK nas configurações do editor, ative a depuração USB no celular (nas opções de desenvolvedor do Android) e conecte o cabo. Com um preset de exportação Android criado no projeto, aparece um ícone de Android no canto superior direito do editor. Um clique ali e a Godot monta o pacote, instala no aparelho e roda, com o debugger do editor conectado ao jogo. Erros, prints e monitores de performance aparecem na sua tela enquanto você joga no celular.

Esse ciclo de segundos muda a qualidade do seu jogo, porque você passa a sentir o controle no dedo a cada ajuste, em vez de descobrir no final que o pulo que parecia ótimo com teclado é desajeitado na tela.

Exportando para Android e chegando à loja

Com o jogo pronto e testado, falta o pacote final. A exportação para Android tem seus próprios detalhes: keystore de assinatura, formato AAB para a Play Store, permissões, versionamento e as pegadinhas de cada etapa. Eu descrevo esse processo completo, passo a passo, em como exportar seu jogo da Godot para Android, então aqui fica só o mapa: você cria o preset de exportação, assina o pacote com uma keystore que é sua (e que você nunca perde, porque sem ela não há atualização), e gera o AAB que a loja pede.

E depois do arquivo gerado vem a parte burocrática: conta de desenvolvedor, ficha da loja, testes exigidos pelo Google e lançamento. Esse caminho está mapeado em como colocar seu jogo da Godot na Play Store.

Sobre iOS: a Godot também exporta, mas o processo exige um Mac para a etapa final de assinatura e publicação, além da conta anual de desenvolvedor da Apple. Se o seu primeiro alvo é aprender o fluxo completo, Android é o caminho de menor atrito.

O checklist do projeto mobile

Fechando com o resumo prático do que este guia cobriu, na ordem em que você vai usar: renderizador Mobile ou Compatibility na criação do projeto; resolução base definida com stretch canvas_items e aspect expand; orientação travada em portrait ou landscape conforme o design; Emulate Touch From Mouse ligado para testar no editor; controles pensados para dedo, com alvos grandes e feedback imediato; processamento desligado fora da tela e nada pesado em _process; teste cedo e frequente num aparelho fraco via deploy de um clique; e exportação assinada rumo à Play Store.

Nenhum desses passos é difícil isoladamente. O valor está em fazer todos, na ordem certa, antes de o problema aparecer. Celular é o maior mercado de jogos do mundo e a Godot te dá o caminho inteiro sem pedir um real de licença. O resto é você começar o projeto.

Perguntas frequentes

A Godot serve para fazer jogo de celular?

Serve, e muito bem para jogos 2D. A Godot 4 exporta para Android e iOS, tem um renderizador Mobile dedicado, um renderizador Compatibility que roda em aparelho antigo, eventos de toque nativos e deploy com um clique direto no aparelho via USB. Para jogo 2D de celular, que é a maioria do mercado mobile, ela cobre o fluxo inteiro sem custo de licença.

Qual resolução usar num jogo mobile na Godot?

Não existe uma resolução que cubra todos os aparelhos, porque as proporções de tela variam de 16:9 até 22:9. O caminho é escolher uma resolução base (720x1280 é um ponto de partida comum para retrato), usar stretch mode canvas_items e aspect expand, e desenhar a interface com âncoras para que ela se adapte a qualquer proporção.

Preciso de um celular top de linha para testar meu jogo?

Não, e é até melhor que não seja. O erro clássico é testar só em aparelho bom e descobrir no lançamento que o jogo engasga na maior parte dos celulares reais. Teste no aparelho mais fraco que você conseguir. Se o jogo roda liso ali, roda em qualquer lugar.

Dá para testar o jogo mobile sem exportar o APK toda hora?

Dá. A Godot tem deploy com um clique: com o aparelho conectado via USB e a depuração USB ativada, o botão de Android na barra do editor instala e roda o jogo direto no celular, com o debugger do editor conectado. Você vê erros e o monitor de performance em tempo real enquanto joga no aparelho.