The IDE that lets you see your story.
Formerly known as Ren'IDE.
Vangard Studio is a desktop IDE for Ren'Py visual novel development. Your .rpy files appear as draggable blocks on a visual canvas — jump and call connections auto-draw as arrows. Three canvases let you see your project from every angle: file structure, control flow, and the player's choice experience. A full Monaco code editor, three visual composers, asset managers, diagnostics, and a color picker are all built in.
It works alongside the Ren'Py SDK. Your .rpy files stay as .rpy files. No lock-in.
Watch the Full Beta 4 Walkthrough Video @ YouTube →
Download the latest stable release (v0.8.0)
Download the latest preview release (v0.9.0)
Download the latest nightly release (bleeding edge, tread carefully!)
Managing a Ren'Py project in a plain text editor means juggling dozens of .rpy files with no way to see the whole picture. You lose track of where jumps lead, which characters appear in which scenes, and whether your branching structure even makes sense.
Vangard gives you that picture — and keeps it in sync as you write.
- See your story's structure at a glance, without opening a single file
- Navigate instantly from a canvas node to the code behind it
- Catch problems early — broken jumps, missing assets, and unreachable labels flagged automatically
- Compose visually — build scenes, imagemaps, and screens with drag-and-drop, then copy the generated code
Your .rpy files as draggable blocks. jump and call connections auto-draw as arrows. Drag blocks to organize, click "Redraw" to auto-layout, or filter by character to focus on a single storyline. Role tinting colors blocks by which characters appear in them. A legend overlay explains arrow types and colors. Blocks with diagnostics display a colored outer glow — red for errors, amber for warnings — so problem areas are visible even when fully zoomed out.
Use Ctrl+G (or Cmd+G) to open the Go-to-Label command palette at any time. Type a label name and press Enter to jump directly to that node. The toolbox also has a persistent "Go to Label" search box for the same purpose. Both zoom the canvas in to at least 100% so the target is always clearly visible.
A label-by-label narrative flow graph. Every label becomes a node; every jump, call, and implicit fall-through becomes an edge. Highlight specific routes with distinct colors. Unreachable labels are flagged. Hover over menu nodes to inspect all choices and their destinations. Includes a "Go to Label" toolbox search and responds to the global Ctrl+G palette, with zoom-on-navigate consistent with the Project Canvas.
The player's view. Where the Flow Canvas shows code structure, the Choices Canvas shows the player experience. Menu nodes fan out to destinations via color-coded choice pills. Each pill shows the player-visible choice text and any if condition guard as a badge — so you can trace exactly what the player sees and where each choice leads, even when paths cross. Includes a "Go to Label" toolbox search and responds to the global Ctrl+G palette.
A full Monaco editor (the VS Code engine) built right in. Split panes let you edit two files side by side. Drag tabs between panes.
- TextMate syntax highlighting — accurate, context-aware Ren'Py coloring with semantic token support for labels, variables, and screen references
- Context-aware IntelliSense — autocomplete for
jump/calltargets,show/sceneimages, character tags, screen names, and variables - Go to Definition —
Ctrl+Clickon a label, character, or screen reference to jump to its definition - Dialogue Preview — an inline "Player View" panel below the editor shows a mock Ren'Py textbox (or choice menu) that updates in real time as the cursor moves through dialogue lines
- 33 built-in Ren'Py snippets with tab-stop placeholders
- User-defined snippets — create custom snippets with trigger prefixes that integrate with IntelliSense
- Cursor position (Ln/Col) in status bar
The right sidebar analyzes your entire project continuously. Tabs are organized in a two-level layout — primary category tabs across the top, then sub-tabs within each category — for efficient use of vertical space.
| Category | Sub-tabs | What it shows |
|---|---|---|
| Story Data | Characters | All define Character(...) definitions — name, tag, color, dialogue count. Add, edit, find usages. |
| Variables | All define/default globals. Find usages. |
|
| Screens | All screen definitions. Jump to definition. Add with boilerplate. |
|
| Assets | Images | Image asset manager with thumbnails and folder tree. |
| Audio | Audio asset manager with built-in player. | |
| Composers | Scenes | Scene Composer — layer backgrounds and sprites, export PNG. |
| ImageMaps | ImageMap Composer — draw hotspots, generate imagemap screen code. | |
| Tools | Snippets | Grid-browsable snippet library with fuzzy search and category filters. Built-in snippets + user global + project-specific. |
| Menus | Visual menu and choice designer with custom code block support. | |
| Colors | Color picker with four built-in palettes (Ren'Py Standard, HTML Named, Material 500, Pastel) and a live Project Theme palette scanned from your .rpy files. Insert at cursor, wrap in {color} tags, or copy hex. |
Browse all project images organized by folder, with visual thumbnails. Scan external directories without copying files in. Right-click any image to copy a scene or show statement directly to your clipboard. Drag images onto the Scene Composer stage or Screen Layout Composer. Double-click to manage Ren'Py tags and metadata.
Same workflow for audio. Browse, scan external directories, and right-click to copy play music, play sound, or queue audio statements. Custom audio player with Web Audio API integration, 64-bar equalizer visualization (cyan→blue→violet gradient with peak dots and scanline overlay), and volume control.
Layer backgrounds and sprites on a stage. Per-sprite controls: zoom, flip, rotate, alpha, blur. Visual Effects panel with color grading (saturation, brightness, contrast, invert), color modes (tint, colorize), and categorized matrix presets (Night, Sunset, Sepia, Greyscale, Noir, Faded, Silhouette, etc.). Lock layers to prevent accidental edits. Inline layer actions (delete, make background) appear as hover-reveal icons on each layer row. Reorder layers by dragging. Configurable stage resolution (presets: 1920×1080, 1280×720, 1024×768, 800×600, or custom). Copy the generated scene/show Ren'Py code or export the composition as a PNG.
Draw clickable hotspot rectangles over a ground image (with optional hover overlay). Each hotspot has a configurable action type (jump or call) and target label. Generates imagebutton/imagemap screen code ready to copy into your project. Ground and hover images are set by dragging from the Image Assets panel.
A dedicated panel surfaces issues across every file in the project.
- Invalid jumps —
jumporcallto a label that doesn't exist - Missing images / audio — assets referenced in code but not found in the project
- Undefined characters / screens — used but never defined
- Unused characters — defined but never spoken
- Unreachable labels — labels no path leads to
- Syntax errors — parse failures with file and line
Click any issue to jump directly to the source. Filter by severity (error / warning / info). Convert issues to task checklist items tracked with your project.
Jump straight into any point in your game without playing through from the start. Press Ctrl+Shift+G (or click the toolbar button) to open a label picker, select a target, and Vangard Studio launches the game at that label using Ren'Py's --warp flag.
Before warping, a Variable Overrides modal lets you set values for any default variables and interpolated text variables (like [mc_name]) that the game would normally set during earlier scenes. Vangard Studio writes a temporary _ide_after_warp.rpy that applies these overrides in Ren'Py's after_warp hook, then removes the file automatically when the game stops. If your project already defines its own label after_warp, the IDE detects it and avoids creating a conflicting label.
You can also warp from within the code editor — right-click a label line and choose "Warp to here" — or from any canvas node's context menu.
A dedicated dashboard for tracking and managing Ren'Py translation coverage across every language in your project. Open it from the toolbar.
- Language overview cards — one card per detected language showing total strings, translated count, stale (untranslated-identical) count, and a completion percentage bar
- File breakdown table — sortable by file, total strings, translated, untranslated, stale, and completion percentage so you can focus effort where it matters
- String-level view — a virtual-scrolling list of every translatable string with its translation status. Filter by status (all / translated / untranslated / stale) and search by text
- Generate translations — trigger Ren'Py's translation scaffolding for a language directly from the dashboard (requires a valid SDK path in Settings)
The parser automatically detects languages from tl/<language>/ directories, matches translated blocks back to source strings, and identifies stale translations where the translated text is identical to the source.
Word counts, estimated play time, lines of dialogue, per-character dialogue breakdown (bar chart), scene and route counts, and branching complexity scores. Statistics are computed asynchronously after the tab opens — each metric shows an inline spinner until ready, so the Stats tab appears instantly even for large projects. An IDE Performance section at the bottom of the Stats tab shows live diagnostics: project load time, analysis worker duration, asset scan time, canvas FPS, and JS heap memory.
- Project Explorer — file tree with create, rename, delete, cut/copy/paste, and drag-drop. Right-click an
.rpyfile → "Center on Canvas" to locate its block. Refresh Project option (File menu, context menu) reconciles all files and assets with disk state. - Project-wide Search & Replace — full-text search with regex. Replace individually or bulk with confirmation.
- New Project Wizard — 3-step flow: name + location, resolution presets, theme + color picker. Generates a complete SDK-compatible Ren'Py project.
- Markdown Preview — double-click any
.mdfile for GitHub-style rendered preview with toggle to Monaco edit mode. - First-run Tutorial — a 6-step guided tour on first launch with SVG spotlight effects and keyboard navigation. Replay at any time via Help → Show Tutorial.
- Bundled User Guide — a complete HTML user guide ships with the app. Open it from Help → User Guide in the menu bar.
- External File Change Detection — detects when
.rpyfiles are modified outside the app. Non-dirty files reload silently; dirty files show a persistent warning bar with Reload / Keep options. - Undo/Redo — full history for canvas moves, block creation/deletion, and composition edits (
Ctrl+Z/Ctrl+Y). - Drafting Mode — adds placeholders for missing images and audio so the game runs during development.
- Run Game — launch Ren'Py as a child process directly from the toolbar (
F5to run,Shift+F5to stop). - Sticky notes — per-canvas markdown notes in 6 colors. Drag to reposition. Promote a note to a diagnostics task via its checkbox.
- Character profile editor — a dedicated editor view for each character with all Ren'Py
Character()parameters: name/dialogue styling, text speed, CTC, window properties, and a free-form notes field. - Canvas minimap — a toggle-able minimap overlay on each canvas showing your viewport position within the full graph.
- Keyboard-accessible canvases — Tab to move focus between blocks/nodes, Arrow keys for spatial navigation, Enter to open in editor, Escape to deselect. Every canvas element has an
aria-labelfor screen readers (NVDA, VoiceOver, JAWS). Visible focus indicators for keyboard-only users. - 12 Themes — system, light, dark, solarized light/dark, colorful, colorful light, neon dark, ocean dark, candy light, forest light, synthwave.
- Auto-updater — checks for new releases on launch and prompts to install.
- Version in status bar — the app version is always visible at the right end of the status bar.
- Cross-platform — Windows (NSIS installer), macOS (DMG), Linux (AppImage).
| Action | Shortcut |
|---|---|
| Save All | Ctrl+S |
| Close Active Tab | Ctrl+W / Cmd+W |
| Quit Application | Ctrl+Q / Cmd+Q |
| Undo / Redo | Ctrl+Z / Ctrl+Y |
| Run Project | F5 |
| Stop Project | Shift+F5 |
| Warp to Label | Ctrl+Shift+G |
| Search in Files | Ctrl+Shift+F |
| Go to Label | Ctrl+G / Cmd+G |
| Go to Definition | Ctrl+Click (in editor) |
| Settings | Ctrl+, |
| Keyboard Shortcuts | Ctrl+/ |
| New Block | N |
| Group selected blocks | G |
| Pan canvas | Shift+Drag (configurable) |
| Zoom canvas | Mouse scroll |
| Select multiple blocks | Ctrl+Click or rubber-band drag |
| Delete selected | Delete |
Go to the releases page and download the appropriate package for your operating system.
Download: Vangard_Studio_Windows_<version>.exe
- Run the installer executable
- Follow the installation wizard
- Launch Vangard Studio from the Start Menu or desktop shortcut
To proceed:
- Click "More info"
- Click "Run anyway"
The app is safe - Windows blocks it only because it doesn't have a commercial code-signing certificate ($300-400/year).
Download: Vangard_Studio_macOS_<version>.dmg (choose macos-arm64 for Apple Silicon or macos-intel for Intel Macs)
- Open the
.dmgfile - Drag Vangard Studio.app to your Applications folder
- Launch from Applications
To run Vangard Studio:
Method 1 (Recommended):
- Right-click (or Control+click) Vangard Studio.app in Applications
- Select "Open" from the context menu
- Click "Open" in the security dialog that appears
Method 2 (System Settings):
- Try to launch Vangard Studio normally (it will be blocked)
- Go to System Settings → Privacy & Security
- Scroll down to the Security section
- Click "Open Anyway" next to the Vangard Studio message
- Click "Open" in the confirmation dialog
After the first successful launch, macOS will remember your choice and allow the app to run normally.
Two installation options available:
Download: Vangard_Studio_Linux_<version>.deb
Installation:
# Install the package
sudo apt install ./Vangard_Studio_Linux_<version>.deb
# Launch from terminal
vangard-studio
# Or launch from your application menuAdvantages:
- ✅ No additional dependencies required
- ✅ Integrates with system menus and file associations
- ✅ Automatic updates via APT package manager
- ✅ Cleaner uninstallation (
sudo apt remove vangard-studio)
Best for: Ubuntu, Debian, Linux Mint, Pop!_OS, elementary OS, and other Debian-based distributions
Download: Vangard_Studio_Linux_<version>.AppImage
Method A: With FUSE (Traditional)
Most modern Linux distributions don't include FUSE2 by default. Install it first:
# Ubuntu/Debian/Mint
sudo apt install libfuse2
# Fedora/RHEL
sudo dnf install fuse-libs
# Arch/Manjaro
sudo pacman -S fuse2
# openSUSE
sudo zypper install fuseThen run the AppImage:
chmod +x Vangard_Studio_Linux_<version>.AppImage
./Vangard_Studio_Linux_<version>.AppImageMethod B: Without FUSE (Extract Mode)
If you don't want to install FUSE, use extract mode:
chmod +x Vangard_Studio_Linux_<version>.AppImage
./Vangard_Studio_Linux_<version>.AppImage --appimage-extract-and-runThis extracts the AppImage to a temporary directory each time it runs (slightly slower startup, but requires no system dependencies).
Advantages:
- ✅ Works on all Linux distributions (Fedora, Arch, openSUSE, etc.)
- ✅ No installation required - just download and run
- ✅ Portable - can run from USB drive or external storage
- ✅ Easy to test multiple versions side-by-side
Best for: Non-Debian distributions, portable installations, or users who prefer not to install packages system-wide
On first launch, Vangard Studio will prompt you to either:
- Open an existing Ren'Py project folder, or
- Create a new project using the 3-step wizard (name + location, resolution, theme + color)
You'll also be asked to locate your Ren'Py SDK installation directory in Settings (Ctrl+, or Cmd+,) to enable the Run Game and Warp to Label features.
- Node.js 18.x or newer
- npm (bundled with Node.js)
git clone https://github.com/bluemoonfoundry/vangard-renpy-ide.git
cd vangard-renpy-ide
npm installnpm run electron:start # Build + launch Electron app
npm run dev # Vite dev server only (http://localhost:5173)npm test # Run all tests once
npm run test:watch # Watch mode
npx vitest run path/to/file.test.ts # Single filenpm run distOutput goes to release/. On Windows: run the .exe installer. On Mac: open the .dmg. On Linux: run the .AppImage.
Buttons are arranged left-to-right. The canvas switcher (Story / Route / Choice) sits at the centre; mode toggles and Run/Save live on the right.
Vangard Studio — v0.9.0