主題設定
遊戲的行為由其配置決定,外觀由其主題決定。兩者都是普通資料,在每種使用方式下的設定方法都相同:

| 使用方式 | 配置 | 主題 |
|---|---|---|
| 指令碼 | define config.text_speed = 60 |
define theme.text_size = 40 |
| C# | game.SetConfig("text_speed", "60") |
game.SetTheme("text_size", "40") |
| Divooka,過程式 | Set Config | Set Theme |
| Divooka,函式式 | With Config | With Theme |
在 C# 和節點中,值的寫法與指令碼中相同:數字、true 或 false、方括號中的列表([40, 40, 40, 40]),或文字。通過程式碼進行的設定(SetConfig、SetTheme、SetResolution 和 SetTitle,或 Set Config、Set Theme、With Config 和 With Theme 節點)優先於指令碼中同一鍵的 define config. 或 define theme.,無論哪個先出現;因此程式可以先載入遊戲的指令碼,再更改其中某項設定。傳給建構函式的標題和解析度只是預設值,會被指令碼的 define 替換。對於 Novella 不認識的任何鍵,lint 都會發出警告。
主題中的所有內容都是可選的。沒有影像時,引擎會以主題顏色的面板繪製對話視窗、名字標籤、選項和對話方塊,這就是遊戲在擁有美術素材之前的樣子。
配置
| 鍵 | 預設值 | 含義 |
|---|---|---|
title |
Novella Game |
遊戲名稱:視窗標題和主選單標題。 |
version |
1.0 |
版本號,顯示在主選單和 About 中,並儲存在存檔裡。 |
developer |
遊戲的製作者,顯示在 About 中。 | |
about |
About 介面的文字。 | |
id |
存檔資料夾使用的簡短識別符號;為空時使用去掉空格和標點後的標題。 | |
icon |
用作視窗圖示的影像檔案。 | |
width、height |
1280、720 |
所有內容佈局所用的解析度;視窗會對其進行縮放。 |
start_label |
start |
Start 執行的標籤。 |
splash_label |
splashscreen |
若存在,則在啟動時、主選單之前執行一次的標籤。 |
main_menu_label |
main_menu |
若存在,則代替內建主選單執行的標籤;它返回時開始新遊戲。 |
after_load_label |
after_load |
若存在,則在載入存檔後呼叫的標籤。 |
fall_through |
true |
到達一個標籤的末尾時,是否繼續進入同一檔案中的下一個標籤,而不是結束遊戲。 |
rollback_limit |
100 |
玩家可以回滾的步數。 |
history_limit |
250 |
歷史記錄保留的條目數。 |
allow_rollback |
true |
玩家是否可以回滾。 |
rollback_past_choices |
true |
回滾是否可以復原選單選擇,讓玩家重新選擇。 |
text_speed |
40 |
預設打字速度,單位為每秒字元數;0 表示立即顯示文字。 |
auto_forward_delay |
2.0 |
一行顯示完畢後,自動前進之前的預設等待時間,單位為秒(每個字元再額外加一點)。 |
skip_unseen |
false |
跳過偏好設定 Unseen Text 的預設值。 |
skip_after_choices |
false |
跳過偏好設定 After Choices 的預設值。 |
fullscreen |
false |
全新安裝時是否以全屏啟動。 |
window |
auto |
對話視窗的預設可見性:auto(顯示對話時顯示,否則隱藏)、show 或 hide。 |
auto_voice |
語音檔案模式,例如 voice/{id}.ogg;若存在以臺詞 id(或 {character},即說話者的語音標籤)命名的檔案,則該行臺詞會播放它。 |
|
main_menu_music |
主選單上播放的音樂。 | |
start_transition |
fade |
從主選單進入遊戲時的轉場。 |
after_load_transition |
dissolve |
載入存檔後的轉場。 |
end_game_transition |
fade |
遊戲結束、返回主選單時的轉場。 |
original_language |
English |
指令碼自身語言的名稱,即語言偏好設定中列出的名稱。 |
default_language |
全新安裝時使用的語言;為空表示原始語言。 | |
autosave |
true |
遊戲是否在選單處和退出時儲存到自動存檔位。 |
autosave_slots |
6 |
輪換使用的自動存檔位數量。 |
save_pages |
6 |
存檔位的頁數。 |
slots_per_page |
6 |
每頁的存檔位數量。 |
show_quick_menu |
true |
是否在對話視窗下方顯示快捷選單(Back、History、Skip、Auto、Save、Q.Save、Q.Load、Prefs)。其簡短標籤會通過帶有對應按鍵的工具提示加以說明,例如 Quick save (F5);沒有可回滾的內容時,Back 會變暗。 |
confirm_quit |
true |
退出前是否先詢問。 |
show_title_on_main_menu |
true |
主選單是否繪製標題;當背景美術已包含標題時,請將其關閉。 |
developer_mode |
false |
開發者工具:Shift+O 開啟主控台,Shift+R 重新載入指令碼。 |
text_speed、auto_forward_delay、skip_unseen、skip_after_choices、fullscreen 和 default_language 是玩家偏好設定的預設值;一旦玩家更改了某項偏好設定,其選擇會儲存在持久資料中並優先生效。
主題
像素尺寸以 1080 像素高的遊戲為基準書寫,並按遊戲的高度(或在設定了 scale 時按其值)縮放,因此一個主題適用於所有解析度。顏色寫作 #rgb、#rrggbb 或 #rrggbbaa。內縮邊距、外邊距和內邊距可以是四個數字(左、上、右、下)、兩個數字(水平、垂直),或一個數字表示四邊相同。
縮放與字型
| 鍵 | 預設值 | 含義 |
|---|---|---|
scale |
0 |
所有像素尺寸的乘數;0 表示按遊戲高度相對於 1080 的比例縮放。 |
font_files |
[] |
資源中的字型檔案,在遊戲開始前註冊,以便下列字型族設定可以引用它們。 |
text_font |
對話使用的字型族;為空時使用預設字型棧。 | |
name_font |
說話者名字使用的字型族;為空時使用 interface_font。 |
|
interface_font |
選單和按鈕使用的字型族。 | |
title_font |
主選單標題和介面標題使用的字型族;為空時使用 interface_font。 |
|
text_size |
34 |
對話文字字型大小。 |
name_size |
36 |
說話者名字字型大小。 |
interface_size |
30 |
選單和按鈕文字字型大小。 |
small_size |
22 |
小號文字:快捷選單、存檔位詳情、備註。 |
heading_size |
48 |
介面標題(Save、Load、Preferences)。 |
title_size |
96 |
主選單標題。 |
line_spacing |
1.25 |
對話行高,以字型大小的倍數表示。 |
ruby_scale |
0.5 |
注音文字(ruby)相對於其基礎文字的大小。 |
顏色
| 鍵 | 預設值 | 含義 |
|---|---|---|
text_color |
#f7f2e8 |
對話。 |
name_color |
#f2c879 |
說話者名字,用於沒有自身顏色的角色。 |
accent_color |
#d9a441 |
選中項、滑塊填充、邊框。 |
interface_text_color |
#ebe4d6 |
選單文字。 |
idle_color |
#d8cfbf |
靜止狀態的按鈕文字。 |
hover_color |
#ffd98a |
指標下的按鈕文字。 |
selected_color |
#ffffff |
選中狀態的按鈕文字。 |
insensitive_color |
#7d7568 |
禁用的按鈕文字。 |
muted_color |
#a59c8c |
次要文字。 |
background_color |
#16121a |
沒有背景影像的選單的底色。 |
frame_color |
#120e14e8 |
面板:存檔位、偏好設定分組、對話方塊。 |
frame_border_color |
#d9a44166 |
面板邊框。 |
text_outline_width |
0 |
對話文字週圍的描邊,單位為像素,作為光暈繪製在字母后面,因此不會讓字母變細。 |
text_outline_color |
#000000 |
對話描邊的顏色。 |
text_shadow |
true |
對話是否投下柔和的陰影,使其在任何背景上都清晰可讀。 |
text_shadow_color |
#000000b0 |
陰影的顏色。 |
對話視窗
| 鍵 | 預設值 | 含義 |
|---|---|---|
textbox_image |
對話視窗的影像,按九宮格方式拉伸;為空時繪製面板。 | |
textbox_borders |
[40, 40, 40, 40] |
影像的九宮格內縮邊距,以影像像素計。 |
textbox_color |
#0f0b12d0 |
繪製的面板的填充色。 |
textbox_border_color |
#d9a44188 |
繪製的面板的邊框。 |
textbox_corner_radius |
14 |
繪製的面板的圓角半徑。 |
textbox_height |
270 |
視窗的高度。 |
textbox_margin |
[60, 0, 60, 30] |
視窗與螢幕邊緣之間的空間。 |
textbox_padding |
[70, 62, 70, 30] |
視窗邊緣與其文字之間的空間。 |
namebox_image |
說話者名字後面的影像(九宮格);為空時繪製標籤。 | |
namebox_borders |
[20, 10, 20, 10] |
名字影像的九宮格內縮邊距。 |
namebox_color |
#2a1a1ce8 |
繪製的名字標籤的填充色。 |
namebox_offset |
[50, -26] |
名字相對於視窗左上角的位置。 |
namebox_padding |
[26, 8, 26, 8] |
名字在其標籤內的周圍空間。 |
side_image_width |
300 |
視窗內為側邊影像保留的寬度。 |
ctc_image |
點選繼續指示器;為空時繪製一個小箭頭。在遊戲等待點選時,兩者都會輕輕浮動。 |

