将原 claude-dev-stack 目录拆分为独立的 Windows 和 WSL 部署栈,便于分别维护和使用。 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
12 KiB
Language: English | 日本語 | Português (BR) | Español | Русский | 简体中文 | हिन्दी
Godot MCP Pro — Skills para Asistentes de IA
Copia este archivo a
.claude/skills.mden la raíz de tu proyecto Godot para darle a Claude Code el contexto completo sobre cómo usar Godot MCP Pro de forma efectiva.
¿Qué es Godot MCP Pro?
Tienes acceso a 169 herramientas MCP que se conectan directamente al editor de Godot 4. Puedes crear escenas, escribir scripts, simular entrada del jugador, inspeccionar juegos en ejecución y más — todo sin que el usuario salga de esta conversación. Cada cambio pasa por el sistema UndoRedo de Godot, así que el usuario siempre puede hacer Ctrl+Z.
Flujos de Trabajo Esenciales
1. Explorar un Proyecto
Siempre empieza entendiendo el proyecto antes de hacer cambios:
get_project_info → nombre del proyecto, versión de Godot, renderizador, tamaño del viewport
get_filesystem_tree → estructura de directorios (usa filter: "*.tscn" o "*.gd")
get_scene_tree → jerarquía de nodos de la escena abierta actualmente
read_script → leer cualquier archivo GDScript
get_project_settings → revisar la configuración del proyecto
2. Construir una Escena 2D
create_scene → crear archivo .tscn con tipo de nodo raíz
add_node → agregar nodos hijos con propiedades
create_script → escribir GDScript para lógica del juego
attach_script → adjuntar script a un nodo
update_property → establecer position, scale, modulate, etc.
save_scene → guardar en disco
Ejemplo — creando un jugador:
create_scenecon root_typeCharacterBody2D, pathres://scenes/player.tscnadd_nodetipoSprite2Dcon propiedad textureadd_nodetipoCollisionShape2Dadd_resourcepara asignar una shape (ej:RectangleShape2D) al CollisionShape2Dcreate_scriptcon lógica de movimientoattach_scriptal nodo raízsave_scene
3. Construir una Escena 3D
create_scene → root_type: Node3D
add_mesh_instance → agregar primitivas (box, sphere, cylinder, plane) o importar .glb/.gltf
setup_lighting → agregar DirectionalLight3D, OmniLight3D o SpotLight3D
setup_environment → cielo, luz ambiental, niebla, tonemap
setup_camera_3d → cámara con SpringArm3D opcional para tercera persona
set_material_3d → materiales PBR (albedo, metallic, roughness, emission)
setup_collision → agregar shapes de colisión a cuerpos físicos
setup_physics_body → configurar masa, fricción, gravedad
4. Escribir y Editar Scripts
create_script → crear nuevo archivo .gd (proporciona el contenido completo)
edit_script → modificar scripts existentes
- Usa `replacements: [{search: "old code", replace: "new code"}]` para ediciones específicas
- Usa `content` para reemplazo completo del archivo
- Usa `insert_at_line` + `text` para insertar código
validate_script → verificar errores de sintaxis sin ejecutar
read_script → leer contenido actual antes de editar
5. Probar y Depurar
play_scene → lanzar el juego (mode: "current", "main" o ruta de archivo)
get_game_screenshot → ver cómo luce el juego en este momento
capture_frames → capturar múltiples frames para observar movimiento/animación
get_game_scene_tree → inspeccionar el árbol de escena en tiempo de ejecución
get_game_node_properties → leer valores en runtime (position, health, state, etc.)
set_game_node_property → modificar valores en el juego en ejecución
simulate_key → presionar teclas (WASD, SPACE, etc.) con duración
simulate_mouse_click → hacer clic en coordenadas del viewport
simulate_action → disparar acciones del InputMap (move_left, jump, etc.)
get_editor_errors → revisar errores de ejecución
stop_scene → detener el juego
Ciclo de playtesting:
play_scene→ iniciar el juegoget_game_screenshot→ ver estado actualsimulate_key/simulate_action→ interactuar con el juegocapture_frames→ observar comportamiento a lo largo del tiempoget_game_node_properties→ verificar valores específicosstop_scene→ detener cuando termines- Corregir problemas en scripts → repetir
6. Animaciones
# Asegúrate de que exista un nodo AnimationPlayer en la escena
create_animation → nueva animación con duración y modo de loop
add_animation_track → agregar tracks de property/transform/method
set_animation_keyframe → insertar keyframes en tiempos específicos
get_animation_info → inspeccionar animaciones existentes
Ejemplo — sprite rebotando:
create_animationnamebounce, length1.0, loop_mode1(loop lineal)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 → cambiar font_color, etc.
set_theme_font_size → ajustar tamaño de texto
set_theme_stylebox → fondos, bordes, esquinas redondeadas
connect_signal → conectar pressed del button, value_changed, etc.
8. TileMap
tilemap_get_info → revisar fuentes del tile set y disposición del atlas
tilemap_set_cell → colocar tiles individuales
tilemap_fill_rect → rellenar regiones rectangulares
tilemap_get_used_cells → ver qué ya está colocado
tilemap_clear → limpiar todas las celdas
9. Audio
add_audio_bus → crear buses de audio (SFX, Music, UI)
set_audio_bus → ajustar volumen, solo, mute
add_audio_bus_effect → agregar reverb, delay, compressor, etc.
add_audio_player → agregar nodos AudioStreamPlayer(2D/3D)
10. Configuración del Proyecto
set_project_setting → cambiar tamaño del viewport, configuraciones de física, etc.
set_input_action → definir mapeos de entrada (move_left → KEY_A, etc.)
add_autoload → registrar singletons autoload
set_physics_layers → nombrar capas de colisión (player, enemy, world, etc.)
Reglas Importantes y Trampas
Valores de Propiedades
Las propiedades se parsean automáticamente desde strings. Usa estos formatos:
- Vector2:
"Vector2(100, 200)" - Vector3:
"Vector3(1, 2, 3)" - Color:
"Color(1, 0, 0, 1)"o"#ff0000" - Bool:
"true"/"false" - Números:
"42","3.14" - Enums: Usa valores enteros (ej:
0para el primer valor del enum)
Nunca Edites project.godot Directamente
El editor de Godot sobrescribe project.godot constantemente. Siempre usa set_project_setting para cambiar configuraciones del proyecto.
Anotaciones de Tipo en GDScript
Al escribir GDScript con loops for sobre arrays sin tipo, usa anotaciones de tipo explícitas:
# MAL — causará errores
for item in some_untyped_array:
var x := item.value # la inferencia de tipos falla
# BIEN
for i in range(some_untyped_array.size()):
var item: Dictionary = some_untyped_array[i]
var x: int = item.value
Los Cambios en Scripts Necesitan Reload
Después de crear o modificar scripts significativamente, usa reload_project para asegurar que Godot reconozca los cambios. Esto es especialmente importante después de create_script.
Consejos para simulate_key
- Usa duraciones cortas (0.3–0.5 segundos) para movimiento preciso
- Duraciones largas (1+ segundo) causan overshooting
- Para pruebas de gameplay, prefiere
simulate_actionsobresimulate_keycuando haya acciones del InputMap definidas
simulate_mouse_click
- El valor por defecto
auto_release: trueenvía press y release — requerido para botones de UI - Los botones de UI se activan en release, por lo que ambos eventos son necesarios
Limitaciones de execute_game_script
- Sin funciones anidadas (
funcdentro defunc) — causa error de compilación - Usa
.get("property")en lugar de.propertypara acceso dinámico - Los errores de runtime pausan el debugger (se continúa automáticamente, pero evítalo si es posible)
Colisión y Áreas de Recolección
- Para ítems recolectables, usa Area3D/Area2D con radio >= 1.5
- Radios más pequeños son casi imposibles de activar con entrada simulada
Guarda Frecuentemente
Llama a save_scene después de hacer cambios significativos. Los cambios no guardados pueden perderse si el editor se recarga.
Herramientas de Análisis y Depuración
Cuando algo sale mal, usa estas herramientas para investigar:
get_editor_errors → revisar errores de script y excepciones de runtime
get_output_log → leer salida de print() y advertencias
analyze_scene_complexity → encontrar cuellos de botella de rendimiento
analyze_signal_flow → visualizar conexiones de signals
detect_circular_dependencies → encontrar referencias circulares de script/escena
find_unused_resources → limpiar archivos no utilizados
get_performance_monitors → FPS, memoria, draw calls, estadísticas de física
Pruebas y QA
run_test_scenario → definir y ejecutar secuencias de prueba automatizadas
assert_node_state → verificar que las propiedades de nodos coincidan con valores esperados
assert_screen_text → verificar que el texto se muestre en pantalla
compare_screenshots → pruebas de regresión visual (usa rutas de archivo, no base64)
run_stress_test → generar muchos nodos para probar rendimiento
Patrones Avanzados
Operaciones entre Escenas
cross_scene_set_property → modificar nodos en escenas que no están abiertas actualmente
find_node_references → encontrar todos los archivos que referencian un patrón
batch_set_property → establecer una propiedad en todos los nodos de un tipo
Flujo de Trabajo con Shaders
create_shader → escribir código shader estilo GLSL
assign_shader_material → aplicar a un nodo
set_shader_param → ajustar uniforms en runtime
get_shader_params → inspeccionar valores actuales
Navegación (3D)
setup_navigation_region → definir área transitable
bake_navigation_mesh → generar navmesh
setup_navigation_agent → agregar pathfinding a personajes
AnimationTree y Máquinas de Estado
create_animation_tree → configurar AnimationTree con máquina de estado o blend tree
add_state_machine_state → agregar estados (idle, walk, run, jump)
add_state_machine_transition → definir transiciones entre estados
set_tree_parameter → controlar parámetros de blend
Orden de Flujo de Trabajo Recomendado
Al construir un juego nuevo desde cero:
- Configuración del proyecto —
get_project_info,set_project_setting(viewport, física) - Mapeo de entrada —
set_input_actionpara todos los controles del jugador - Escena principal —
create_scene, establecer como escena principal - Jugador — crear escena del jugador con sprite, colisión, script
- Nivel/Mundo — construir el entorno (TileMap, meshes 3D, etc.)
- Lógica del juego — scripts para enemigos, ítems, UI
- Audio — configurar buses, agregar audio players
- Playtesting —
play_scene, probar con entrada simulada, corregir bugs - Pulido — animaciones, partículas, shaders, temas
- Exportación —
list_export_presets,export_project