不相容的變更 link

這裡列出了腳本格式或者創作者開發環境變更後,需要調整的內容。我們旨在所有的變更都不會影響已存在的腳本內容。

只需要注意,設置 config.script_version 就恢復版本變更導致的許多變化,代價是無法使用新增特性。

關於GUI方面的不相容變更,詳見 不相容的GUI變更 部分,只有重新生成GUI才會讓這些變更生效。

7.4.6 link

7.4.5中對圖層清理規則的修改已發生反轉。新的 camera 語句符合新的規則,而 show layer 語句適用舊規則。

7.4.5 link

當前版本的遊戲開發預設使用基於模型的渲染器。若要禁用該渲染器,修改配置項:

define config.gl2 = False

7.4.6版本已反轉 scene 語句不再清理列表中的圖層(layer)。若需要清理圖層,使用:

show layer master

“master”是需要清理的圖層名稱。若要修復舊特性,修改配置項:

define config.scene_clears_layer_at_list = True

7.4.3 link

當前版本允許用戶使用點擊(滑鼠)忽略使用 renpy.transition() 轉場效果, 使其與使用 with 的say語句和 call screen 語句保持一致。 如果要保持原有特性,修改配置項:

define dismiss_blocking_transitions = False

7.4.1 link

當前版本的暫停效果使用 renpy.pause() 而不是 with Pause(...) 。 這意味著用戶需要多次點擊(滑鼠)才能跳過多個暫停。 如果要恢復原來的設置,修改配置項:

define config.pause_with_transition = True

7.4 link

移動平台僅限於軟解解碼,可以使用硬體解碼播放影片。如果要回歸原來的設置:

define config.hw_video = True

當前版本Ren’Py只在圖像標籤(tag)中至少包含一個屬性(attribute)的情況下才會顯示側邊欄頭像(side image)。禁用該設置:

define config.side_image_requires_attributes = False

7.4版本起,將不再支持初始化階段以外的場景修改配置項,比如 config.mouse 。 請考慮使用 default_mouse 配置項設置自訂的滑鼠游標。

7.3.3 link

在配置項 config.start_callbacks 中註冊的回調功能,任何情況下都會在 default 語句之後運行。 如果要恢復原來的行為模式(即回調在 default 語句之前運行):

define config.early_start_store = True

當視口或vpgrid帶有滾動條時,將自動關聯minimum、xminimum和yminimum變長特性到對應邊的滾動條上,而不僅僅是視口自身的特性。

要繞開這個不相容點,要嘛使用 viewport_minimumviewport_xminimumviewport_yminimum,要嘛修改配置項:

define config.compat_viewport_minimum = True

7.3.0 link

界面語言方面,在遇到類似下面的代碼時會出現錯誤提示“a non-constant keyword argument … is not allowed after a python block.” :

screen test():

    default a = 0

    button:
        $ a = 1
        action Return(a)

        text "Test"

原因是,action 特性會在Python變數聲明之前運行,所以運行結果會返回0而不是1。 如果要禁用這個錯誤提示功能,請在遊戲的game目錄下名為 01compat.rpy 的文件中添加一行:

define config.keyword_after_python = True

side 布局的所有子對象的繪製順序,現在由控制字串決定。如果要改為原來的固定順序,請使用:

define config.keep_side_render_order = False

config.say_attribute_transition_callback 配置項的介面發生不相容的改變。 改變後允許使用新舊標籤(tag)的集合。 如果要恢復成舊的介面,請使用:

define config.say_attribute_transition_callback_attrs = False

模式參數也有一些改變,當 permanenttemporary 屬性轉場都奏效時,將返回 both

7.2.2 link

config.say_attribute_transition_callback 配置項已變更,接受一個新的入參,表示顯示的圖像。

7.1.1 link

Ren’Py的window auto功能現在會自動判斷對話或標題是否帶menu語句,並會在合適的時機自動隱藏或顯示對話窗口。 啟用這項特性需要使用“強制重新編譯”。考慮到較老遊戲的相容性問題,這項特性可以通過如下配置關閉:

define config.menu_showed_window = True
define config.window_auto_show = [ "say" ]
define config.window_auto_hide = [ "scene", "call screen" ]

由於這並非嚴格意義上的不相容變更,對於歷史界面(screen)來說,推薦做一點修改。 詳見 變更日誌入口 中如何更新遊戲的部分。

7.1 link

當某個圖像不正處於顯示時,帶屬性(attribute)的say語句會決定一個頭像(side image),而不是使用之前某個給定的屬性。 如果要禁用這項特性,在配置中添加:

define config.say_attributes_use_side_image = False

7.0 link

Ren’Py現在將自動圖像(automatic images)的優先度定義為 init 0,而不是原來那樣一個非常低的init級別。 如果需要恢復到以前的情況,需要在遊戲腳本中這樣寫:

init -1:
    define config.late_images_scan = True

現在 Dissolve()ImageDissolve()AlphaDissolve() 轉場預設使用原可視組件的alpha通道值,就像指定了 alpha=True 。 如果不使用這個特性,需要在配置中添加:

