劇本如何變成程式能讀的資料:節點、選項、條件與結果
把劇本接入程式,關鍵不是把 Word 檔案複製進 JSON,而是建立一份穩定的敘事資料契約。每個節點描述播放什麼、何時出現互動;每個選項描述顯示條件、玩家意圖、狀態結果和目標節點。文字、媒體和邏輯相互引用,卻各自擁有可追蹤的版本。

開篇導讀
把劇本接入程式,關鍵不是把 Word 檔案複製進 JSON,而是建立一份穩定的敘事資料契約。每個節點描述播放什麼、何時出現互動;每個選項描述顯示條件、玩家意圖、狀態結果和目標節點。文字、媒體和邏輯相互引用,卻各自擁有可追蹤的版本。
從穩定 ID 開始
章節、場景、節點、選項和資產都需要唯一 ID。顯示標題可以改,ID 一旦進入製作就不重用。例如節點 C02_S04_N030,選項 C02_S04_N030_O2,影片 C02_S04_N030_main_v07.mp4。程式、字幕、事件追蹤和缺陷報告都使用同一識別碼。
ID 不包含演員名、情緒或最終台詞,因為這些會變化。廢棄 ID 留在變更紀錄中,避免舊存檔或日誌誤指新內容。
節點結構的各部分只承擔一種職責
節點資料可包含 id、media、entryConditions、onEnter、interactions、onExit、fallback 和 tags。媒體欄位引用資產清單,不直接混入本機絕對路徑;條件只讀取狀態;效果只寫入允許的狀態。
{
"id": "C02_S04_N030",
"media": "VID_C02_S04_N030_MAIN",
"entryConditions": ["evidence_recording == true"],
"interactions": ["C02_S04_N030_O1", "C02_S04_N030_O2"],
"fallback": "C02_S04_N040"
}
範例只表達邊界,具體格式可用 JSON、表格匯出或敘事腳本。重點是同一事實只有一個權威位置。
選項同時記錄顯示與後果
一個選項需要文案鍵、可見條件、可選條件、計時規則、狀態效果和目標節點。可見但不可選時,應給玩家原因;完全隱藏時,不應留下空白按鈕。文案使用在地化鍵,不把中文原句當作邏輯判斷。
效果最好採用受限操作,如設定布林值、增加資源、改變關係階段。不要允許任意腳本藏在每個選項中,否則編劇資料會變成無法稽核的程式。複雜行為透過有名稱的命令交給執行環境實作。
條件必須可驗證、可解釋
條件引用變數表中的正式名稱,並限制比較型別。布林值不與字串混用,列舉只接受合法值,數字設定上下界。編輯器或建置腳本在匯出時檢查未知變數、不可達節點、無出口的循環和目標缺失。
複雜條件拆成具名規則。例如 can_publish_truth 由關鍵證據齊全、記者仍合作、資源足夠組成。測試日誌同時輸出規則結果和基礎值,才能解釋玩家為什麼沒看到某個選項。
媒體清單與敘事資料解耦
節點只引用邏輯資產 ID;資產清單再對應不同平台、語言和畫質的檔案。這樣剪輯從 v06 換成 v07,不需要改分支邏輯;行動裝置使用較低位元率,也不必複製一套節點。
清單至少記錄檔案、校驗值、時長、解析度、音軌、字幕、版本和審核狀態。執行環境載入前可驗證校驗值和時長,減少錯片或截斷影片進入正式套件的情況。
設計明確的執行順序
規定進入節點、媒體準備、播放、顯示選項、提交選擇、寫入效果、離開節點的順序。狀態先寫還是先跳轉,會影響下個節點的進入判斷。建議把選擇提交做成原子交易:驗證仍可選,寫入結果,記錄日誌,再跳轉;失敗則不改變狀態並提供復原方式。
逾時、跳過、讀檔和重複點擊也要經過同一狀態機。按鈕提交後立刻鎖定,防止連點兩下寫入兩次;退出後重新進入時,根據已提交標記復原,而不是再次發獎。
建立資料驗證和可讀日誌
每次建置自動檢查 ID 唯一、引用存在、至少一個出口、變數型別正確、在地化鍵齊全、媒體可找到。警告與錯誤分級:缺少非必要備註可警告,目標節點不存在必須阻止建置。
執行日誌用結構化事件記錄工作階段、節點、選項、前後狀態摘要、時間和版本。日誌不能包含不必要的個人資訊;除錯建置可以更詳細,正式分析事件遵守隱私和同意要求。
讓非程式人員也能審查
機器可讀不等於人難讀。由同一資料產生節點表、分支圖和可玩預覽,編劇檢查台詞,製片檢查資產,測試人員檢查路徑。任何手動產生的副本都標明不可回寫,避免多人維護多份真相。
下一步:選十個節點定義最小資料綱要,寫出一個合法和三個故意錯誤的範例;讓建置檢查準確攔截未知變數、懸空出口和缺失媒體後,再匯入全篇。


