Skip to main content

Detect missing animations in Godot scenes

Project description

Godot Animation Verifier

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.0.tar.gz (38.5 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.0-py3-none-any.whl (19.8 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for godot_animation_verifier-0.1.0.tar.gz
Algorithm Hash digest
SHA256 3c69ccf8a085389031e16baa3019c98e1c11d53a9c10c90e3bb02311ba0fb322
MD5 a6c49c69a5c6d9279d8425808725dbc1
BLAKE2b-256 37967d0adbaf96acb34d572bcacc263e7bdc51fe6b398348dc8aa66274d25890

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for godot_animation_verifier-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bad478a212fd2755d42b85c083378cdb5ed5b728bbe5bdb17607222093d0baf4
MD5 de2bc275f8ed5182c19a87ea2f31656e
BLAKE2b-256 9f45ef4d3e3ef2c51d88be9f6daf3f9a9e3eedfdc74b9eb8d3a399e871bc17a8

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