iT邦幫忙

2026 iThome 鐵人賽

DAY 4
0

前兩天談了世界觀跟角色。
今天要談的是把兩者串起來的機制——玩家的每一個選擇,怎麼變成看得到的後果。

Choice:選項不是「劇情分岔」,是「資料寫入」
每個重大選項在企劃階段就有一套固定的 ID 規格:CH章節場景選項組選項,例如 CH00S02C01A。這不是編號好看而已——每個選項 ID 背後都對應著明確的欄位:前置條件、即時效果、角色關係變化、旗標變化、後續影響、是否不可逆、是否鎖定或排除某條路線。

寫劇本的時候,選項從來不是「這句話要不要說」,而是「這句話要往哪幾個變數寫入資料」。
實際上光是八章主線加起來,光選項節點(Ink裡的分支)就超過 1100 個。

Flag:用布林值鎖住不可逆的過去
除了 0~100 的連續數值,另一套機制是永久旗標——像是「是否清洗顧家」「是否對焉支動武」「是否放棄皇位」這種一翻兩瞪眼、無法走回頭路的事件記錄。
https://ithelp.ithome.com.tw/upload/images/20260804/20183394paWE9gZeB4.jpg
《九重燼》的全域變數表(globals.ink)裡總共宣告了 764 個變數,混合著連續數值與布林旗標。這個數字聽起來誇張,但背後的邏輯很單純:只要一個選擇「以後可能被某個角色記住」,它就該有自己的旗標,而不是活在某個 if 判斷式的暗處,寫到第七、八章想串時翻不到。
https://ithelp.ithome.com.tw/upload/images/20260804/20183394GT2tJRZvDc.jpg

好感度:只是六個維度裡的其中一個
這裡延續 Day3 提過的設計——好感度從來不是單獨存在的。每個主要角色身上都掛著六軸關係參數:affection(好感)、trust(信任)、alignment(立場認同)、fear(恐懼)、ideal(個人理想)、hostility(敵意),全部走 clamp(value + delta, 0, 100) 的規則限制範圍。

一個選項可能同時讓某個角色的好感 +5、信任 -3、恐懼 +8——玩家討好一個人的同時,也可能讓這個人更怕你。這種「單一選擇,多重矛盾效果」是分支設計裡最花時間打磨的部分。

多結局設計:結局是疊出來的,不是選出來的
這是我覺得整個系統裡最重要的一條原則:正式結局不能只由最後一章的最後一個選項決定。

《九重燼》的結局判定分成四層:

國家結局——大晟與天下最後的狀態
男主結局——蕭承淵最終的身份與心理狀態
角色結局——女主、皇帝、德妃與各皇子的命運
尾聲修飾——同一個結局依數值/旗標再長出不同版本(例如同樣是「盛世明君」,柳如煙可能留朝也可能離開)
程式判定時是照固定優先順序,依序讀取全域數值、重大永久旗標、角色關係、登基方式等,走到第一個符合條件的結局就定案。

目前正式結局主線有 11 組(END01~END11),Demo 階段另外有 3 個可續玩結局 + 1 個死亡 Bad End,其中「一生一世」線下還細分出柳如煙、顧清漪、阿依娜、沈夢蝶、白蘅、卓雲翎六位角色各自的專屬收尾。

劇情流程圖:先畫骨架,再填台詞
實際寫劇本前,每章都會先整理出「可探索地點」與「場景流程」的結構圖——這章有哪些地點可以自由行動、哪些場景是必經、選項會把玩家導向哪個分支——確定骨架不會斷鏈之後,才開始填台詞。
這一步也是後來抓出不少 bug 的關鍵:避免knot結尾寫錯跳轉、導致玩家幾十行內故事就提早結束,靠的就是回頭比對這張流程圖跟實際 Ink 檔案有沒有對上。

四個 Step 走下來:選項寫入資料 → 旗標鎖住不可逆的過去 → 六軸關係決定誰真的挺你 → 結局分層疊加判定,這就是《九重燼》從「玩家點了一個選項」到「螢幕上出現一段結局文字」中間發生的事。


上一篇
Day3 角色設計:如何打造有血有肉的人物
下一篇
Day5 建立完整遊戲企劃文件(PRD)
系列文
《九重燼》Vue3 + PixiJS + Ink.js 視覺小說遊戲開發全紀錄5
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言