Skip to main content

Detect missing animations in Godot scenes

Project description

Godot Animation Verifier

PyPI License: MIT

Detects missing animations in Godot scenes. AI coding agents produce functional games but often skip transitions. Positions, sizes, and opacities snap instantly instead of animating. This tool captures rendered frames, analyzes them for motion discontinuities, and returns a pass/fail diagnostic that agents or developers can act on.

This tool is independent of Godot MCP servers and works great alongside them. MCP servers give agents the ability to edit scenes and manage project state; this tool verifies the visual result of those edits.

Getting Started

Prerequisites

  • Python 3.x
  • Godot Engine 4.x

Install

Install the Claude Code plugin:

claude plugin marketplace add splitatomlabs/godot-animation-verifier
claude plugin install godot-animation-verifier@godot-animation-verifier

This adds the /verify-animations skill. The skill handles installing the CLI and all dependencies automatically on first use.

Usage

Invoke the skill on any scene:

/verify-animations

The skill captures the scene, runs detection, and guides fixes for any missing animations it finds.

CLI

The CLI can integrate into any agentic coding workflow or CI/CD pipeline:

pip install godot-animation-verifier

# Capture a scene and check for missing animations
godot-animation-verifier capture scene.tscn --analyze

# Pass flags through to Godot (e.g. trigger a demo mode in your game)
godot-animation-verifier capture scene.tscn --analyze --godot-args --demo

# Analyze a previously captured video or frame directory
godot-animation-verifier analyze capture.avi

What It Detects

Missing animations — abrupt state changes where position, size, or opacity jumps between values in a single frame instead of transitioning smoothly.

The output is structured JSON:

{
  "pass": false,
  "issues": [
    {
      "type": "MISSING_ANIMATION",
      "severity": "high",
      "timestamp_ms": 200,
      "hint": "Add a Tween or AnimationPlayer to smooth the transition"
    }
  ],
  "frame_count": 60
}

Exit code 0 means pass, 1 means issues detected.

Capture

The capture command launches Godot with --write-movie to record frames — no GDScript setup required. The scene must be inside a Godot project (a directory containing project.godot).

Use --godot-args to pass flags through to Godot via the -- separator. Your game can read them with OS.get_cmdline_user_args() to trigger specific flows — demo modes, test scenarios, menu navigation — so you can verify animations for any state your UI can reach.

Note: --headless is incompatible with --write-movie. Capture requires a windowed Godot process (a display server must be available).

Test Suite

121 Godot scenes test detection accuracy across a wide range of scenarios:

Category Scenes What it tests
Object size 10 Tiny (20px) through huge (400px) objects
Multiple objects 10 2-5 simultaneous objects, mixed motion types
Background complexity 10 Gradients, checkerboards, noise, color blocks
Transition magnitude 10 Subtle (50px) through large (400px) movements
Animation timing 10 Full duration, early stop, late start, multi-phase
Spawn and despawn 10 Fade in/out, grow/shrink, instant appear/disappear
Combined properties 10 Simultaneous position + opacity + size changes
Viewport position 10 Corners, edges, off-screen to center
Color and contrast 10 Low contrast, high contrast, color snaps
Threshold boundaries 10 Edge cases near detection thresholds
Non-rectangular shapes 10 Circles, triangles, mixed shapes
Scene transitions 10 Scene cuts, loading screens, HUD swaps, cross-dissolves
Text animations 1 Scale bumps with easing and mid-animation text changes

On top of these, ~100 unit tests cover the detection pipeline, CLI, and error paths without needing Godot.

pytest                    # unit/integration (no Godot required)
pytest -m godot           # all Godot capture tests (requires Godot + display)

Godot tests cache captured AVI files in tests/.frame_cache/ keyed by scene content hash. After the first run, repeat runs reuse cached frames and don't need Godot. Use --refresh-cache to force recapture.

Looking Forward

Better detection accuracy. The current detector works well on synthetic test scenes. Real-world Godot projects have more visual complexity, including background motion, particle effects, and overlapping UI layers. Improving robustness against these conditions is the immediate priority.

Animation quality analysis. Beyond detecting missing animations, we want to assess the quality of animations that are present. This means flagging easing curves that feel mechanical, transitions that are too fast or too slow, and timing that doesn't match platform conventions.

Richer agent feedback. The current output tells an agent what is wrong. Future versions could provide more specific remediation guidance, such as which node to animate, what property to tween, and what duration and easing to use, so agents can fix issues in fewer iterations.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

godot_animation_verifier-0.1.1.tar.gz (38.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

godot_animation_verifier-0.1.1-py3-none-any.whl (19.9 kB view details)

Uploaded Python 3

File details

Details for the file godot_animation_verifier-0.1.1.tar.gz.

File metadata

  • Download URL: godot_animation_verifier-0.1.1.tar.gz
  • Upload date:
  • Size: 38.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.1

File hashes

Hashes for godot_animation_verifier-0.1.1.tar.gz
Algorithm Hash digest
SHA256 765e75bafdc9ab2eed1420480e7f8d249d1d5b524084f07acdc680e564ac1c38
MD5 110493f3051943c7846e50d0f6aeef10
BLAKE2b-256 8fb78796a45cf10a9aeb64061e40e220ae716ba1ebb4c9c5eb4b538cc91db50e

See more details on using hashes here.

File details

Details for the file godot_animation_verifier-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for godot_animation_verifier-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9a018262ca53d229dd11a9488afc1a3b309b0dc8cd9f3f753f7b075861ea60e8
MD5 1888e0ba44f8b9c99f4f03aa9d34dff6
BLAKE2b-256 03ca33fd1a22693ede031e242fdb30c289f131f454bb0f1b2bfe8d6f4bf00c85

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page