跳到主要內容
BunCho

Roblox × Story OS

用你的故事,做出 Roblox 劇情遊戲。

BunCho 的 Story OS 會把故事匯出成含 NPC 對話、任務、分支與結局的 Roblox 專案。世界在 Roblox Studio 裡打造,故事骨架與對話由 BunCho 提供。我們專注於長篇結構、角色一致性與分支的完整性。

從一句話到上架

範例指令做一款推理遊戲:三名被困在廢棄校舍的學生,要在 5 分鐘內逃出去
  1. 在 Story OS 的「新系列」輸入一句話,AI 會寫出劇情、角色與場景(會使用點數)。也可以從現成的範本開始。
  2. 在「遊戲」分頁加上選項與旗標(拿到鑰匙、解開暗號…)。死路、無法抵達的場景、沒人會設定的旗標會立刻標出。
  3. 通過 Story Tests 後即可「匯出到 Roblox」:zip 內含 Rojo 專案、.rbxmx 模型和外掛用的 .json。
  4. 在 Roblox Studio 用 BunCho 外掛(或 Rojo)匯入,NPC、任務與對話介面就會擺好。
  5. 打造世界、多人測試,然後發布到 Roblox。

會產生什麼

以下是對應這句話的範本《逃出廢棄校舍》實際匯出的結果(未經修改)。

故事結構(分支與結局)

15 個場景、5 個結局。箭頭是往前的選項(回到教室等 10 條回頭路未畫出)。

被關住的放學後被關住的放學後三年B班教室三年B班教室圖書室的暗號圖書室的暗號錯誤的書架錯誤的書架美緒的秘密美緒的秘密理化教室的置物櫃理化教室的置物櫃出入口的鑰匙出入口的鑰匙小空的紙條小空的紙條校舍出入口校舍出入口打開的門打開的門三人一起三人一起逃脫成功逃脫成功惡作劇的真相惡作劇的真相後門的暗語後門的暗語等待天亮等待天亮

三人一起 / 逃脫成功 / 惡作劇的真相 / 後門的暗語 / 等待天亮

3 名 NPC(個性・口吻・秘密・行為)

小春

班長

個性
愛發號施令又逞強,責任感卻比誰都強。
口吻
語氣乾脆,像在下命令。
目的
把大家都帶回家
秘密
以為是自己寫的惡作劇紙條害大家被關住。
台詞範例
“冷靜。五分鐘內找到出口。”

美緒

圖書股長

個性
安靜、觀察力敏銳,不擅長依賴別人。
口吻
小聲、簡短而精準。
目的
解開暗號
秘密
去年也差點被關在這裡,黑板上的暗號就是她留下的。
台詞範例
“黑板上有數字暗號。”

小空

田徑隊員

個性
開朗健談,怕黑。
口吻
活潑隨性的口吻。
目的
天黑前回家
秘密
忘了工友給的紙條一直放在口袋裡。
台詞範例
“我想在天黑前回家……”

行為:NPC 會移動到自己有台詞的場景地點;在其他地方被搭話時,會用最近的一句台詞回應。秘密是給開發者的備註,不會顯示給玩家。

任務(找鑰匙・解暗號・開門)

選項所依賴的旗標會直接變成目標清單。時間限制 300 秒,時間到就進入「等待天亮」結局。

5 分鐘內離開校舍
  • 調查 913 號書架
  • 用暗號的號碼打開置物櫃
  • 收下紙條
  • 相信美緒
開門的方法
  • 用鑰匙打開正門
  • 在後門說出暗語

遊戲內介面

  • 對話視窗:說話者名字、一次一行、下一步
  • 選項:多人時投票(多數決、有時間限制)
  • 目標顯示:打勾清單與下一個地點
  • 計時器:剩 30 秒變紅
  • 結局:已發現的結局數(共 5 個)
美緒

我想黑板上的數字是圖書分類號。

調查 913 號書架調查 400 號書架回到教室