選項
| 鍵 | 預設值 | 含義 |
|---|---|---|
choice_image |
每個選單選項後面的影像(九宮格);為空時繪製面板。 | |
choice_hover_image |
指標下的選項影像。 | |
choice_borders |
[30, 12, 30, 12] |
選項影像的九宮格內縮邊距。 |
choice_width |
1100 |
選項按鈕寬度。 |
choice_height |
76 |
選項按鈕高度。 |
choice_spacing |
20 |
選項之間的空間。 |
choice_color |
#140f14e0 |
繪製的選項填充色。 |
choice_hover_color |
#4a2a1ef0 |
指標下繪製的選項填充色。 |
choice_center_y |
0.42 |
選項列表的垂直中心,以螢幕的比例表示。 |

選單
| 鍵 | 預設值 | 含義 |
|---|---|---|
button_image |
選單按鈕後面的影像(九宮格);為空時繪製純文字按鈕。 | |
button_hover_image |
指標下的選單按鈕影像。 | |
button_borders |
[20, 10, 20, 10] |
按鈕影像的九宮格內縮邊距。 |
main_menu_background |
主選單的影像名稱或檔案;為空時繪製漸層。 | |
game_menu_background |
Save、Load、Preferences 等介面後面的影像名稱或檔案;為空時將遊戲畫面調暗。 | |
main_menu_xalign |
0.08 |
主選單按鈕的水平位置。 |
main_menu_yalign |
0.86 |
主選單按鈕的垂直位置(其底部)。 |
main_menu_panel |
true |
主選單按鈕後面是否有半透明面板。 |
logo_image |
在主選單按鈕上方繪製、代替標題文字的影像。 | |
frame_image |
確認框等對話方塊後面的影像,使用 textbox 的內縮邊距按九宮格方式拉伸;為空時繪製面板。 | |
hover_sound |
指標進入按鈕時播放的聲音。 | |
click_sound |
按下按鈕時播放的聲音。 | |
notify_color |
#120e14ee |
通知的填充色。 |
nvl_background |
#000000b8 |
NVL 頁面的背景幕。 |
nvl_text_size |
32 |
NVL 文字字型大小。 |
menu_transition_time |
0.25 |
選單淡入所需的時間。 |