define config.dissolve_force_alpha = False

已經顯示的某個影片精靈(movie sprite)再次使用show命令時,現在會重播該影片。 如果不使用這個特性,需要在配置中添加:

define config.replay_movie_sprites = False

6.99.13 link

超連結的字體大小繼承鄰近文本。禁用這個特性,需要在配置中添加:

define config.hyperlink_inherit_size = False

文本標籤 {nw} 現在會等待語音和自動語音結束,然後實現文本消失的效果。 如果想禁用這個特性,需要在配置中添加:

define config.nw_voice = False

現在ATL變換(transform)在遇到某個pause語句或者interpolation語句時,會顯示至少一幀。 如果遊戲中不希望出現這種情況,而是顯示為一些快速略過的幀,需要這樣配置:

define config.atl_one_frame = False

現在某個語句內顯示的圖層(layer),將保持變換(transform)的狀態,就跟其他ATL變換一樣。 這個特性會導致一些行為表現的變化,例如,語句中多個圖層顯示的偏移量會保持一致。 如果想禁用這個特性,需要在配置中添加:

define config.keep_show_layer_state = False

如果並非不相容性變更導致, renpy.list_files() 會以標準順序將變更排序。 這會觸發Ren’Py對存在歧義的行為進行定,並產生確定的唯一結果。 例如,images目錄下有多個同名文件,Ren’Py會隨機選取其中之一。(在不同的系統上,選取的文件可能不同。) 現在,Ren’Py運行時總是會選擇同一個文件。

6.99.12.3 link

開發者模式下,Ren’Py不再搜索系統已安裝的字體檔案。 如果遊戲使用系統已安裝的字體,字體檔案應該被複製到game目錄下。(但是請確保這個行為符合字體檔案的使用許可。)

6.99.11 link

style 和``translate`` 語句的執行順序已經改變,詳見文件 the changelog 。 如果不使用這個特性,需要在配置中添加:

define config.new_translate_order = False

注意,不使用這個變更會讓新版本的GUI也無法生效。

配置項 config.quit_action 的預設值已經變更,改為“遊戲中”上下文(context)時退出才會給提示。 如果不使用這個特性,需要在配置中添加:

define config.quit_action = ui.gamemenus("_quit_prompt")

現在Ren’Py增大了按鈕和窗口所允許的最大尺寸。 如果不使用這個特性,需要在配置中添加:

define config.enforce_window_max_size = False

6.99.9 link

現在Ren’Py在名為“audio”的通道上播放介面音效,並且支持同時播放多個音效。 該通道的設置未必與訂製化的音效通道相同。audio通道可以通過調整配置項 config.auto_channels 的值來改變。 或者添加如下代碼使用sound通道。

define config.play_channel = "sound"

6.99.2 link

現在Ren’Py會自動掃描圖片目錄(game目錄下名為images的子目錄)並搜尋圖片文件,並基於圖片檔案名自動定義圖像(image)。 如果不使用這個特性,需要在配置中添加:

init python:
    config.image_directory = None

6.18 link

現在 show screencall screen 語句將在界面預處理進程中計算使用的入參。 如果計算結果對某個界面可能會產生副作用, show screencall screen 後面就需要使用新增的 nopredict 分句,這樣就不進行預處理。

界面(screen)現在可以接受轉場(transition)——轉場效果可以讓界面從舊的狀態轉變到新的狀態。 如果不使用這個特性,需要將配置項 config.transition_screens 設置為false。

同名tag的界面互相替換時,Ren’Py不在使用等式賦值方式轉換界面狀態。 現在的方法是, use語句 現在支持 id 特性,這個特性可以用於顯式轉換界面狀態。

6.16 link

如果需要使用原來的特性,需要將 loopsingle_track 同時設置為true。

6.15.7 link

Ren’Py在 Preference() 函數中加入了“auto-forward”,可用於控制自動前進模式。 如果需要使用自動前進模式滑動條,就將配置將 config.default_afm_enable 設置為None。

6.14 link

以前的版本中,Ren’Py會將歸檔文件放入archived目錄。當運行遊戲或生成歸檔時,Ren’Py會自動搜索該目錄。 現在有了一鍵打包功能,就沒有必要執行這步操作,所有原來在archived目錄裡的文件都應該移到game目錄下。

MoveTransition() 修改了介面。 如果創作者不想使用重寫程式碼,可以使用OldMoveTransition實現舊版本MoveTransition的功能。 (新舊版本的變化,僅跟使用MoveTransition實現的效果有關。)

Transform() 修改了特性,可以實現圖片的非對稱縮放和旋轉。這與舊版的使用方法不同。

6.13.8 link

舊式的字串替換重新預設為啟用狀態。 如果創作者寫的代碼(使用6.13和6.13.7之間的版本),在say語句或menu語句中使用了 % ,可以直接替換為 %% ,或者添加如下代碼:

init python:
    config.old_substitutions = False

6.13 link

