Describe a character.
Get a game-ready pack.

Turn a rough character idea into a structured, validated JSON asset pack for Ren'Py. One character, one dialogue tree, zero guesswork.

Works even if your idea is vague
Guided inputs
Validated JSON delivery
output.json
{ "character": { "name": "Sable", "archetype": "Reluctant Guide", "traits": ["cryptic", "patient", "haunted"] }, "dialogue_tree": { "start_node_id": "node_1", "nodes": [ { "id": "node_1", "speaker": "Sable", "text": "The forest remembers what you've forgotten.", "choices": [...] } ] } }
Build your character

Describe what you want

Pick a genre, tone, and role. Add a description if you want. We handle the rest.

We'll send the JSON pack here too
What world does your character live in?
How should the dialogue feel?
What part do they play in the story?
When enabled, we'll make smart creative choices for details you leave out. Disable for full manual control.
Describe your character in your own words. As vague or detailed as you want.
Secure payment via Stripe. You'll get a validated JSON file instantly + via email.
How it works

From rough idea to Ren'Py-ready JSON in seconds

01

Describe your character

Pick a genre, tone, and role. Add an optional free-text description. That's it.

02

Pay & generate

$5 flat. AI builds a complete character with branching dialogue. Validated against a strict schema.

03

Drop into Ren'Py

Download your JSON pack. Structured for direct use in your Ren'Py project. Start building.

{}

Strict JSON validation

Every pack is validated against a defined schema. No malformed output. No guessing if the structure is right.

Beginner-first design

Simple dropdowns: genre, tone, role. The rest is handled for you. No technical knowledge needed.

Smart assumptions

Enable "fill in the gaps" and RenForge handles vague ideas. Disable for full control over every detail.

Branching dialogue

Each pack includes a dialogue tree with 3-7 nodes and branching paths. Actual game structure, not just lines.

Plain language input

"A sarcastic pirate captain in a comedy visual novel." That's enough. We build the rest.

Ren'Py native

Output is structured specifically for Ren'Py. Not generic, not engine-agnostic. Ren'Py first.

Sample output

Here's what a generated character pack looks like. This is the actual JSON you'll receive.

sable_dark_fantasy_mentor.json
{ "schema_version": "1.0", "input_summary": { "genre": "fantasy", "tone": "mysterious", "character_role": "mentor", "assumptions": [ "Character is an ancient forest guardian", "Speaks in riddles and metaphors" ] }, "character": { "name": "Sable", "archetype": "Reluctant Guide", "traits": ["cryptic", "patient", "haunted"], "backstory": "Once a scholar who wandered too deep into the Thornwood. The forest claimed her, but in return gave her sight beyond mortal years. She guides those who wander in, though she cannot leave herself.", "dialogue_style": "Speaks in layered metaphors. Rarely gives direct answers. Her tone shifts between warmth and eerie detachment." }, "dialogue_tree": { "start_node_id": "node_1", "nodes": [ { "id": "node_1", "speaker": "Sable", "text": "The forest remembers what you've forgotten. Tell me -- are you here to find something, or to lose something?", "choices": [ { "text": "I'm looking for someone.", "next_id": "node_2" }, { "text": "I don't know why I'm here.", "next_id": "node_3" } ] }, { "id": "node_2", "speaker": "Sable", "text": "Ah. The forest takes many things, but it never takes without reason. Who did you lose?", "choices": [ { "text": "My sister. She vanished last autumn.", "next_id": "node_4" }, { "text": "It doesn't matter. Just help me.", "next_id": "node_5" } ] }, { "id": "node_3", "speaker": "Sable", "text": "Then the forest called you. It does that sometimes -- pulls at the edges of people who are already unraveling.", "choices": [ { "text": "That's... unsettling.", "next_id": "node_5" } ] }, { "id": "node_4", "speaker": "Sable", "text": "Autumn. Yes. The Thornwood is hungriest in autumn. I will help you -- but you must promise me something first.", "choices": [] }, { "id": "node_5", "speaker": "Sable", "text": "Follow the lanterns. They'll lead you deeper. Whether that's where you want to go... well. That's not my question to answer.", "choices": [] } ] } }