NVL模式教學 link
視覺小說中總共有兩種表現形式。ADV模式下使用界面底部的一個窗口顯示對話和旁白,每次顯示一行。NVL模式下使用幾乎占據整個界面的一個窗口,每次能在界面上顯示多行對話和旁白。
在這篇教學中,我們會解釋如何使用Ren’Py製作NVL模式的遊戲。教學假設你已經熟悉Ren’Py的基本功能,至少看過 快速入門 內容。
入門 link
NVL模式可以通過兩步操作添加到Ren’Py腳本中。第一步是定義使用NVL模式的角色,第二步是在每頁結尾添加 nvl clear
語句。
在每個角色定義階段,加入一個 kind=nvl
參數就定義了一個使用NVL模式的角色。例如,如果我們在快速入門手冊定義的角色:
define s = Character('希爾維亞', color="#c8ffc8")
define m = Character('我', color="#c8c8ff")
改為使用NVL模式,定義方法變成:
define s = Character('希爾維亞', kind=nvl, color="#c8ffc8")
define m = Character('我', kind=nvl, color="#c8c8ff")
NVL模式的旁白可以使用如下定義:
define narrator = nvl_narrator
需要注意,我們也可以添加一個 narrator
的NVL模式定義。 narrator
角色用於不由任何其一個角色發言的內容。
如果我們一直這樣運行,開頭的幾行文本可以正常顯示。一會之後,文本會顯示到界面底部下面,就看不到了。要將腳本分割為多頁,可以在分頁的地方使用一個 nvl clear
語句。
下面是一個使用分頁的樣例腳本:
label start:
"我得問問她!"
m "嗯呣……你是否可以……"
m "你是否可以做我的視覺小說畫師?"
nvl clear
"沉默。"
"她有些吃驚,然後……"
s "當然,不過,什麼是\"視覺小說\"?"
nvl clear
NVL模式的遊戲一般在每段都有更多文本,這個樣例只是個最基礎的NVL模式腳本。(適合用於不需要轉場效果的電子小說(kinetic novel)。)
NVL的獨白模式 link
在NVL模式下也可以實現 獨白模式 。
某行包含文本標籤(tag) {clear}
的腳本,在功能上等效於 nvl clear
語句,並且會維持獨白模式。
舉例:
s """
這是獨白模式的一段文本。
這是第二段文本,與第一段顯示於同一頁內。
{clear}
頁面清空了!
"""
顯示和隱藏NVL窗口 link
使用標準的 window show
和 window hide
語句就可以控制NVL模式窗口。
如果需要在顯示和隱藏窗口是選用默認轉場,可以在腳本中使用如下配置:
init python:
config.window_hide_transition = dissolve
config.window_show_transition = dissolve
將 config.empty_window
配置為 nvl_show_core
後,就能讓NVL模式窗口使用轉場(transition)顯示。後面兩行語句,配置了窗口顯示和隱藏時使用的默認轉場效果。
一個顯示和隱藏窗口的樣例如下:
label meadow:
nvl clear
window hide
scene bg meadow
with fade
window show
"我們抵達了城鎮外的牧場。這裡的秋天格外秀美。"
"童年時,我們經常在牧場裡玩耍。"
m "嗨……唔……"
window hide
show sylvie smile
with dissolve
window show
"她把臉轉向我,上面掛著微笑。"
"我得問問她!"
m "嗯呣……你是否可以……"
m "你是否可以做我的視覺小說畫師?"
這裡顯示使用了 nvl show
和 nvl hide
語句控制NVL模式窗口的顯示和隱藏。窗口可選使用轉場,並且可以在遊戲中混合使用NVL模式和ADV模式窗口。
訂製角色 link
NVL模式角色可以使用訂製,具有幾種不同的外觀。希望創作者可以選取其中滿足自己需求的。
默認外觀是角色名字在左側。名字後面開始為對話內容。角色名字的顏色由參數“color”控制。
define s = Character('希爾維亞', kind=nvl, color="#c8ffc8")
第二種外觀是角色名字內嵌在文本中。角色發言內容包含在引號中。這裡需要注意,角色名字放在參數“what_prefix”中,使用開放的引號。(閉合的引號放的是“what_suffix”參數。)
define s = Character(None, kind=nvl, what_prefix="希爾維亞: \"", what_suffix="\"")
第三種外觀不直接分配角色名,把對話內容放在引號中。
define s = Character(None, kind=nvl, what_prefix="\"", what_suffix="\"")
由於第三種外觀可能會讓人難以區分誰在發言,我們可以使用“what_color”參數把對話染色。
define s = Character(None, kind=nvl, what_prefix="\"", what_suffix="\"",
what_color="#c8ffc8")
當然,一個完全沒有訂製化的NVL模式角色也可以直接使用,前提是你想要把握整體顯示效果。(常用於旁白。)
define s = Character(None, kind=nvl)
配置項 link
下列配置項控制NVL相關的功能。
- define config.nvl_layer = "screens" link
NVL界面使用的圖層(layer)。
- define config.nvl_list_length = None link
若非None,這項表示NVL對話列表的最大長度。配置這項值(通常用於將對話強制限制在一個固定高度內),可以模仿一個無限的可滾動NVL窗口。
- define config.nvl_page_ctc = None link
若非None,這是用於NVL模式角色的“點擊繼續”提示,當到底頁面底部時出現。(也就是後面跟一個“nvl clear”語句)。這項代替了
Character()
的ctc參數。
- define config.nvl_page_ctc_position = "nestled" link
若非None,這是用於NVL模式角色的“點擊繼續”提示坐標,當到底頁面底部時出現。(也就是後面跟一個“nvl clear”語句)。這項代替了
Character()
的ctc_position參數。
- define config.nvl_paged_rollback = False link
若為True,NVL模式回滾時一次處理一整個頁面。
Python 函數 link
- nvl_clear() link
等效於
nvl clear
語句。
- nvl_hide(with_) link
等效於
nvl hide
語句。- with_
隱藏NVL模式窗口使用的轉場(transition)。
使用NVL樣式顯示窗口的Python函數。很少直接使用。通常用於聲明菜單變數,像這樣:
define menu = nvl_menu
- nvl_show(with_) link
等效於
nvl show
語句。- with_
顯示NVL模式窗口使用的轉場(transition)。
Paged Rollback link
頁面回滾操作會讓Ren’Py一次回滾NVL模式的一個頁面,而不是一次一個文本段落。在腳本中如下配置就能啟用。
init python:
config.nvl_paged_rollback = True
“The Question”的腳本(NVL模式版本) link
你可以在:doc:這裡 <thequestion_nvl> 查看MVL模式版本的“The Question”。