Skip to content
BunCho

Roblox × Story OS

Make a Roblox story game from your story.

BunCho's Story OS exports your story as a Roblox project with NPC dialogue, quests, branches and endings. You build the world in Roblox Studio; BunCho gives you the story structure and the dialogue. We compete on long-form structure, consistent characters and branches that hold together.

From one sentence to a published game

Example promptMake a mystery game where three students locked in an abandoned school have five minutes to escape
  1. Type one sentence into Story OS's New series and the AI drafts the plot, characters and scenes (uses credits). Or start from a ready-made template.
  2. In the Game tab, add choices and flags (has the key, solved the cipher…). Dead ends, unreachable scenes and flags nobody sets are flagged as you go.
  3. Once Story Tests pass, Export to Roblox is enabled: a zip with a Rojo project, an .rbxmx model and a .json for the plugin.
  4. Import it in Roblox Studio with the BunCho plugin (or Rojo): NPCs, quests and the dialogue UI are placed for you.
  5. Build out the world, playtest with several players and publish on Roblox.

What you get

Below is the actual export of the template that matches this prompt, “Escape from the Old School” (unedited).

Story structure (branches and endings)

15 scenes and 5 endings. Arrows are forward choices (10 return paths, such as going back to the classroom, are not drawn).

Locked in after schoolLocked in after schoolClassroom 3-BClassroom 3-BThe library cipherThe library cipherThe wrong she…The wrong shelfMio's secretMio's secretThe science-room lock…The science-room lockersThe entrance…The entrance keySora's noteSora's noteSchool entranceSchool entranceThe open doorThe open doorAll three togetherAll three togetherEscapedEscapedThe truth about the p…The truth about the prankThe back-door…The back-door passwordWaiting for m…Waiting for morning

All three together / Escaped / The truth about the prank / The back-door password / Waiting for morning

Three NPCs (personality, voice, secret, behaviour)

Haru

Class representative

Personality
Bossy and acts tough, but has the strongest sense of responsibility.
Voice
Crisp, commanding tone.
Goal
Bring everyone home
Secret
Believes a prank note he wrote is why everyone got locked in.
Sample line
“Stay calm. We find a way out in five minutes.”

Mio

Library committee member

Personality
Quiet and sharp-eyed; hates relying on others.
Voice
Speaks softly, briefly and precisely.
Goal
Crack the cipher
Secret
She almost got locked in here last year, and she is the one who left the cipher on the blackboard.
Sample line
“There's a number cipher on the blackboard.”

Sora

Track team member

Personality
Cheerful and chatty; scared of the dark.
Voice
Energetic and casual.
Goal
Get home before dark
Secret
Forgot she had the janitor's note in her pocket.
Sample line
“I want to get home before it gets dark…”

Behaviour: NPCs walk to the place of any scene they speak in; talked to elsewhere, they answer with their latest line. Secrets are developer notes and are never shown to players.

Quests (find the key, crack the cipher, open the door)

Flags that choices depend on become the objective list. The timer is 300 seconds; when it runs out the story jumps to the “Waiting for morning” ending.

Get out of the school in 5 minutes
  • Check shelf 913
  • Open the locker with the number from the cipher
  • Take the note
  • Trust Mio
Ways to open the door
  • Unlock the front doors with the key
  • Say the password at the back door

In-game UI

  • Dialogue window: speaker name, one line at a time, Next
  • Choices: with several players, a vote (majority, with a time limit)
  • Objective display: a checklist and where to go next
  • Timer: turns red with 30 seconds left
  • Endings: how many you have found (out of 5)
Mio

I think the numbers on the board are library call numbers.

Check shelf 913Check shelf 400Go back to the classroom

The UI is built in code, so there are no image assets to manage. Change colors and fonts in the THEME table at the top of StoryClient.

Luau code

Data (Story, Strings) is separate from the moving parts (state machine, server, UI). The server checks every choice (server-authoritative).

