Spaces:
Running
Running
| <html lang="en"> | |
| <head> | |
| <meta charset="utf-8" /> | |
| <meta name="viewport" content="width=device-width, initial-scale=1" /> | |
| <title>RoleCall Studios</title> | |
| <meta name="description" content="RoleCall Studios — interactive fiction tools, the PlotLight discovery floor, and the PlotPoints community-voted RP model benchmark." /> | |
| <link rel="icon" type="image/svg+xml" href="favicon.svg" /> | |
| <link rel="preconnect" href="https://fonts.googleapis.com" /> | |
| <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> | |
| <link href="https://fonts.googleapis.com/css2?family=Cinzel:wght@600;700;800;900&family=Cormorant+Garamond:ital,wght@1,500;1,600&family=Inter:wght@400;500;600;700;800&family=JetBrains+Mono:wght@500;700&display=swap" rel="stylesheet" /> | |
| <style> | |
| /* RoleCall — Vaudeville design system. Neobrutalist on a dark stage. | |
| Brand = rose #e11d48. Violet is the user-accent (secondary). | |
| Gold = featured/awards only (the benchmark). Hard 3px black borders, | |
| 6px offset shadows, zero radius, Cinzel marquee with 4px black punch. */ | |
| :root{ | |
| --canvas:#0a0a0b; --bg-panel:#1c1a22; --bg-higher:#26232d; --line:#3f3f46; --hard:#000; | |
| --ink:#fafaf9; --ink-soft:#e4e4e7; --ink-muted:#a1a1aa; --ink-dim:#71717a; | |
| --brand:#e11d48; --brand-soft:#fb7185; --brand-deep:#9f1239; | |
| --accent:#8b5cf6; --accent-soft:#a78bfa; --gold:#eab308; --gold-soft:#fcd34d; --amber:#f59e0b; --pink:#ec4899; --pink-soft:#f9a8d4; | |
| --font-display:'Cinzel',Georgia,serif; --font-serif:'Cormorant Garamond',Garamond,Georgia,serif; | |
| --font-body:'Inter',system-ui,-apple-system,'Segoe UI',sans-serif; --font-mono:'JetBrains Mono',ui-monospace,monospace; | |
| --border:3px solid var(--hard); --shadow:6px 6px 0 0 var(--hard); --shadow-sm:3px 3px 0 0 var(--hard); | |
| } | |
| *{box-sizing:border-box} | |
| body{margin:0; background:var(--canvas); color:var(--ink-soft); font-family:var(--font-body); | |
| font-size:16px; line-height:1.55; -webkit-font-smoothing:antialiased; min-height:100vh; | |
| background-image: | |
| radial-gradient(ellipse 80% 50% at 50% -10%, rgba(225,29,72,.10), transparent), | |
| radial-gradient(ellipse 60% 40% at 90% 100%, rgba(139,92,246,.07), transparent); | |
| background-attachment:fixed;} | |
| ::selection{background:var(--brand); color:var(--ink)} | |
| .readme{max-width:840px; margin:0 auto; padding:48px 24px 84px} | |
| a{color:var(--brand-soft); text-decoration:none; transition:color .12s ease-out} | |
| a:hover{color:var(--accent-soft); text-decoration:underline; text-underline-offset:3px} | |
| /* ── header ── */ | |
| .head{text-align:center; padding:14px 0 30px} | |
| .logo{width:74px; height:auto; margin:0 auto 20px; display:block} | |
| .eyebrow{font-family:var(--font-body); font-weight:700; font-size:.72rem; letter-spacing:.22em; | |
| text-transform:uppercase; color:var(--brand); margin-bottom:16px} | |
| .head h1{font-family:var(--font-display); font-weight:900; font-size:42px; letter-spacing:.04em; | |
| text-transform:uppercase; margin:0; line-height:1.05; color:var(--ink); text-shadow:4px 4px 0 var(--hard)} | |
| .tagline{font-family:var(--font-serif); font-style:italic; font-weight:500; font-size:21px; color:var(--ink-soft); margin-top:14px} | |
| .badges{display:flex; gap:10px; justify-content:center; flex-wrap:wrap; margin-top:24px} | |
| .badge{display:inline-flex; align-items:stretch; font-family:var(--font-body); font-weight:700; font-size:11px; | |
| letter-spacing:.12em; text-transform:uppercase; border:var(--border); box-shadow:var(--shadow-sm); | |
| transition:transform .1s ease-out, box-shadow .1s ease-out} | |
| .badge:hover{transform:translate(-1px,-1px); box-shadow:5px 5px 0 0 var(--hard)} | |
| .badge .k{background:var(--hard); color:var(--ink-soft); padding:6px 10px} | |
| .badge .v{padding:6px 11px; color:var(--canvas)} | |
| .badge.disc .v{background:var(--accent)} .badge.reddit .v{background:var(--amber)} .badge.x .v{background:var(--ink-soft)} | |
| /* stat strip — mono knockout tiles */ | |
| .stats{display:flex; gap:12px; flex-wrap:wrap; margin:4px 0 20px} | |
| .stat{flex:1; min-width:118px; background:var(--hard); border:var(--border); padding:14px 16px} | |
| .stat .n{font-family:var(--font-mono); font-weight:700; font-size:26px; color:var(--brand-soft); line-height:1} | |
| .stat .l{font-weight:600; font-size:10px; letter-spacing:.16em; text-transform:uppercase; color:var(--ink-muted); margin-top:8px} | |
| /* sparkle divider — echoes the logo */ | |
| .ornament{display:flex; align-items:center; gap:16px; margin:30px 0} | |
| .ornament::before,.ornament::after{content:""; flex:1; height:3px; background:var(--hard)} | |
| .ornament span{color:var(--brand); font-size:14px; letter-spacing:.4em} | |
| hr{border:0; border-top:var(--border); margin:30px 0} | |
| /* ── section heads ── */ | |
| h2{font-family:var(--font-display); font-weight:800; font-size:23px; text-transform:uppercase; letter-spacing:.04em; | |
| color:var(--ink); margin:38px 0 16px; padding-bottom:12px; display:flex; align-items:center; gap:13px; | |
| border-bottom:var(--border); text-shadow:2px 2px 0 var(--hard)} | |
| h2::before{content:""; width:15px; height:15px; background:var(--brand); border:var(--border); flex:0 0 auto} | |
| h2 .em{color:var(--brand-soft)} | |
| p{margin:0 0 16px; color:var(--ink-soft)} | |
| strong{color:var(--ink)} | |
| blockquote{margin:6px 0 26px; padding:0; text-align:center} | |
| blockquote p{margin:0 auto; max-width:760px; font-family:var(--font-display); font-weight:700; font-size:clamp(17px,2.1vw,23px); letter-spacing:.04em; line-height:1.35; color:var(--ink-soft); text-shadow:2px 2px 0 var(--hard)} | |
| .note{font-size:13.5px; color:var(--ink-muted); border-left:3px solid var(--pink); background:rgba(236,72,153,.06); padding:.55em 1em; margin:0 0 10px} | |
| .note:last-of-type{margin-bottom:22px} | |
| .note strong{color:var(--pink-soft)} .note a{color:var(--pink-soft)} | |
| ul{margin:0 0 16px; padding-left:1.3em} li{margin:.32em 0} li::marker{color:var(--brand)} | |
| /* ── table ── */ | |
| .tablewrap{border:var(--border); box-shadow:var(--shadow); margin:6px 0 24px} | |
| table{border-collapse:collapse; width:100%; font-size:15px; background:var(--bg-panel)} | |
| th,td{border:1px solid var(--line); padding:12px 15px; text-align:left; vertical-align:top} | |
| thead th{background:var(--hard); color:var(--brand-soft); font-family:var(--font-body); font-weight:700; | |
| font-size:11px; letter-spacing:.16em; text-transform:uppercase} | |
| tbody tr{transition:background .12s ease-out} | |
| tbody tr:nth-child(even){background:var(--bg-higher)} | |
| tbody tr:hover{background:rgba(225,29,72,.08)} | |
| td .nm{font-family:var(--font-display); font-weight:700; font-size:15px; letter-spacing:.03em; text-transform:uppercase} | |
| td.r1 .nm{color:var(--brand-soft)} td.r2 .nm{color:var(--accent-soft)} td.r3 .nm{color:var(--gold-soft)} | |
| td.lk{white-space:nowrap; font-family:var(--font-mono); font-size:13px} | |
| .foot{color:var(--ink-dim); font-size:12px; text-align:center; margin-top:46px; font-family:var(--font-mono); letter-spacing:.08em} | |
| </style> | |
| </head> | |
| <body> | |
| <div class="readme"> | |
| <div class="head"> | |
| <svg class="logo" viewBox="0 0 246.4 249.1" role="img" aria-label="RoleCall Studios"> | |
| <defs><linearGradient id="rc-g" x1="123.2" y1="249.1" x2="123.2" y2="142.48" gradientUnits="userSpaceOnUse"> | |
| <stop offset="0" stop-color="#e11d48"/><stop offset=".74" stop-color="#e11d48"/><stop offset="1" stop-color="#e11d48" stop-opacity="0"/> | |
| </linearGradient></defs> | |
| <path fill="#e11d48" d="M207.06,84.49l-25.65-7.33c-23.49-6.62-41.85-24.98-48.47-48.47l-7.33-25.65c-1.03-2.5-3.89-3.69-6.39-2.67-1.21.5-2.17,1.46-2.67,2.67l-7.33,25.65c-6.62,23.49-24.98,41.85-48.47,48.47l-25.65,7.33c-2.5.71-3.95,3.31-3.24,5.81.45,1.57,1.67,2.8,3.24,3.24l25.65,7.33c23.49,6.62,41.85,24.98,48.47,48.47l7.33,25.65c.71,2.5,3.31,3.95,5.81,3.24,1.57-.45,2.8-1.67,3.24-3.24l7.33-25.65c6.62-23.49,24.98-41.85,48.47-48.47l25.65-7.33c2.5-.71,3.95-3.31,3.24-5.81-.45-1.57-1.67-2.8-3.24-3.24h0Z"/> | |
| <path fill="url(#rc-g)" d="M246.4,195.23c0,28.78-51.73,52.3-116.9,53.87l.34-34.17s15.81-33.51,109.43-37.78c4.61,5.65,7.12,11.74,7.12,18.08ZM149,142.48c-.72,1.11-4.21,6.08-5.08,9.13,2.18,1.78,16.57,14.13,55.09,19.14l38.84,4.75c-15.19-15.83-49.17-27.22-88.84-33.02h0ZM0,195.23c0,28.78,51.73,52.3,116.9,53.87l-.34-34.17s-15.81-33.51-109.43-37.78C2.51,182.81,0,188.89,0,195.23ZM97.38,142.48c-39.67,5.8-73.66,17.19-88.84,33.02l38.84-4.75c38.52-5.01,52.91-17.36,55.09-19.14-.87-3.05-4.36-8.02-5.08-9.13h0Z"/> | |
| </svg> | |
| <div class="eyebrow">— Interactive Fiction —</div> | |
| <h1>RoleCall Studios</h1> | |
| <div class="tagline">Write alongside AI. Run the scene, not the software.</div> | |
| <div class="badges"> | |
| <a class="badge disc" href="https://discord.gg/aFvkTCDRtf"><span class="k">Discord</span><span class="v">Join</span></a> | |
| <a class="badge reddit" href="https://www.reddit.com/r/RoleCallStudios/"><span class="k">Reddit</span><span class="v">r/RoleCallStudios</span></a> | |
| <a class="badge x" href="https://x.com/RoleCallStudios"><span class="k">Follow</span><span class="v">@RoleCallStudios</span></a> | |
| </div> | |
| </div> | |
| <div class="ornament"><span>✦</span></div> | |
| <blockquote><p>SillyTavern's depth. A browser tab's ease. The most feature-rich home for AI roleplay on the web.</p></blockquote> | |
| <p>RoleCall Studios builds for AI roleplay. You probably found us through <strong>PlotPoints</strong>, our open model benchmark, so let's start there. The creation studio and discovery floor are further down.</p> | |
| <h2>The <span class="em">PlotPoints</span> Benchmark</h2> | |
| <p>A leaderboard for how well models actually <em>roleplay</em>: staying in character, holding a scene across many turns, prose quality, and not hijacking your agency. Not a knowledge or willingness test, and not one vibe score. SFW and NSFW.</p> | |
| <p class="note"><strong>Requesting a model:</strong> we'll run just about anything within reason, as long as it's on <a href="https://openrouter.ai">OpenRouter</a>. We already add the popular ones we come across, and we take requests, so if it's on OR it can go on the board.</p> | |
| <p class="note"><strong>Local models and finetunes:</strong> we actively want to bench them, and we're hunting for an OpenRouter-style aggregator that hosts them in real abundance. The only blocker is fairness: every local model is set up differently and runs differently on every machine, and mismatched provider setups can quietly poison results. Point us at one consistent aggregator with a deep library and we will run them regularly and wildly. Know one? Tell us in the Community tab.</p> | |
| <p>The difference from the boards you already know: <strong>nothing here is private.</strong> The test harness, the judge prompts, the scoring rubric, and the raw vote dumps are all open-source (CC-BY 4.0), so every number traces back to a file you can read and rerun. Six tests, each measuring a different facet:</p> | |
| <ul> | |
| <li><strong>Arena ELO.</strong> Single-turn pairwise blind voting. Humans pick the better reply, blind.</li> | |
| <li><strong>Multi-turn.</strong> The same blind voting on full 12-turn scenes, so a model has to hold up across a whole conversation.</li> | |
| <li><strong>Rubric.</strong> An LLM judge (Sonnet 4) scores eleven writing-quality axes from 1 to 5, across twenty sessions per model.</li> | |
| <li><strong>Adversarial.</strong> Probes built to trigger specific failures: agency hijacking, POV drift, lore breaks, attention loss.</li> | |
| <li><strong>Cost and latency.</strong> Price per turn and wall-clock speed, so the board is not only about quality.</li> | |
| <li><strong>Calibration.</strong> Quality control on the votes themselves; roughly 1 in 8 ballots is a trap to catch random clickers.</li> | |
| </ul> | |
| <p>Every model runs through OpenRouter to keep providers comparable. Human votes and machine judging both count, and where they disagree is half the fun.</p> | |
| <div class="stats"> | |
| <div class="stat"><div class="n">3,000+</div><div class="l">Human Votes</div></div> | |
| <div class="stat"><div class="n">20+</div><div class="l">Models</div></div> | |
| <div class="stat"><div class="n">6</div><div class="l">Tests</div></div> | |
| </div> | |
| <ul> | |
| <li><strong><a href="https://plotlightstudios.com/plotpoints/multiturn">Vote now in the multi-turn arena</a></strong></li> | |
| <li><a href="https://plotlightstudios.com/plotpoints">See the results</a></li> | |
| <li><a href="https://plotlightstudios.com/plotpoints/methodology">Read the full methodology</a></li> | |
| <li><a href="https://huggingface.co/datasets/lazyweasel/roleplay-bench">Dataset on Hugging Face</a> (CC-BY 4.0)</li> | |
| <li><a href="https://github.com/LeviTheWeasel/rp-benchmark">Source on GitHub</a></li> | |
| <li>Want a model added? Open a thread in the <strong>Community</strong> tab above.</li> | |
| </ul> | |
| <h2>Also From RoleCall Studios</h2> | |
| <div class="tablewrap"><table> | |
| <thead><tr><th>Project</th><th>What it is</th><th>Link</th></tr></thead> | |
| <tbody> | |
| <tr><td class="r1"><span class="nm">RoleCall</span></td><td>The studio. Build characters, presets & lorebooks, then play end-to-end-encrypted scenes with SillyTavern-grade control over the AI.</td><td class="lk"><a href="https://rolecallstudios.com">rolecallstudios.com</a></td></tr> | |
| <tr><td class="r2"><span class="nm">PlotLight</span></td><td>The discovery floor. Browse, rate and fork the community's characters, presets, lorebooks and personas. No account needed to look around.</td><td class="lk"><a href="https://plotlightstudios.com">plotlightstudios.com</a></td></tr> | |
| </tbody> | |
| </table></div> | |
| <h2>Find Us</h2> | |
| <ul> | |
| <li><strong>Studio:</strong> <a href="https://rolecallstudios.com">rolecallstudios.com</a></li> | |
| <li><strong>Discovery:</strong> <a href="https://plotlightstudios.com">plotlightstudios.com</a></li> | |
| <li><strong>Benchmark:</strong> <a href="https://plotlightstudios.com/plotpoints">plotlightstudios.com/plotpoints</a></li> | |
| <li><strong>Discord:</strong> <a href="https://discord.gg/aFvkTCDRtf">discord.gg/aFvkTCDRtf</a></li> | |
| <li><strong>Reddit:</strong> <a href="https://www.reddit.com/r/RoleCallStudios/">r/RoleCallStudios</a></li> | |
| <li><strong>X / Twitter:</strong> <a href="https://x.com/RoleCallStudios">@RoleCallStudios</a></li> | |
| </ul> | |
| <div class="foot">© RoleCall Studios LLC · built for writers</div> | |
| </div> | |
| </body> | |
| </html> | |