關於文本特性的許多變化會對遊戲開發產生多種影響。 最大的變化是,引入了新式的(方括號)文本替換,並淘汰了舊式的(使用百分號)文本替換方案。 如果需要恢復舊式特性,需要使用以下配置:

init python:
    config.old_substitutions = True
    config.new_substitutions = False

將兩項都設置為True後,就可以在同一個遊戲裡混用新式和舊式文本替換。

Ren’Py還修改了預設的線性傳送(line-wrapping)特性。新的特性不會再增加某個段落中的的行數,它可能會修改每行內單詞。 如果需要使用舊特性,可以添加如下代碼:

init python:
    style.default.layout = "greedy"
    style.default.language = "western"

行間距為負數的bug已經修復。這個修復能導致語句塊中顯示文本高度會有一點縮進。 如果需要使用舊版特性,使用如下配置:

init python:
    config.broken_line_spacing = True

最後,新的文本代碼可能會在顯示慢速文本時需要手工調整,特別是在負值的行間距情況下。 可以考慮調整 line_overlap_split 的值來修正。

6.12.1 link

圖像的名稱,已經從靜態名改為基於屬性的命名方式。這個特性可能會導致原先唯一的圖像名稱變成同名圖像。 如果需要禁用基礎屬性的圖像命名,將配置項 config.image_attributes 設置為False。

不顯式提供一個變換(transform)或ATL語句塊(block)的情況下顯示某個圖像,將保持那個圖像前一個使用的變換(transform)。 這意味著,某個移動中的圖像將保持移動狀態。如果需要使用舊的特性,可以將配置項 config.keep_running_transform 設置為False。

Character()image 入參含義發生變化。 舊版本的含義在基於界面環境下不能被支持。 出於相容性的考量,將配置項 config.new_character_image_argument 設置為False可以使用恢復舊版的含義。

6.12.0 link

Choicenvl_choice 界面內的 items 參數定義已改變。 nvl_choice 界面不再作為 NVL 的代替。

為了允許預載入圖像,可以在任意時刻喚起界面,除非預載入特性(property)的值是False。 當預載入特性的值不為False時,從最初的顯示開始,界面就不應該導致任何副作用。

由於某些性能原因,Ren’Py現在忽略ImageReference的位置特性(property)。 這意味著style.image_placement類型的位置特性都會被忽略。如果需要恢復舊版本的特性,將配置項 config.imagereference_respects_position 設置為True。

6.11.1 link

MoveTransition() 已修改為適應移動可視組件的xoffset和yoffset參數。 用於移動的功能函數現在使用 xoffsetyoffset 作為入參。內建的移動功能函數使用這些參數可以正常運行。 用戶自訂功能函數需要升級,正確使用或者忽略這些新增入參。

6.11.0 link

  • 通過配置項 config.default_transform 指定的變換(transform)用於初始化show和hide語句中圖像的變換特性(property)。該變換的預設值將 xposxanchor 設置為0.5, yposyanchor 設置為1.0。

    這個特性防止風格特性的預設值發生改變。在之前的版本中,風格特性未被初始化的情況下,預設值均為0.

    在ATL變換中包含 reset ,所有這些特性都可以被重新設置回0。因此,創作者可以停用默認變化,並恢復到老版本的特性,使用如下配置:

    init python:
        style.image_placement.xpos = 0.5
        style.image_placement.ypos = 1.0
        style.image_placement.xanchor = 0.5
        style.image_placement.yanchor = 1.0
    
        config.default_transform = None
    
  • 如果某個變換沒有定義全部的位置(position)特性,包括 xposyposxanchoryanchor ,就會嘗試從該變化的子組件或子特性中獲取對應特性的值,前提是其子組件或子特性中定義了對應特性的值。

    這個特性允許某個變換控制可視組件的水準運動,而另一個變換控制可視組件的垂直運動。不過這個特性與之前的不相容。 可以修改配置項 config.transform_uses_child_position 禁用新特性。

    init python:
        config.transform_uses_child_position = False
    

6.10.0 link

  • 幾個預設的位置名稱(left,right,center,truecenter,offscreenleft和offscreenright),現在已定義為ATL變換(transform)。這意味著在某個位置顯示圖像後,圖像的位置會被記錄。如果不需要使用這個特性,要重定義所有位置,添加如下代碼:
define left = Position(xalign=0.0)
define center = Position(xalign=0.5)
define truecenter = Position(xalign=0.5, yalign=0.5)
define right = Position(xalign=1.0)
define offscreenleft = Position(xpos=0.0, xanchor=1.0)
define offscreenright = Position(xpos=1.0, xanchor=0.0)

6.9.2 link

  • 如果要將你的遊戲從Ren’Py 6.9.2或更低版本遷移到高版本,將包含遊戲的目錄複製到工程目錄中。創作者可以點擊啟動器中的“設置”、再進入“工程目錄”,即可選中一個需要的工程。詳見 Ren’Py 6.9.2 發布說明 查看更低版本的遷移方法。
s