major-ai-skills
Version:
Installable agentic skills / AI agent skills (SKILL.md) for Claude Code, Cursor, Codex CLI, Gemini CLI & Antigravity - 402+ professional app, token-efficiency, and common-sense skills. SEO/GEO ready.
122 lines (91 loc) • 6.77 kB
Markdown
title: "Godot Engine 4.x Game Development AI Skill Guide (Gemini)"
description: "Comprehensive operational skill specification for Google Gemini to visually diagnose, automate, script, and troubleshoot Godot 4.x SceneTree hierarchies, 2D TileMaps, AnimationTree state machines, and Visual Profiler metrics."
category: "Open Source Game Engine & Interactive Applications"
tags: ["godot", "godot4", "visual-profiler", "animationtree", "tilemap-editor", "gemini"]
# Godot Engine 4.x Game Development AI Skill Guide (Gemini)
## Overview & Engine Architecture
Godot 4.x provides intuitive 2D and 3D visual authoring with real-time editing, TileMap layers, AnimationTree state machines, and in-engine visual profiling. Gemini acts as an AI Technical Game Designer and Performance Auditor, specializing in **multimodal SceneTree hierarchy inspection**, **2D TileSet / Terrain autotile diagnostics**, **AnimationTree blending state machine evaluation**, and **Visual Profiler frame budget optimization**.
### Visual Analytics & Node Hierarchy Stack
```
┌─────────────────────────────────────────────────────────────┐
│ Godot Visual Development Stack │
│ │
│ 2D / 3D Scene Viewport & Level Design │
│ ├── 2D Canvas Viewport (TileMapLayers, YSort, CanvasModulate)│
│ ├── 3D Viewport (Environment, VoxelGI, SDFGI, Occlusion) │
│ └── Control UI Viewport (Theme Editor, Anchors, Containers)│
│ │
│ Animation & Profiler Diagnostics │
│ ├── AnimationTree (StateMachine Transitions, BlendSpace2D) │
│ ├── Visual Profiler (CPU Frame Time, Physics Steps, DrawCalls│
│ └── Remote SceneTree Inspector (Live Runtime Node States) │
└─────────────────────────────────────────────────────────────┘
```
## Operational Capabilities & Agent Directives
1. **Multimodal SceneTree & Hierarchy Inspection**: Analyze screenshots of Godot SceneTree hierarchies to identify anti-patterns (e.g. deep spatial nesting, missing collision shapes, improper Control container sizing).
2. **AnimationTree State Machine Diagnostics**: Evaluate AnimationTree node graphs, diagnosing transition conditions, missing travel calls in GDScript, and blend weight interpolation issues.
3. **2D TileMap & Physics Layer Validation**: Troubleshoot TileMapLayer terrain autotiling rules, collision polygon alignment, and Y-sort ordering for top-down games.
4. **Visual Profiler Frame Budget Optimization**: Interpret frame time breakdown graphs to identify draw call surges, physics step overruns ($>16.6\text{ms}$), and memory allocation leaks.
## Production GDScript 2.0: AnimationTree State Machine Coordinator
Save this script as `res://scripts/animation/character_animator.gd` to smoothly blend movement and attack animations via `AnimationTree`:
```gdscript
# ==============================================================================
# Godot 4.x GDScript: AnimationTree State Machine Coordinator
# Blends Idle, Walk, Run, and Attack animations based on CharacterBody3D velocity.
# ==============================================================================
class_name CharacterAnimator
extends Node
@export var character: CharacterBody3D
@export var anim_tree: AnimationTree
var state_machine: AnimationNodeStateMachinePlayback
func _ready() -> void:
if not anim_tree:
push_error("AnimationTree reference missing on CharacterAnimator.")
return
anim_tree.active = true
state_machine = anim_tree.get("parameters/playback")
func _process(_delta: float) -> void:
if not character or not state_machine:
return
var horizontal_velocity: Vector2 = Vector2(character.velocity.x, character.velocity.z)
var speed: float = horizontal_velocity.length()
# 1. Update BlendSpace2D coordinates for Locomotion
anim_tree.set("parameters/Locomotion/blend_position", speed)
# 2. Trigger Jump / Fall States
if not character.is_on_floor():
if character.velocity.y > 0.0:
state_machine.travel("Jump")
else:
state_machine.travel("Fall")
else:
state_machine.travel("Locomotion")
func trigger_attack() -> void:
if state_machine:
state_machine.travel("Attack_Slash")
```
## Technical Troubleshooting Matrix
| Issue & Visual Signature | Root Cause Analysis | Diagnostic & Resolution Pathway |
| :--- | :--- | :--- |
| **TileMap Shows Black Gaps / Glitches Between Tiles** | Sub-pixel texture filtering bleeding into adjacent tiles in the texture atlas. | 1. In Project Settings $\rightarrow$ Rendering $\rightarrow$ Textures, set **Default Texture Filter** to `Nearest`.<br>2. In TileSet editor, add 1-pixel padding/margin around atlas tiles. |
| **AnimationTree State Machine Refuses to Transition** | Transition rule in state machine set to `AtEnd` while current animation is set to loop infinitely. | 1. In AnimationPlayer, uncheck the **Loop** toggle on transition-dependent animations.<br>2. Or set transition mode to **Immediate** / **Sync**. |
| **Visual Profiler Shows Huge Spike in `Draw Calls` (>1000)** | Individual 3D mesh instances drawn without GPU instancing or material sharing. | 1. Replace repetitive static meshes with `MultiMeshInstance3D`.<br>2. Ensure all meshes share the exact same material resource rather than duplicate unique materials. |
| **Control Nodes Jump Offscreen on Window Resize** | UI Control node anchors configured with absolute pixel offsets rather than relative ratio presets. | In Inspector $\rightarrow$ Layout, select **Full Rect** or **Center** anchor presets and place inside `MarginContainer` / `VBoxContainer`. |
## Command Line Syntax & Server Control
```bash
# Launch Godot Editor Directly into Specific Scene
godot --editor --path "C:\Projects\MyGame" "res://scenes/levels/level_01.tscn"
# Print Engine Video Driver & Adapter Information
godot --headless --print-fps --verbose
```
### Key Configuration Locations
- **Project Configuration**: `project.godot`
- **TileSet Resources**: `*.tres`
## Agent Operational Directive
> **MANDATORY**: For 2D pixel art projects, always set `texture_filter` to `Nearest` in Project Settings to prevent sub-pixel tile bleeding. Use `MultiMeshInstance3D` when placing more than 50 repeated 3D objects.