-- src/shared/Story.luau
["n006"] = {
  Title = "N.n006.title",
  Place = "science",
  Ending = false,
  Events = { "lights_flicker" },
  Lines = {
    { Key = "N.n006.1" },
    { Key = "N.n006.2", Npc = "haru" },
  },
  Choices = {
    { Id = "c013", Key = "C.c013", To = "n007", Requires = { "cipher" }, Sets = { "has_key" } },
    { Id = "c014", Key = "C.c014", To = "n002", Requires = {}, Sets = {} },
  },
-- src/shared/StoryRuntime.luau
-- Applies a choice. Returns false (and a reason) when the choice is not open right now.
function StoryRuntime.choose(story, state, choiceId: string): (boolean, string?)
  local c = StoryRuntime.findChoice(story, state, choiceId)
  if c == nil then
    return false, "choice_not_available"
  end
  for _, f in c.Sets do
    local neg, name = negated(f)
    state.flags[name] = if neg then nil else true
  end
  StoryRuntime.jump(story, state, c.To)
  return true, nil
end

-- Quest objectives with their done state (flags that some choice requires)
function StoryRuntime.objectives(story, state)
-- src/server/StoryServer.server.luau
local function onChoose(player: Player, choiceId: string)
  local session = sessions[sessionKey(player)]
  if session == nil or not session.open or session.state.ended then
    return
  end
  if Runtime.findChoice(Story, session.state, choiceId) == nil then
    return
  end
  local voters = #members(session)
  if Config.ChoiceMode ~= "vote" or voters <= 1 then

Saves

DataStore is optional (Config.UseDataStore). It saves endings found and solo progress. To test in Studio, enable Studio Access to API Services.

Localization table in 6 languages

Japanese, English, Spanish, Portuguese, Traditional and Simplified Chinese. Players see their Roblox language; missing ones fall back to the source language. localization/BunChoStory.csv also works with Roblox's localization tools.

What is in the zip

  • BunChoStory.rbxmx
  • NPCS.md
  • README.md
  • default.project.json
  • localization/BunChoStory.csv
  • src/client/StoryClient.client.luau
  • src/server/StageSetup.server.luau
  • src/server/StoryServer.server.luau
  • src/shared/Config.luau
  • src/shared/Localize.luau
  • src/shared/StageBuilder.luau
  • src/shared/Story.luau
  • src/shared/StoryRuntime.luau
  • src/shared/Strings.luau
  • story-tests.json
  • story.pack.json

Place everything with the Studio plugin

  1. Install the plugin (Creator Store listing coming; for now put the file below in Studio's Plugins folder)
  2. Open Plugins → BunCho → Story Pack and pick the exported .json, or paste an https URL
  3. Build stage now lays out rooms, glowing story points and NPCs from Parts (all editable)
  4. Press Play. For several players use Test → Clients and Servers

Using Rojo? Unzip, run rojo serve and connect from Studio. You can also drag in the .rbxmx (steps in the README).

Publish

Publish on Roblox and try to monetize it (any earnings depend on Roblox's terms and DevEx eligibility).

Why build it with BunCho

Designed with age ratings in mind

  • No generative AI runs inside the game. Every line is fixed and checked at export time (no open-ended AI chat).
  • Scares are only flicker, blackout, shadows, a whisper caption and a small camera shake. No blood, injuries or loud jump scares (Config.ScareIntensity = 0 turns them off).
  • Answer Roblox's Maturity & Compliance questionnaire accurately for your own experience.

What you still do in Roblox Studio

  • Build the world (the stage is plain blocks; for your own map, tag Parts BunChoStoryTrigger with a Place or Npc attribute)
  • Sounds, models and animations you have the rights to use
  • Multiplayer testing, thumbnails, description, questionnaire and publishing

Templates

Escape from the Old School

Three students are locked inside an abandoned school and must escape within five minutes. Find the key, crack the cipher, open the door. Five endings.

5-minute timer · 3 NPCs · key / cipher / door · 5 endings

The Mansion Without Lights

On a stormy night, a group of friends is locked inside an old mansion. Find the silver and gold keys and uncover the secret of the ghost girl who lives there. Five endings.

Co-op · silver and gold keys · spooky effects (all ages) · 5 endings

Open and edit in the studio →

Pricing

Exporting to Roblox is included in BunCho plans. The Studio plugin and the templates are free.

FAQ

Do I need to know Roblox Studio?

Not to import and press Play. Building the world and publishing happen in Roblox Studio.

Does an AI chat with players in the game?

No. All dialogue is fixed text written at export time, which keeps the game suitable for all ages.

Can I use it to make a Roblox horror game?

Yes. The co-op horror template has key-hunting co-op, five endings and all-ages scares.

Can I use my own map?

Set Config.BuildStage = false and tag Parts BunChoStoryTrigger with a Place (place id) or Npc (character id) attribute; those become the story's entry points.

Is Rojo required?

No. You can import with the BunCho plugin or drag in the .rbxmx.

Features described are those available in BunCho today. A screen recording in Roblox Studio is in preparation. 日本語