Pre-build checks

Catch broken scenes before you ship

Every scene is loaded and instantiated before the build, along with any rules your scripts declare.

  1. 01

    Every scene loads

    A broken path, a missing dependency or a renamed script is an error naming the file.

  2. 02

    Every scene instantiates

    Catches scripts that fail when the scene is created, not only when it loads.

  3. 03

    Your rules run

    Any node that declares validation conditions has them checked.

  4. 04

    Errors stop the build

    Warnings are recorded and do not block.

Add your own rules

One method. A node that has it gets checked.

extends Node3D

@export var spawn_point: Node3D

func _get_validation_conditions() -> Array:
    return [
        {
            "condition": spawn_point != null,
            "message": "Spawn point is not assigned",
            "severity": "error",
        },
    ]

Severity is error, warning or info. The report names the file and the node.

The report

  • Passed, failed, error and warning counts
  • Each problem with its message, file, line and node
  • Likely causes, grouping problems that come from the same file
  • Saved with the build, so an old build still has its report

What it does not do

  • Does not run your GdUnit4 tests. It is a smoke test: scenes load and instantiate, and your rules pass.
  • No built-in rule library beyond load and instantiate.
  • Skips the addons folder, so third-party code does not fail your build.
  • Runs as part of a build, not on its own.
  • Warnings never block, and there is no setting to make them.

Godot only. It uses Godot’s own scene loader.

The rest of the app

Stop maintaining pipelines, start shipping games

Version control, assets, issues, builds and analytics in one desktop app. Install it and open a project in about five minutes.