開發者工具 link

Ren’Py包含一些功能,可以讓開發工作變得更容易。其中很多功能需要配置項 config.developer 設置為True才能執行。

Lint link

Lint工具(可從啟動器中使用)可以檢查遊戲中的潛在錯誤和待最佳化項,並向開發組提供相關建議。 有些問題在當前平台不會出現,但可能會影響其他平台的使用者,所以還是推薦盡可能修復所有錯誤。

Lint工具包含遊戲的很多有用資訊和狀態。

注意,通過了Lint的檢查並不等於執行了完整的測試流程。

Shift+O 控制台 link

除錯控制台(debug console)可以在交互模式下運行Ren’Py腳本和Python語句,而且能立刻看到運行結果。控制台可以在開發者模式下,或者當 config.console 為True時運行。組合鍵“shift+O”能打開控制台。

控制台可以用於:

  • 跳轉到某個腳本標籤(label)。

  • 在交互模式下嘗試運行Ren’Py腳本語句。

  • 運算某個Python表達式或語句並查看結果。

  • 在遊戲過程中追蹤Python表達式。

主要命令如下: * clear:清除控制台歷史記錄 * escape:啟用轉義 Unicode 字串中的 Unicode 符號。 * exit:退出控制台 * help:顯示此幫助資訊 * jump <標籤>:跳轉到此標籤 * load <檔位>:讀取該檔位的存檔 * long:在控制台中列印出對象的完整表徵。 * reload:重新載入遊戲,並刷新腳本 * save <檔位>:儲存存檔到該檔位 * short:在控制台中縮短對象的表徵(默認)。 * stack:列印返回棧 * unescape:禁止轉義 Unicode 字串中的 Unicode 符號,並按原樣列印(默認)。 * unwatch <表達式>:停止監視該表達式 * unwatchall:停止監視所有表達式 * watch <表達式>:監視該 python 表達式 * watch short:簡短表徵所跟蹤的表達式(默認) * watch long:按原樣表徵所跟蹤的表達式 * <renpy 腳本語句>:運行此語句 * <python 表達式或語句>:運行此表達式或語句

(譯者註:以上命令的內容源自SDK中的 launcher/game/tl/schinese/developer.rpy 文件,為zedraxlo在github上提交的翻譯。 部分名詞可能與文件其他部分有出入。)

Shift+E Editor 幫助與支持 link

shift+E會打開預設的文本編輯器,在啟動器中可以使用 集成文本編輯器 進行訂製。 之後會打開腳本文件並跳轉到當前語句對應的那行。

詳見 集成文本編輯器

Shift+D 開發者菜單 link

config.developer 為True時,使用組合鍵“shift+D”會顯示開發者菜單,並提供下面那些功能的簡易接入。

Shift+R 重新載入腳本 link

config.developer 為True時,使用組合鍵“shift+R”會保存當前遊戲,重新載入遊戲腳本,並重新載入遊戲。這個操作通常會回到你使用“shift+R”之前未修改過的最近那條語句。

第一次使用重新載入功能後,遊戲會進入自動重新載入模式。 遊戲中使用的任何文件發生改變都會重新載入遊戲。

這個功能允許開發者使用外部編輯器修改腳本後,不需要退出並重啟Ren’Py就能看到修改後的效果。

需要注意的是遊戲狀態,包含了變數值和場景列表重載後會被重設。這意味著某些語句的執行結果可能也發生了變化,需要回滾並重新執行那些語句才能看到修改後的效果。

重播(replay)狀態下使用shift+R不會生效。

下列函數使用純Python實現。注意,這些函數只能在開發者模式下使用。

renpy.get_autoreload() link

獲取自動載入標識。

renpy.reload_script() link

使Ren’Py保存遊戲,重新載入腳本,然後讀檔。

該函數只能在開發模式下調用,只支持Windows、macOS和Linux系統。

renpy.set_autoreload(autoreload) link

設置自動重新載入標識,該標識決定是否在文件改變後自動重新載入遊戲。 在使用 renpy.reload_script() 重新載入腳本後,自動重新載入標識符才會變成啟用狀態。

Shift+I 樣式檢查 link

config.developer 為True,使用組合鍵“shift+I”能觸發樣式檢查。樣式檢查中會顯示滑鼠指針下面的可視組件列表。並顯示每一個可視組件的類型、樣式和渲染尺寸。

點擊樣式名稱會顯示使用該樣式的特性以及對應的可視組件。

> Fast Skipping link

config.developerconfig.fast_skipping 為True時,使用“快速跳過”快捷鍵(預設是“>”),將觸發遊戲立刻跳到下一個重要互動。出於這種需求,重要互動不由say語句、轉場(transition)和暫停(pause)命令觸發的。通常情況下,快速跳過會直接跳到下一個菜單選項,但也會在用戶自訂的互動行為前停止。

傳送至某行 link

Ren’Py支持腳本中“傳送(warp)至某行”功能,不需要開發者運行整個腳本到達那處。儘管使用傳送技巧總是會伴隨著一大堆告警(warning)資訊,在提供即時預覽方面依然很常用。

調用傳送功能時,使用命令行運行Ren’Py,使用參數 --warp ,後面再跟上filename:line,這樣就能傳送到需要的那行。舉例:

renpy.exe my_project --warp script.rpy:458

(my_project 是工程基礎目錄的全路徑。)

調用傳送功能時,Ren’Py出列了一系列工作。它首先找到程序中的所有scene語句,然後嘗試找到使用scene語句到達腳本中每條語句的路徑,接著選取最接近目標行的路徑(在目標行前或正好到達目標行)。Ren’Py從找到的語句倒推至某個scene語句,記錄下使用的路徑。然後Ren’Py會執行找到的路徑上所有scene和show、hide語句。最後Ren’Py將主控流程切換到目標語句。

關於傳送功能,有幾條重要事項需要說明。第一條是,傳送時只能檢查單一路徑,這意味著這條路徑是實際執行路徑之一,在其他路徑上可能還是存在bug。總體來說,這條路徑不考慮遊戲邏輯,所以它也可能是一條實際上並不存在的路徑。(對於重流程的遊戲,這的確是個大問題,特別是包含大量Python語句的情況。)

然而,最大的問題是,在傳送的目標語句前的Python語句不會執行。這表示所有變數都是未經初始化的,使用時可能直接讓程序掛掉。為了防止這個問題,創作者可以定義一個腳本標籤(label) after_warp ,寫一些只有傳送後才會執行的語句。這個腳本標籤可以在程序中配置變數,並在預覽中返回。

傳送功能需要 config.developer 設置為True。

除錯函數 link

renpy.get_filename_line() link

返回當前語句的檔案名和行號的二元元組。

renpy.log(msg) link

config.log() 沒有配置,則不執行任何操作。否則,將打開日誌檔案(如果還沒有打開的話),根據 config.log_width 配置的寬度將資訊格式化,並列印在日誌檔案上。

renpy.unwatch(expr) link

停止監視(watch)指定的Python表達式。

renpy.warp_to_line(warp_spec) link

該函數使用一個“檔案名:行號”的鍵值對,然後嘗試跳轉到對應行號的語句。

該函數的效果與 –warp 命令相同。

renpy.watch(expr) link

監視(watch)指定的Python表達式,資訊顯示在螢幕的右上角。