Script Analysis

Detect logic bugs before your players do

BranchPy Studio analyzes your entire Ren'Py project — resolving every label, jump, call, and menu branch — to detect broken transitions, undefined targets, and variable issues. Every finding is mapped to the exact line, with no playthrough required.

Cross-file resolutionBroken-jump detectionVariable trackingUnreachable pathsStructured reports
BranchPy Studio Analyze screen — structured findings grouped by severity and file

The Analyze screen in BranchPy Studio — findings grouped by severity, each linked to its source line.

Ren'Py runs your script — it doesn't check it first

Ren'Py parses and executes your scripts at runtime. A jump broken_label buried in a rarely-taken branch isn't caught until a player actually reaches it — sometimes months after release, reported as a crash in a review.

BranchPy Studio performs deterministic static analysis across your whole project before you run anything. It resolves every label reference, tracks variable assignments through all branches, and highlights issues at the line they occur — so you fix the cause instead of guessing which playthrough triggered it. Analysis is read-only: your source is never modified.

Capabilities

What it detects

Undefined jump & call targets

A jump or call references a label that doesn't exist anywhere in the project — flagged as an error before it crashes at runtime.

Variable read before assignment

A variable is accessed on a branch where it was never assigned — the kind of NameError that only surfaces on one specific path.

Unreachable labels

Defined labels that no jump, call, or menu option can reach — often cut content, a renamed label, or a structural bug.

Call without return

A call target has no return statement, so execution continues past the called block in ways you didn't intend.

Duplicate branch paths

Two menu choices that navigate to the same label — usually a copy-paste oversight that quietly erodes meaningful choice.

Reading-time outliers

Labels much longer or shorter than your project average — a quick signal for pacing review and QA prioritisation.

How it works

Complementary passes, one analysis

Open your project, run analysis, and review actionable results — each pass adds depth without changing your files.

1

Doctor

Checks your environment — engine path, Python version, config — and reports setup problems before analysis starts.

2

Analyze

The base pass: builds the label graph, resolves every jump and call, tracks variables, and measures reading time.

3

Pilot

Walks every reachable path to surface per-branch variable warnings and unreachable conditions.

4

Review

Findings are grouped by severity and file, each linked to its exact line. Results also feed Flowchart and Compare.

How findings are reported

Every finding is sorted by severity so you can triage the dangerous ones first.

SeverityMeaningExamples
Error Will crash at runtime when the path is reached. Undefined jump/call target; variable read before assignment.
Warning Likely a bug or leftover — worth resolving before release. Unreachable label; call without a return.
Info A signal worth a look — not necessarily wrong. Duplicate branch paths; reading-time outliers.

Free for Ren'Py creators

Script Analysis is included in Ren'Py Creator (free). Install BranchPy Studio, open your project, and run your first analysis in minutes.