No description
  • TypeScript 77.4%
  • Python 22%
  • Dockerfile 0.3%
  • CSS 0.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-05-08 14:07:03 +02:00
.github feat: add 'showscreen' node type with editor and generator support 2026-04-12 23:41:48 +02:00
.vscode feat: add InputNode functionality with editor and integration into story components 2026-04-11 23:35:12 +02:00
backend Add Feedback & Bug Report dialog with user context and submission handling 2026-05-04 15:09:46 +02:00
frontend Enhance SimInspectorPanel and simUtils: add condition branches display and improve jump node handling 2026-05-04 15:49:41 +02:00
.env feat: implement user authentication with JWT and bcrypt 2026-04-13 21:02:30 +02:00
.env.example feat: implement user authentication with JWT and bcrypt 2026-04-13 21:02:30 +02:00
.gitignore Add .idea/ to .gitignore to exclude IDE configuration files 2026-05-01 23:44:13 +02:00
CHANGELOG.md Update CHANGELOG.md to release version 0.4.0 and document new features 2026-05-08 14:07:03 +02:00
docker-compose.yml Remove c# backend and fix issues 2026-04-28 15:08:32 +02:00
itch.io.txt feat: add initial itch.io file with project details 2026-04-27 14:44:28 +02:00
README.md Fix some minor bugs 2026-04-10 01:05:47 +02:00
start-backend.sh Initial 2026-04-10 00:02:13 +02:00
start-frontend.sh Initial 2026-04-10 00:02:13 +02:00

RenVis

A visual node-based editor for Ren'Py visual novels.
Build your story graph in the browser, generate .rpy files, and launch the game directly from the tool.


Requirements

Tool Version Notes
Python ≥ 3.12 Backend runtime
uv any Python package manager (pip install uv or curl -Lsf https://astral.sh/uv/install.sh | sh)
Node.js ≥ 18 Frontend build
Ren'Py SDK any recent Required to run the generated game

Quick Start

1. Backend

./start-backend.sh

Starts the API server at http://localhost:8000.

2. Frontend

./start-frontend.sh

Opens the editor at http://localhost:5173.


Workflow

Create a project

  1. Open http://localhost:5173 in your browser.
  2. Click New Project.
  3. Set Project Path — an empty folder where your Ren'Py game will live
    (e.g. /home/you/my-renpy-game).
  4. Set Ren'Py Executable — the full path to the Ren'Py launcher
    (e.g. /home/you/renpy-8.3.3-sdk/renpy.sh on Linux,
    C:\renpy-8.3.3-sdk\renpy.exe on Windows).
  5. Click Create.

Build the story

Use the graph editor to create nodes and connect them:

Node type Purpose
Label Entry point / anchor (label start: etc.)
Dialogue Character speech lines
Choice (menu) Branching menu — drag from each handle to connect a branch
Condition if/elif/else branching on variables
Scene Background image change
Encounter Show/hide character sprites
Jump Jump to a label
Return End the current label block

Tip: Drag a connection to empty canvas space to open the quick-create popup and instantly add + connect a new node.

Generate .rpy files

Click Generate (toolbar).
The backend writes four files into <project-path>/game/:

game/
  characters.rpy    define statements for all characters
  variables.rpy     default variable declarations
  options.rpy       game title, window size, etc.
  script.rpy        the full story script

Run with Ren'Py

Option A — from within RenVis

Click Run (toolbar). RenVis calls
<renpy-exe> <project-path> and launches the game automatically.
(Requires Ren'Py Executable to be set in project settings.)

Option B — manually from the terminal

# Linux / macOS
/path/to/renpy.sh /path/to/my-renpy-game

# Windows (PowerShell)
& "C:\renpy-8.3.3-sdk\renpy.exe" "C:\path\to\my-renpy-game"

Project structure

RenVis/
├── backend/          Python/FastAPI  generates .rpy, stores project JSON
│   ├── main.py       REST API routes
│   ├── generator.py  .rpy code generation
│   └── models.py     Pydantic data models
├── frontend/         React + TypeScript + Vite
│   └── src/
│       ├── components/story/   Graph editor, node panel, toolbar
│       ├── store/              Zustand state management
│       └── types.ts            Shared type definitions
├── start-backend.sh
└── start-frontend.sh

Project data

Project state is stored as a single JSON file inside the project folder:

<project-path>/
  renvis.json         full project data (nodes, characters, variables, …)
  game/
    script.rpy
    characters.rpy
    variables.rpy
    options.rpy
    images/
    audio/

The ~/.renvis/config.json file keeps track of recently opened projects.