主題設定與樣式
Novella 自己繪製的每個介面都使用命名的樣式繪製,而這些樣式由主題構建。因此,主題設定是一個或多個內建樣式中某個屬性的簡寫:
| 主題設定 | 對應 |
|---|---|
text_font、text_size、text_color、line_spacing、text_outline_width、text_outline_color、text_shadow、text_shadow_color |
say_dialogue 的 font、size、color、line_spacing、描邊和陰影;NVL 頁面、置中文字和歷史記錄會繼承它們。 |
name_font、name_size、name_color |
say_label 的 font、size 和 color。 |
interface_font、interface_size、interface_text_color、accent_color |
default,即所有樣式繼承的根。 |
idle_color、hover_color、selected_color、insensitive_color、muted_color |
button_text 的 color 及其 hover_、selected_、insensitive_ 和 visited_ 變體。 |
textbox_image 或 textbox_color、textbox_borders、textbox_border_color、textbox_corner_radius、textbox_padding、textbox_margin、textbox_height |
say_window 的 background、borders、border_color、corner_radius、padding、margin 和 ysize。 |
namebox_image 或 namebox_color、namebox_borders、namebox_padding、namebox_offset |
namebox 的 background、borders、padding、xoffset 和 yoffset。 |
choice_image、choice_hover_image、choice_color、choice_hover_color、choice_borders、choice_width、choice_height、choice_spacing |
choice_button 的 background、hover_background、borders、xsize、ysize 和 spacing。 |
button_image、button_hover_image、button_borders |
menu_button 的 background、hover_background 和 borders;button_image 和 button_borders 還為遊戲自有介面上的 button 提供圖片。 |
frame_image 或 frame_color、frame_border_color |
frame 及各種面板:save_slot、tooltip、confirm_frame、game_menu_navigation 等。 |
hover_sound、click_sound |
每個按鈕樣式的 hover_sound 和 activate_sound。 |
title_font、title_size、heading_size |
main_menu_title 和 game_menu_title。 |
side_image_width、ctc_image、nvl_background、nvl_text_size、notify_color、background_color |
side_image、ctc、nvl_window、nvl_dialogue、notify_frame 和 game_menu。 |
故事中同名的 style 會疊加在主題構建的樣式之上,因此它是細化而非替換:define theme.text_color = "#fff4d0" 與設定了 color "#fff4d0" 的 style say_dialogue: 塊表達的是同一件事;只設定了 background 的 style say_window: 會保留主題中視窗的高度、外邊距和內邊距。未設定任何樣式的遊戲,外觀與僅由主題決定的完全相同。有些設定背後沒有樣式,因為它們說明的是內容放在哪裡或遊戲如何運作,而不是外觀:scale、font_files、choice_center_y、main_menu_xalign、main_menu_yalign、main_menu_panel、main_menu_background、game_menu_background、logo_image 和 menu_transition_time。
使用主題設定遊戲的整體外觀,用樣式處理主題鍵無法表達的內容:某個角色的視窗、名字或文字;選項的懸停邊框,或之前選過的選項的顏色;比其他容器圓角更大的容器;介面上某一個按鈕的外觀;臺詞中以另一種顏色顯示的某個詞。Built-in Style Names 節點會列出故事可以重新設定樣式的每個樣式。
字型
字型設定接受一個字型族列表:以逗號分隔的名稱,對每個字元依次嘗試,因此可以把拉丁字型放在前面,再由中文或日文字型補上它缺少的字元。引擎的預設字型棧總是跟在該列表之後:拉丁文字使用 Noto Sans、Segoe UI、Helvetica Neue 和 Arial,隨後是 Noto Sans CJK、Source Han Sans、Microsoft YaHei、PingFang SC、Yu Gothic UI、Hiragino Sans、Malgun Gothic、SimSun 和 DejaVu Sans,因此只要機器上裝有其中任何一種,中文、日文和韓文文字就能開箱即用地正確顯示。

