A language for narrative structure. A live recognition engine.
A Structured Story
Every story is already a structure: people, the ties between, and the events that test. TropeLang is a way to write that structure down — not the prose, but the bones beneath.
You needn't name a trope to conjure it. You describe what happens — who trusts whom, what turns, what comes to light. The tropes are the shapes that structure reveals. A betrayal is a betrayal by its shape, not its wording: write the trust and the turn in your own voice, and it reads the same.
I am Schrödinger's Dramatic Irony
And nothing is forced to mean one thing before its time — a story can hold two readings at once, until it settles into one.
// A grifter, a mark, and the turn. Hover a name; edit a line.
char vale [+Protagonist] [+Grifter]
char renn [+Mark] [+Collector] [+Paranoid]
scene the_appraisal {
beat 1 { vale -- renn : "lets him see only the appraiser" }
beat 2 { evt the_switch [&Betrays(agent=vale, target=renn)] }
} Describe, don't direct
Declare a cast, wire the edges, annotate what happens. No control flow — just a record of what's true.
The shape is enough
A trope is a pattern, not a keyword — recognized even when the words never name it.
No hidden work
Every snippet on this site parses through the same engine as the editor. If it renders, it parsed.