Firn for visual novels

The game is in your head. Get it playable.

You have the story. Maybe forty thousand words of it. What you do not have is a hundred drawings of the same face, a branch map that still makes sense at 3am, and the six months it takes to wire all that into an engine.

Firn does that part. You end up with a Ren'Py project — branches you planned, a cast who look like themselves in every scene — that opens and plays like any other.

Not a preview, not a mock-up, not our own player. A finished project you open in Ren'Py — the same free program thousands of released visual novels were built in.

Free to start. Full commercial rights. Ren'Py itself stays free and stays yours.

Open it and play it

An ordinary Ren'Py project. It just opens.

Firn writes out the whole project the way you would have assembled it by hand — and then we check it with Ren'Py's own tools, not our own:

  • A script you can read, with your own chapter names on the scenes
  • Every character set up, down to the colour their name appears in
  • Art filed where the engine expects it, so your cast simply appear when the scene calls for them
  • Backgrounds, expression sets, and the standard menus left plain so you can restyle them
  • On desktop, Play nowopens the whole thing in Ren'Py and runs it

Nothing about it is ours. Every tutorial, every forum answer, every community tool you already use still applies, and you publish to itch.io or Steam exactly the way everyone else does.

game/script.rpysample export
# Chapter 2, Scene 4: The greenhouse confrontation
define elara = Character("Elara", color="#7FB6D4")
define mara = Character("Mara", color="#C49A6C")

label ch2_greenhouse:
    scene bg greenhouse_dusk with dissolve
    show elara worried at left
    elara "You knew about the orchard. Before the frost."

    menu:
        "Tell her the truth":
            jump ch2_truth
        "Keep the secret a little longer":
            $ kept_secret = True
            jump ch2_deflect

label ch2_truth:
    show elara relieved
    elara "Then we tell the others tonight."
    # Editor: kept_secret checked at ch5_reveal
    return

Branches that matter

Choices you planned, not choices it improvised.

Firn will not scatter meaningless choice menus through your prose. The decisions get planned up front, you approve them, and the writing has to actually deliver them before a chapter counts as done. What ends up in the game is the route map you signed off.

Choices that add up

Not just one big fork at the end. Small choices can build up — trust, suspicion, affection — so a true ending can need both a running total and one particular thing the player did earlier. This is how real visual novels are actually written, and it is what Firn writes.

Options you have to earn

Some options only appear if the player did something earlier. They are hidden properly, so an unearned option is simply not on the screen — not greyed out with an apology attached.

Optional scenes

Side scenes that play only when the player has earned them, and skip cleanly when they have not. Optional content that does not quietly break the main route.

In the studio you can see the whole branch map, and play through it right there under the same rules the finished game uses. What you test is what your players get.

Endings you can unlock

Named endings. A gallery. Persistent unlocks.

When the story splits, Firn works out the full set of endings and makes sure the right one fires — the same way in your preview as in the finished game. A straight-through story still ends cleanly. A branching one gets an ending gallery: a count of how many the player has found, and locked "???" slots for the ones still out there.

  • Every route lands on a named ending, not a shrug
  • Endings are remembered between playthroughs, so the gallery fills in as players replay
  • Locked slots, and a hint of the tone, for endings they have not reached yet

Your story. Three people who never get tired.

The Writer

Writes scenes from your outline, in your voice — and has to deliver the choices you planned as real menus before a chapter counts as finished.

The Illustrator

Draws six expressions for each of your leads, from character sheets you approved, all in one look — so the face in the prologue is recognisably the same person on the final route.

The Editor

Watches for the things branching stories break: a character who remembers a scene the player skipped, an eye colour that changed halfway through, a route that assumes something the player never did.

Already deep in it

Bring the game you already started.

Bringing in a project you already started, so the crew can work inside the world you have built, is coming. It is not here yet, and we would rather tell you now than let you find out later.

You are the developer. Say so.

itch.io asks whether your game used AI. Good — it should. Firn keeps a running record of what was drafted, what you directed, and what you threw out, so you can answer that question accurately instead of guessing.

And if your project is a no-AI project, Firn still respects that line: use it for planning and continuity only.

Built for where VNs actually live.

Publish it the way every other Ren'Py game gets published — itch.io, Steam, your own site. And your world stays here afterwards, so the sequel, the fan-disc and the webtoon adaptation all start from what you already built instead of from memory.

Adapting this world for vertical scroll or print instead? See all formats.

The route map is in your head. Build it.