介面用程式碼組成,不需要圖片素材。可在 StoryClient 開頭的 THEME 表調整顏色與字型。

Luau 程式碼

資料(Story、Strings)與運作部分(狀態機、伺服器、介面)分開。每個選擇都由伺服器確認(伺服器權威)。

-- 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

存檔

DataStore 可選(Config.UseDataStore)。會儲存已發現的結局與單人進度。在 Studio 測試時,請開啟「Studio 存取 API 服務」。

6 種語言的翻譯表

日文、英文、西班牙文、葡萄牙文、繁體中文、簡體中文。依玩家的 Roblox 語言顯示,缺少的語言用原文。localization/BunChoStory.csv 也能搭配 Roblox 的翻譯工具使用。

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

用 Studio 外掛擺放

  1. 安裝外掛(即將上架 Creator Store;目前可把下方檔案放進 Studio 的 Plugins 資料夾)
  2. 開啟 Plugins → BunCho → Story Pack,選擇匯出的 .json,或貼上 https 網址
  3. 「Build stage now」會用零件擺出房間、發光的故事點與 NPC(都能編輯)
  4. 按「Play」確認。多人測試請用「測試 → 用戶端與伺服器」

使用 Rojo 的話,解壓縮後執行 rojo serve,再從 Studio 連線。也可以把 .rbxmx 拖進去(步驟見 README)。

發布

可以發布到 Roblox 並挑戰營利(收益取決於 Roblox 的條款與 DevEx 的條件)。

為什麼用 BunCho 做

考量年齡分級的設計

  • 遊戲中不會執行生成式 AI。所有文字在匯出時就已決定並檢查過(不放入自由輸入的 AI 聊天)。
  • 恐怖演出只有燈光閃爍、斷電、影子、耳語字幕與輕微晃動。沒有血腥、受傷或大聲驚嚇(Config.ScareIntensity = 0 可關閉)。
  • 請依你的遊戲如實填寫 Roblox 的成熟度與合規問卷。

在 Roblox Studio 還要自己做的事

  • 打造世界(舞台只是方塊;用自己的地圖時,替零件加上標籤 BunChoStoryTrigger 與屬性 Place 或 Npc)
  • 有使用權的音效、模型與動畫
  • 多人測試、縮圖、說明、問卷與發布

範本

逃出廢棄校舍

三名學生被困在廢棄校舍,必須在 5 分鐘內逃出。找鑰匙、解暗號、打開門。共有 5 種結局。

限時 5 分鐘・3 名 NPC・鑰匙/暗號/門・5 個結局

熄燈的洋館

暴風雨之夜,一群朋友被困在古老的洋館。找出銀鑰匙與金鑰匙,揭開住在館中的幽靈少女的秘密。共有 5 種結局。

合作・銀鑰匙與金鑰匙・恐怖演出(全年齡)・5 個結局

在工作室開啟並修改 →

費用

匯出到 Roblox 已包含在 BunCho 的方案中。Studio 外掛與範本免費。

FAQ

需要會用 Roblox Studio 嗎?

匯入並按下 Play 之前都不需要。打造世界與發布要在 Roblox Studio 進行。

遊戲裡會有 AI 跟玩家聊天嗎?

不會。所有對話都是匯出時就寫好的文字,因此容易做成適合全年齡的遊戲。

可以用來做 Roblox 恐怖遊戲嗎?

可以。合作恐怖範本有合力找鑰匙、5 個結局與適合全年齡的恐怖演出。

能放進自己的地圖嗎?

設定 Config.BuildStage = false,並替零件加上標籤 BunChoStoryTrigger 與屬性 Place(地點 id)或 Npc(角色 id),那裡就會成為故事的入口。

一定要用 Rojo 嗎?

不用。也可以用 BunCho 外掛匯入,或拖入 .rbxmx。

文中功能皆為 BunCho 目前可用的功能。Roblox Studio 的操作錄影準備中。 日本語