要隨遊戲一起釋出字型,請將字型檔案放入遊戲資源中,在 font_files 中列出它們,並指定其字型族名稱:
define theme.font_files = ["fonts/EBGaramond-Regular.ttf", "fonts/EBGaramond-Italic.ttf", "fonts/EBGaramond-SemiBold.ttf", "fonts/LXGWWenKaiLite-Regular.ttf", "fonts/MaShanZheng-Regular.ttf"]
define theme.text_font = "EB Garamond, LXGW WenKai Lite"
define theme.name_font = "EB Garamond, LXGW WenKai Lite"
define theme.interface_font = "EB Garamond, LXGW WenKai Lite"
define theme.title_font = "Ma Shan Zheng, LXGW WenKai Lite"
可識別 .ttf、.otf 和 .ttc 檔案。請同時註冊一個字型族的斜體和粗體檔案,這樣 {i} 和 {b} 才會使用真正的字形。角色可以有自己的字型(character q "Qinglan" font "Ma Shan Zheng"),一段文字也可以用 {font=Family} 切換字型。CJK 字元上方的注音文字(ruby)大小由 ruby_scale 決定。請使用開放許可的字型(SIL Open Font License 或 Apache),並隨遊戲附上每種字型的許可證。
九宮格影像
對話視窗、名字標籤、選項、選單按鈕和對話方塊都可以使用按九宮格方式拉伸的影像:影像由四個內縮邊距切成 3×3 的網格,四個角按原始大小繪製,邊沿其長度方向拉伸,中心向兩個方向拉伸。因此,一張帶裝飾邊角的小影像可以填滿任意尺寸,而不會使邊角變形。
define theme.textbox_image = "gui/textbox.png"
define theme.textbox_borders = [48, 48, 48, 48]
define theme.textbox_height = 280
define theme.textbox_padding = [80, 66, 80, 34]
define theme.choice_image = "gui/choice_idle.png"
define theme.choice_hover_image = "gui/choice_hover.png"
define theme.choice_borders = [28, 28, 28, 28]
內縮邊距以影像自身的像素度量,不會縮放;它們說明四個角在哪裡結束。外邊距、內邊距和尺寸以遊戲像素計,並隨遊戲縮放。準備影像時,請將所有不能拉伸的內容(裝飾、圓角)放在角區域內,並讓邊和中心區域足夠簡單,以便拉伸。邊是拉伸的,而不是平鋪的。
| 影像 | 內縮邊距 |
|---|---|
textbox_image |
textbox_borders |
namebox_image |
namebox_borders |
choice_image、choice_hover_image |
choice_borders |
button_image、button_hover_image |
button_borders |
frame_image |
textbox_borders |
偏好設定
Preferences 介面為玩家提供以下選項:Display(Window 或 Fullscreen)、Skip(Unseen Text、After Choices、Transitions)、Language(當故事有翻譯時)、Text Speed、Auto-Forward Time、Text Size、Music Volume、Sound Volume、Voice Volume、Window Opacity 和 Mute All。偏好設定儲存在持久資料中,從不儲存在存檔裡。

