Roblox × Story OS

物語から、Robloxのストーリーゲームを。

BunChoのStory OSで書いた物語を、NPCの会話・クエスト・分岐・結末つきのRobloxのプロジェクトにして書き出します。ワールドを作るのはRoblox Studio、物語の骨組みと会話はBunCho。長い物語の構造、キャラの一貫性、分岐の整合性で勝負します。

例文から公開まで

例文廃校に閉じ込められた3人の生徒が、5分以内に脱出するミステリーゲームを作って
  1. Story OSの「新しいシリーズ」に一文を入れると、AIが筋・人物・場面を作ります(クレジットを使います)。用意したテンプレートから始めることもできます。
  2. 「ゲーム」タブで選択肢とフラグ(鍵を持っている、暗号を解いた…)を足します。行き止まり・たどり着けない場面・立たないフラグはその場で見つかります。
  3. Story Testsに通ると「Robloxに書き出す」が押せます。Rojoのプロジェクト・.rbxmx・プラグイン用の.jsonが入ったzipです。
  4. Roblox StudioでBunChoプラグイン(またはRojo)から取り込むと、NPC・クエスト・会話のUIが配置されます。
  5. ワールドを作り込み、複数人でテストして、Robloxに公開します。

書き出されるもの

下は、この例文に当たるテンプレート『廃校からの脱出』を実際に書き出した結果です(書き換えていません)。

物語の構造(分岐と結末)

15の場面と5つの結末。矢印は先へ進む選択肢(教室に戻るなどの戻り道10本は省略)。

閉じこめられた放課後閉じこめられた放課後3年B組の教室3年B組の教室図書室の暗号図書室の暗号ちがう棚ちがう棚ミオの秘密ミオの秘密理科室のロッカー理科室のロッカー昇降口の鍵昇降口の鍵ソラのメモソラのメモ昇降口昇降口開いた扉開いた扉三人そろって三人そろって脱出成功脱出成功いたずらの真相いたずらの真相裏口の合言葉裏口の合言葉朝を待つ朝を待つ

三人そろって / 脱出成功 / いたずらの真相 / 裏口の合言葉 / 朝を待つ

NPC 3人(性格・口調・秘密・行動)

ハル

クラス委員

性格
仕切りたがりで強がり。でも責任感は誰より強い。
口調
はきはきした命令口調。
目的
全員を連れて帰る
秘密
自分が書いたいたずらのメモのせいで、みんなが閉じ込められたと思いこんでいる。
セリフの例
“落ち着け。5分で出口を見つけるぞ。”

ミオ

図書委員

性格
物静かで観察力が鋭い。人に頼るのが苦手。
口調
小声で、短く正確に話す。
目的
暗号を解く
秘密
去年もここに閉じ込められかけ、黒板の暗号を残したのは自分。
セリフの例
“黒板に、数字の暗号がある。”

ソラ

陸上部

性格
明るくておしゃべり。暗い所が苦手。
口調
元気なタメ口。
目的
暗くなる前に家に帰る
秘密
用務員さんのメモをポケットに入れたまま忘れていた。
セリフの例
“暗くなる前に帰りたいよ……”

行動: 自分が話す場面の場所へ移動し、それ以外の場所で話しかけられると直近のセリフで答えます。秘密はプレイヤーには表示されない開発者向けのメモです。

クエスト(鍵を探す・暗号を解く・扉を開ける)

選択肢の条件になっているフラグが、そのまま目標の一覧になります。制限時間は300秒、時間切れで「朝を待つ」の結末へ。

5 分以内に校舎から出る
  • 913 の棚を調べる
  • 暗号の番号でロッカーを開ける
  • メモを預かる
  • ミオを信じる
扉を開ける方法
  • 鍵で正面の扉を開ける
  • 裏口で合言葉を言う

ゲーム内のUI

ミオ

黒板の数字は、本の分類番号だと思う。

913 の棚を調べる400 の棚を調べる教室に戻る

UIはコードで組み立てるので、画像の素材は要りません。色とフォントはStoryClientの先頭のTHEMEで変えられます。

Luauのコード

データ(Story・Strings)と、動く部分(状態機械・サーバー・UI)に分かれています。選択はサーバーが毎回たしかめます(サーバー権威)。

-- 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で試すときは「APIサービスへのStudioアクセス」を有効にします。

6言語の翻訳表

日本語・英語・スペイン語・ポルトガル語・繁体字・簡体字。プレイヤーのRobloxの言語で表示し、無い言語は元の言語で出します。localization/BunChoStory.csvはRobloxの翻訳ツールにも使えます。

zipの中身

Studioプラグインで配置する

  1. プラグインを入れる(Creator Storeで公開予定。今は下のファイルをStudioのPluginsフォルダへ)
  2. 「Plugins → BunCho → Story Pack」を開き、書き出した.jsonを選ぶか、https のURLを貼る
  3. 「Build stage now」で部屋・光る調べる場所・NPCがパーツで並ぶ(編集できます)
  4. 「Play」で動作を確かめる。複数人は「テスト → クライアントとサーバー」

Rojoを使う人は、zipを展開して rojo serve → Studioで接続。.rbxmxをドラッグして入れる方法もあります(READMEに手順)。

公開

Robloxに公開して収益化に挑戦できる(収益はRobloxの規約・DevExの条件による)。

BunChoで作る理由

年齢区分を意識した作り

Roblox Studioで自分ですること

テンプレート

廃校からの脱出

廃校に閉じ込められた 3 人の生徒が、5 分以内に脱出するミステリー。鍵を探し、暗号を解き、扉を開ける。結末は 5 つ。

5分の制限時間・NPC 3人・鍵/暗号/扉・結末5つ

灯りの消えた洋館

嵐の夜、古い洋館に閉じ込められた仲間たち。銀と金の鍵を探し、館に住む幽霊の少女の秘密に触れる。結末は 5 つ。

協力型・銀と金の鍵・こわい演出(全年齢)・結末5つ

スタジオで開いて書き換える →

料金

Robloxへの書き出しはBunChoのプランに含まれます。Studioプラグインとテンプレートは無料です。

FAQ

Roblox Studioの知識は要りますか?

取り込んで「Play」を押すまでは要りません。ワールドの作り込みや公開はRoblox Studioで行います。

ゲームの中でAIがプレイヤーと会話しますか?

しません。会話はすべて書き出す時点で決まった文章です。そのため年齢を問わないゲームにしやすい作りです。

ホラーゲームの作り方としても使えますか?

はい。協力型ホラーのテンプレートは、鍵を探す協力・結末5つ・全年齢向けのこわい演出つきです。

自分のマップに組み込めますか?

Config.BuildStage = false にして、パーツにタグ BunChoStoryTrigger と属性 Place(場所のid)か Npc(人物のid)を付ければ、そこが物語の入口になります。

Rojoは必須ですか?

いいえ。BunChoプラグインか、.rbxmxのドラッグでも入れられます。

記載の機能は、いまのBunChoで動いているものです。Roblox Studioでの画面の録画は準備中です。 English