11 KiB
Language: English | 日本語 | Português (BR) | Español | Русский | 简体中文 | हिन्दी
Godot MCP Pro — Skills para Assistentes de IA
Copie este arquivo para
.claude/skills.mdna raiz do seu projeto Godot para dar ao Claude Code o contexto completo de como usar o Godot MCP Pro de forma eficiente.
O que é o Godot MCP Pro?
Você tem acesso a 169 ferramentas MCP que se conectam diretamente ao editor Godot 4. Você pode criar cenas, escrever scripts, simular entrada do jogador, inspecionar jogos em execução e muito mais — tudo sem que o usuário precise sair desta conversa. Todas as alterações passam pelo sistema UndoRedo do Godot, então o usuário pode sempre usar Ctrl+Z.
Fluxos de Trabalho Essenciais
1. Explorar um Projeto
Sempre comece entendendo o projeto antes de fazer alterações:
get_project_info → nome do projeto, versão do Godot, renderizador, tamanho do viewport
get_filesystem_tree → estrutura de diretórios (use filter: "*.tscn" ou "*.gd")
get_scene_tree → hierarquia de nós da cena atualmente aberta
read_script → ler qualquer arquivo GDScript
get_project_settings → verificar configuração do projeto
2. Construir uma Cena 2D
create_scene → criar arquivo .tscn com tipo de nó raiz
add_node → adicionar nós filhos com propriedades
create_script → escrever GDScript para lógica do jogo
attach_script → anexar script a um nó
update_property → definir position, scale, modulate, etc.
save_scene → salvar no disco
Exemplo — criando um jogador:
create_scenecom root_typeCharacterBody2D, pathres://scenes/player.tscnadd_nodetipoSprite2Dcom propriedade textureadd_nodetipoCollisionShape2Dadd_resourcepara atribuir uma shape (ex:RectangleShape2D) ao CollisionShape2Dcreate_scriptcom lógica de movimentoattach_scriptao nó raizsave_scene
3. Construir uma Cena 3D
create_scene → root_type: Node3D
add_mesh_instance → adicionar primitivas (box, sphere, cylinder, plane) ou importar .glb/.gltf
setup_lighting → adicionar DirectionalLight3D, OmniLight3D ou SpotLight3D
setup_environment → céu, luz ambiente, neblina, tonemap
setup_camera_3d → câmera com SpringArm3D opcional para terceira pessoa
set_material_3d → materiais PBR (albedo, metallic, roughness, emission)
setup_collision → adicionar shapes de colisão a corpos físicos
setup_physics_body → configurar massa, atrito, gravidade
4. Escrever e Editar Scripts
create_script → criar novo arquivo .gd (forneça o conteúdo completo)
edit_script → modificar scripts existentes
- Use `replacements: [{search: "old code", replace: "new code"}]` para edições pontuais
- Use `content` para substituição completa do arquivo
- Use `insert_at_line` + `text` para inserir código
validate_script → verificar erros de sintaxe sem executar
read_script → ler conteúdo atual antes de editar
5. Testar e Depurar
play_scene → iniciar o jogo (mode: "current", "main" ou caminho do arquivo)
get_game_screenshot → ver como o jogo está neste momento
capture_frames → capturar múltiplos frames para observar movimento/animação
get_game_scene_tree → inspecionar a árvore de cena em tempo de execução
get_game_node_properties → ler valores em runtime (position, health, state, etc.)
set_game_node_property → modificar valores no jogo em execução
simulate_key → pressionar teclas (WASD, SPACE, etc.) com duração
simulate_mouse_click → clicar em coordenadas do viewport
simulate_action → disparar ações do InputMap (move_left, jump, etc.)
get_editor_errors → verificar erros de execução
stop_scene → parar o jogo
Loop de playtesting:
play_scene→ iniciar o jogoget_game_screenshot→ ver estado atualsimulate_key/simulate_action→ interagir com o jogocapture_frames→ observar comportamento ao longo do tempoget_game_node_properties→ verificar valores específicosstop_scene→ parar quando terminar- Corrigir problemas nos scripts → repetir
6. Animações
# Certifique-se de que existe um nó AnimationPlayer na cena
create_animation → nova animação com duração e modo de loop
add_animation_track → adicionar tracks de property/transform/method
set_animation_keyframe → inserir keyframes em tempos específicos
get_animation_info → inspecionar animações existentes
Exemplo — sprite quicando:
create_animationnamebounce, length1.0, loop_mode1(loop linear)add_animation_tracktrack_pathSprite2D:position, track_typevalueset_animation_keyframetime0.0, valueVector2(0, 0)set_animation_keyframetime0.5, valueVector2(0, -50)set_animation_keyframetime1.0, valueVector2(0, 0)
7. UI / HUD
add_node → Control, Label, Button, TextureRect, etc.
set_anchor_preset → posicionar Controls (full_rect, center, bottom_wide, etc.)
set_theme_color → alterar font_color, etc.
set_theme_font_size → ajustar tamanho do texto
set_theme_stylebox → fundos, bordas, cantos arredondados
connect_signal → conectar pressed do button, value_changed, etc.
8. TileMap
tilemap_get_info → verificar fontes do tile set e layout do atlas
tilemap_set_cell → colocar tiles individuais
tilemap_fill_rect → preencher regiões retangulares
tilemap_get_used_cells → ver o que já está colocado
tilemap_clear → limpar todas as células
9. Áudio
add_audio_bus → criar buses de áudio (SFX, Music, UI)
set_audio_bus → ajustar volume, solo, mute
add_audio_bus_effect → adicionar reverb, delay, compressor, etc.
add_audio_player → adicionar nós AudioStreamPlayer(2D/3D)
10. Configuração do Projeto
set_project_setting → alterar tamanho do viewport, configurações de física, etc.
set_input_action → definir mapeamentos de entrada (move_left → KEY_A, etc.)
add_autoload → registrar singletons autoload
set_physics_layers → nomear camadas de colisão (player, enemy, world, etc.)
Regras Importantes e Armadilhas
Valores de Propriedade
Propriedades são parseadas automaticamente de strings. Use estes formatos:
- Vector2:
"Vector2(100, 200)" - Vector3:
"Vector3(1, 2, 3)" - Color:
"Color(1, 0, 0, 1)"ou"#ff0000" - Bool:
"true"/"false" - Números:
"42","3.14" - Enums: Use valores inteiros (ex:
0para o primeiro valor do enum)
Nunca Edite project.godot Diretamente
O editor Godot sobrescreve project.godot constantemente. Sempre use set_project_setting para alterar configurações do projeto.
Anotações de Tipo em GDScript
Ao escrever GDScript com loops for sobre arrays sem tipo, use anotações de tipo explícitas:
# RUIM — vai causar erros
for item in some_untyped_array:
var x := item.value # inferência de tipo falha
# BOM
for i in range(some_untyped_array.size()):
var item: Dictionary = some_untyped_array[i]
var x: int = item.value
Alterações em Scripts Precisam de Reload
Após criar ou modificar scripts significativamente, use reload_project para garantir que o Godot reconheça as alterações. Isso é especialmente importante após create_script.
Dicas para simulate_key
- Use durações curtas (0.3–0.5 segundos) para movimentos precisos
- Durações longas (1+ segundo) causam overshooting
- Para testes de gameplay, prefira
simulate_actionem vez desimulate_keyquando ações do InputMap estiverem definidas
simulate_mouse_click
- O padrão
auto_release: trueenvia press e release — necessário para botões de UI - Botões de UI disparam no release, então ambos os eventos são necessários
Limitações do execute_game_script
- Sem funções aninhadas (
funcdentro defunc) — causa erro de compilação - Use
.get("property")em vez de.propertypara acesso dinâmico - Erros de runtime pausam o debugger (continuado automaticamente, mas evite se possível)
Colisão e Áreas de Coleta
- Para itens coletáveis, use Area3D/Area2D com raio >= 1.5
- Raios menores são quase impossíveis de acionar com entrada simulada
Salve com Frequência
Chame save_scene após fazer alterações significativas. Alterações não salvas podem ser perdidas se o editor recarregar.
Ferramentas de Análise e Depuração
Quando algo der errado, use estas ferramentas para investigar:
get_editor_errors → verificar erros de script e exceções de runtime
get_output_log → ler saída de print() e avisos
analyze_scene_complexity → encontrar gargalos de performance
analyze_signal_flow → visualizar conexões de signals
detect_circular_dependencies → encontrar referências circulares de script/cena
find_unused_resources → limpar arquivos não utilizados
get_performance_monitors → FPS, memória, draw calls, estatísticas de física
Testes e QA
run_test_scenario → definir e executar sequências de teste automatizadas
assert_node_state → verificar se propriedades de nós correspondem aos valores esperados
assert_screen_text → verificar se texto está exibido na tela
compare_screenshots → teste de regressão visual (use caminhos de arquivo, não base64)
run_stress_test → gerar muitos nós para testar performance
Padrões Avançados
Operações entre Cenas
cross_scene_set_property → modificar nós em cenas que não estão abertas atualmente
find_node_references → encontrar todos os arquivos que referenciam um padrão
batch_set_property → definir uma propriedade em todos os nós de um tipo
Fluxo de Trabalho com Shaders
create_shader → escrever código shader estilo GLSL
assign_shader_material → aplicar a um nó
set_shader_param → ajustar uniforms em runtime
get_shader_params → inspecionar valores atuais
Navegação (3D)
setup_navigation_region → definir área caminhável
bake_navigation_mesh → gerar navmesh
setup_navigation_agent → adicionar pathfinding a personagens
AnimationTree e Máquinas de Estado
create_animation_tree → configurar AnimationTree com máquina de estado ou blend tree
add_state_machine_state → adicionar estados (idle, walk, run, jump)
add_state_machine_transition → definir transições entre estados
set_tree_parameter → controlar parâmetros de blend
Ordem de Fluxo de Trabalho Recomendada
Ao construir um novo jogo do zero:
- Configuração do projeto —
get_project_info,set_project_setting(viewport, física) - Mapeamento de entrada —
set_input_actionpara todos os controles do jogador - Cena principal —
create_scene, definir como cena principal - Jogador — criar cena do jogador com sprite, colisão, script
- Nível/Mundo — construir o ambiente (TileMap, meshes 3D, etc.)
- Lógica do jogo — scripts para inimigos, itens, UI
- Áudio — configurar buses, adicionar audio players
- Playtesting —
play_scene, testar com entrada simulada, corrigir bugs - Polimento — animações, partículas, shaders, temas
- Exportação —
list_export_presets,export_project