介面翻譯
引擎自身的文字(主選單、遊戲選單、偏好設定、存檔位、確認框、通知、幫助介面)除英語外還內建了三種語言:

| 語言 | 選擇該語言的程式碼 | 覆蓋範圍 |
|---|---|---|
| 簡體中文 | zh、zh-Hans、zh-CN 以及下文未列出的任何其他 zh- 程式碼、schinese、chinese、simplified chinese |
所有介面文字、訊息和幫助行。 |
| 繁體中文 | zh-Hant、zh-TW、zh-HK、tchinese、traditional chinese |
選單、偏好設定、快捷選單及其工具提示、確認框和常見通知。 |
| 日語 | ja、ja-JP 和其他 ja 程式碼、japanese |
選單、偏好設定、快捷選單及其工具提示,以及最常見的訊息。 |
程式碼匹配時不區分大小寫,_ 與 - 視為相同。沒有翻譯的文字以英文顯示。當玩家的語言是上述語言之一時,內建文字即會生效;語言選擇器會列出故事已翻譯的語言,因此遊戲只需將自身文字翻譯成該語言(或設定 config.default_language),即可獲得這些內建文字。
故事自身的字串翻譯優先,因此遊戲可以替換任何語言中的任何引擎文字,包括 Novella 沒有對應翻譯表的語言:
translate zh-Hans strings:
old "Start"
new "开篇"
old "Quit"
new "归去"
translate ko strings:
old "Start"
new "시작"
對於它認識的程式碼,語言選擇器以語言自身的名稱顯示該語言(簡體中文、繁體中文、日本語、한국어、English、Français、Deutsch、Español、Русский),否則顯示其程式碼。