繁體中文
English 简体中文 繁體中文
Methodox 首頁

主題設定

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

The Red Thread 的主選單,完全在其選項指令碼中設定主題

使用方式 配置 主題
指令碼 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 選單淡入所需的時間。

畫廊,其中有尚未解鎖的圖片

音樂空間

About 介面

主題設定與樣式

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,因此只要機器上裝有其中任何一種,中文、日文和韓文文字就能開箱即用地正確顯示。

在同一個字型族列表中,英文使用 EB Garamond,中文使用 LXGW WenKai

要隨遊戲一起釋出字型,請將字型檔案放入遊戲資源中,在 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、Русский),否則顯示其程式碼。