變更日誌(Ren’Py 7.x-) link

7.4.6 link

camera語句 link

新增了 camera 語句,用在3D舞台系統中。 這個語句與 show layer 語句相似,但 camera 語句不需要指定圖層名,也不會在使用 scene 語句後清除效果。

可以直接這樣寫

camera:
    perspective True

就能啟用3D舞台系統。

除此之外, show layer 語句和 scene 語句在7.4.4及更早版本中的效果發生了反轉。 scene 語句將清除 show layer 語句帶來的變換效果。

模型可視組件 link

新增類 Model 是一種使用基於模型渲染器並用於創建模型的可視組件。 現在可以使用該類創建多紋理的2D模型,並可以自訂變換(transform),並像內建的各種變換一樣使用。

目前這個組件還不支持3D,不過未來可期。

其他提升 link

Atom文本編輯器升級,對應的renpy語法高亮插件也需要同步升級,可以將Ren’Py近幾個版本中新增的關鍵字也高亮顯示。

使用遊戲控制器時,將立刻隱藏滑鼠游標。

修復項 link

每夜版中在iOS平台編譯過程中產生的錯誤已修復,不過那個錯誤沒有出現在Ren’Py正式版中。

Ren’Py應用程式窗口失焦後,模態(modal)界面無法攔截時間事件的問題,已經修復。

blur著色器的疊代次數做了限制,確保Ren’Py與大多數使用webgl的設備相容。

在勾選“強制重新編譯”選項時,Ren’Py生成最終文件時將重新編譯 renpy/ 目錄下的所有Python文件。 這樣可以確保某些原因修改過的文件都能重新編譯,但並不是指創作者電腦上Ren’Py所在的整個目錄。

使用animation時間軸時,ATL將跳到可視組件顯示內容的第一幀。

回滾之後,Ren’Py的暫停設置了超時。

7.4.5 link

基於模型的渲染器 link

從Ren’Py 7.4.5開始,基於模型的渲染器將作為遊戲的默認渲染器。 如果要禁用此渲染器,請將 config.gl2 設置為False。

啟用基於模型的渲染器後,Ren’Py可以支持“3D舞台”。 3D舞台在顯示圖像時增加了第三個維度,當可視組件縮放、移動、旋轉等變化時顯示3D透視效果。 更多訊息詳見 3D Stage

為了3D舞台的使用便利性考慮,使用 show layerrenpy.layer_at_list() 應用到整個圖層的變換(transform)後,scene 語句不再清空該圖層的變換(transform)。

啟用基於模型的渲染器後,可以使用新增的 Swing() 轉場效果。 該轉場能讓場景在3D空間裡的垂直或水平軸向旋轉,並實現場景切換。

新增的 blend 變換特性可用來指定遮罩函數。 遮罩函數控制如何將新的像素與原有像素混合。除了Ren’Py原有的“normal”和“add”遮罩函數,這次新增了“multiply”、“min”和“max”函數。

滑鼠 link

一直以來積攢了一些對硬體滑鼠支持的修改和提升,現在正式在文件中發布了GPU中受限尺寸硬體滑鼠的支持。

新增配置項 config.mouse_displayable 和可視組件 MouseDisplayable(),可用軟體滑鼠替換硬體滑鼠,類似於Ren’Py 7.3或更早之前的方案。

功能特性 link

新增函數 renpy.screenshot_to_bytes(),可以截圖並把圖像存入一個二進位制對象,該二進位制對象可以傳給 im.Data()。 二進位制對象很大,可以將它存儲在常用或永久存檔中。

新增的 renpy.music.get_loop() 函數會返回某音訊通道上的一個循環播放音訊檔案列表。 可以用來控制循環播放的順序等。

renpy.input() 函數和input可視組件可以使用新增的 mask 參數。 該參數是一個字串,用來遮擋向用戶展示的字元內容。常用於隱藏密碼文本。

啟動器新增了一個黑暗主題。

新增的 config.adjust_attributes 配置項,可以實現圖像屬性(attribute)替換。 比如,可以將原本的 eileen happy 替換為 eileen happy_eyes happy_mouth。 層疊式圖像(LayeredImage)也可以契合該功能。

從命令行運行lint工具時,選項 --error-code 可以在lint運行失敗時讓Ren’Py返回錯誤代碼。

圖層轉場可以在某個互動行為結尾持續。

Ren’Py避免在回滾中暫停,總是嘗試在某個需要互動的語句處結束回滾。

播放音訊時,現在可以同步兩個音訊通道上不同音訊檔案的時間軸。

安卓 link

發布安卓版本的幾個必要的包(package)已經包含在Ren’Py中。 這樣就修復了由於Bintray關閉導致新安裝的Ren’Py 7.4.4無法成功發布安卓版本。

Ren’Py在安卓上顯示preslash界面的方式變更。 preslash現在使用Java bootstrap顯示,在OpenGL圖層頂部的一個新圖層中。 相對於Ren’Py 7.4中使用SDL的2D渲染器,這是一個新的渲染機制。 這個改動將提高安卓設備的相容性,並避免啟動階段的黑屏。

此次改動的另一部分是,Ren’Py縮放preslpash圖片的方式也改變了。Ren’Py會將presplash圖像在整個可用區域內使用scale-to-fit方式進行縮放。

某些安卓設備上模糊效果無法正確顯示的一個問題已修復。

在安卓設備上播放某些稀有影片、音訊格式時出現的一個問題已修復。

安卓方面的修復會要求創作者重新生成安卓項目,遇到安卓在配置時的問題

其他平台 link

Web平台beta版更新。

iOS 14.5.1及更高版本上的行動版Safari瀏覽器的一次回退,使Ren’Py無法在該平台運行。 由於該問題是由行動版Safari引起的,沒有解決方案,只會向用戶顯示一調提示訊息讓他們聯繫蘋果公司。 此次回退也影響了其他在iOS平台的瀏覽器,比如行動版Safari封裝外殼的Chrome和Firefox瀏覽器。

iOS版本生成問題修復。

macOS平台對Steam的支持已修復。

macOS應用程式的簽名和認證已修復。

其他修復項 link

預設的level-of-detail bias設置為-0.5,可以通過配置項 config.gl_lod_bias 修改。 這個值在Ren’Py中對縮小有用,對放大沒用。不過在放大圖像時可能會產生鋸齒。

此外還有一些Ren’Py針對模態界面的提升。

7.4.4 link

old-game目錄 link

為幫助創作者實現遊戲多個發布版本(比如早期公測或Patreon平台版本),Ren’Py新增了old-game目錄,會將前一個版本game目錄的部分內容複製到old-game中。 Ren’Py會使用目錄中的.rpyc文件。由於.rpyc文件在載入遊戲時需要使用,所以也可以用於幫助多人開發遊戲遇到的載入問題。

更多訊息,詳見 文件

修復 link

使用手勢或控制器導致程序異常退出的一個問題已修復。

發布web版本時windows版本程式異常退出的問題已修復。

成就系統的後端持久化數據,可以清空進度。

Live2D可以重設不透明度等參數。

載入時,Ren’Py不再改變窗口最大化尺寸。

其他 link

新增了一項GL特性 blend_func ,需要啟用基於模型的渲染器。 該特性可以自己定義GL遮罩函數,使Ren’Py開始支持各種遮罩模式。

Live2D可以支持additive(疊加)和multiply(相乘或正片疊底)遮罩模式。

使用default或define定義 renpy 命名空間的變數時將報錯。

之前有一些 ref:Preference對象 <preference-variables> 的方法在文件中遺漏,已補充在文件中。 這些方法可以獲取或設置當前音量值和靜音狀態。

7.4.3 link

Windows link

重寫了修改圖示的代碼,生成的可執行程序只能包含軟體和圖示,不再含有任何冗餘數據。 這樣應該能夠避免某些防毒軟體的攔截。

當前版本Ren’Py已經接入Windows平台的通用C運行時(Runtime)庫。 這樣可能會提升Windows Vista某些補丁版本的運行效率。同時也使得Ren’Py更符合現代軟體安全要求,避免某些殺毒按軟體的攔截。

當前版本Ren’Py禁用了Nvidia顯示卡的執行緒最佳化(Threaded Optimization)功能。 N卡的執行緒最佳化功能在Ren’Py上表現很糟糕,會在某些不希望暫停的地方突然暫停。 這樣也可能修復音訊播放出現斷裂的問題。

在OpenGL不可用而DirectX可用的情況下,Ren’Py將自動使用ANGLE庫,通過DirectX模擬OpenGL ES。 該功能在Ren’Py 7.4版本中還不能正常工作。當Ren’Py嘗試各種不同的視覺系統時,窗口將出現閃爍。

安卓 link

當安卓修改某個渲染上下文(context)時,“非基於模型”渲染器可以正確分配紋理。 解決了以前隨機發生的畫面撕裂問題,尤其是使用Dissolves效果時出現的問題。

這解決了以往的一個問題,即在遊戲還沒有完全啟動時用戶就切換應用,導致啟動異常。 現在當Ren’Py發現程序啟動時沒有獲取焦點時,將在用戶切回遊戲時保存並退出,然後再重新啟動。

總體來說,安卓設備的相容性都得到了提升。

新增特性 link

新增配置項 config.main_menu_music_fadein, 用以控制主選單音樂的淡入方式。

新增的 renpy.get_zorder_list()renpy.change_zorder() 函數允許圖像或界面顯示中設置zorder的值。

window和frame組件可以使用樣式特性 modal 。 這兩種組件中modal特性的語法和功能,與界面的 model 特性類似,但僅限於限制滑鼠在這兩種組件範圍內的作用。 主要用於確保玩家不能點擊到window背後的某些按鈕,而那些按鈕並沒有被禁用。

可視組件 Live2D() 現在可以使用參數 update_function , 使用該參數能直接修改對應的其他參數。

當前版本Ren’Py支持顯示emoji表情和基本多文種平面(Basic Multilingual Plane,簡稱BMP)以外的字元,前提是使用的字體檔案支持那些字元。 目前使用字體渲染系統顯示emoji表情,所以只有黑白單色符號。

FontGroup 類用於某個字體內部的字元重映射(remap)。

使用在 AlphaMask() 中用作遮罩(mask)的可視組件可以獲得焦點,並允許應用新的效果(effect)。

玩家可以選擇忽略不能載入的圖片文件。

新增的 renpy.get_sdl_dll()renpy.get_sdl_window_pointer() 函數可以使用ctype函數庫直接訪問SDL的DLL文件。 現在可以實現SDL中的各種功能,但Ren’Py本身並不提供現成的DLL文件。

使用 renpy.transition() 或帶 with 從句的語句,其轉場效果可以被滑鼠點擊終結,即直接跳到轉場結束的畫面。

renpy.translate_string() 函數正式記入文件中,其提供將某個字串翻譯為指定語言的功能。

可以創建一個 hide_windows 腳本標籤(label),提供訂製滑鼠中間或鍵盤H鍵隱藏對話窗口的方法。

新增的特性,比如 mesh_pad 變換特性和 gl_pixel_perfect gl特性,用於文本上應用著色器後實現完美的像素渲染效果。

前綴為 show_ 的特性可以用於函數 renpy.input() 的參數,並最終傳入 input 界面。

Color 類新增了一個rgba特性,其返回一個rgba元組。

舊特性 link

在Ren’Py 7.4中引入的 default_mouse 配置項允許不修改 config.mouse 的情況下實現修改滑鼠游標。但即時修改該配置項的方法不存在。

其他修復內容 link

多個modal界面存在時的處理異常問題已經修復。

lint在Windows平台上運行時生成的文件將使用Windows風格的換行符。

Windows平台的SDL錯誤訊息將使用系統編碼方式進行解碼,使其更易讀。

Python中unicode引號字元的問題已經修復。

變換特性 blur 的值介於0與1之間時,已可以正常工作。

文本標籤 {done} 已做預編譯。

對GL載入失敗的情況,Ren’Py回滾到了更早版本的庫以實現更好的處理。

為macOS生成的app需要啟用HighDPI模式。

多語言支持 link

Ren’Py文件已同時翻譯為簡體中文和繁體中文,由被詛咒的章魚和逆轉鹹魚提供。

法語內容更新。

7.4.2 link

修復與變更 link

新增的配置項 config.context_fadeout_musicconfig.context_fadein_music 可以實現遊戲載入或其他運行環境變化時的音樂淡入淡出效果。

Ren’Py根據文件副檔名(.motion3.json 和 .exp3.json)搜尋Live2D動作和表情文件,而不再使用目錄名稱。

新增的 build.include_i686 配置項判斷32位版本的Ren’Py是否打包生成。不包含32位版本的程序不僅可以減少下載數據,還能避免某些防毒軟體的過度反應。

新增的 build.change_icon_i686 配置項將阻止i686版本的圖示變更。這個改動可以避免防毒軟體的錯誤檢測。

當遊戲運行時,Ren’Py不再禁用螢幕保護或系統休眠功能。

maxOS上一個全螢幕禁用調整窗口大小後無法恢復窗口的問題,已經修復。

樹梅派上播放webp圖片導致當機的問題已經修復。

此版本修復了生成發布過程中會遺失文件的一個錯誤:

  • say.vbs文件遺失,在Windows平台的自動語音功能無法正常工作。
  • 用於支持ANGLE的一些文件遺失,導致DirectX渲染時無法正常工作。

安卓 link

在三星的設備上發現一個問題,是啟用放大快捷鍵時,可能遊戲會無法響應。 我正在出補丁修復,但不想因此延後這個版本的更新。

macOS上的JVM檢測機制很健壯,不太會被瀏覽器插件拒絕。

當前版本Ren’Py推薦使用AdoptOpenJDK作為JVM的基礎。

7.4.1 link

pause語句變更 link

pause 語句的語法變更,正確用法為:

pause 1.0

等效於:

$ renpy.pause(1.0)

不再是:

with Pause(1.0)

這表示需要真正暫停的功能特性都可以用pause語句實現。

modal型界面不再能阻止 pauserenpy.pause() 的暫停效果。 這表示pause語句可以對顯示在其上層的界面也有效果。

say語句帶id的從句 link

say語句可以增加一種 id 從句,允許創作者指定原say語句id。 這用在需要多語言支持的項目有用,比如原版語言中修復了一個拼寫錯誤,不再需要更新所有其他語言文件。

使用該功能特性是,只要在say語句後面添加 id,並拼上語句的id號。

e "This used to have a typo." id start_61b861a2

Live2D link

Live2D添加了一個 default_fade 參數,可以修改動作和表情開始與結束時的默認平滑過渡時間。

一個Live2D的明顯元組錯誤已經修復。

控制器黑名單 link

The Nintendo Switch Pro Controller, when connected to a computer by USB, requires an initialization sequence to be sent to cause it to act as a Joystick, and not return incorrect data. 任天堂Switch Pro手把使用USB連接上電腦後,會申請一個初始序號之後才能作為遊戲設備使用。

Ren’Py 7.4.0版本嘗試發送這個序號,但這樣做需要直接接入USB匯流排,在某些電腦上可能會導致當機或長時間暫停。 我們認為,這種做法很容易導致Ren’Py的其他相容問題。

結果是,我們把任天堂Switch Pro手把加入了控制器黑名單中,不能在Ren’Py中使用。

macOS link

現在macOS的最低支持版本是10.10(Yosemite). Ren’Py 7.4無法在這個版本號運行,所以這是對該版本支持的恢復。

macOS 11.0(Big Sur)上無法選擇項目目錄的問題已經修復。

Pyobjus已經內建在macOS版本Ren’Py中。這個庫可以使用Cocoa的API。

安卓 link

有一些報告發現,Ren’Py 7.4.1預發布版本在某些老舊的安卓設備上無法正常工作,比如三星Galaxy S5。 我們正嘗試著一個設備復現此類問題,必要的時候再發布一個新版本。

多語言支持 link

更新了西班牙語。

其他修復 link

某些支持SSE3的電腦使用Ren’Py播放某些解析度影片時導致的當機問題已經修復。

跟之前版本的Ren’Py一樣,影片播放時可以利用CPU多核進行解碼。

Windows平台不使用100%DPI時,Ren’Py窗口變大的問題已經修復。

選用不支持的渲染器時,Ren’Py不再會給性能告警,比如要求GL2渲染器時使用GL或者ALGLE渲染器的情況。

某些情況下say語句中屬性(attribute)無法生效的問題已經修復。

非默認UTF-8編碼文件的電腦,使用MultiPersistent保存文件不生效的問題已經修復。

rpy python 3 標識混合編譯的性能提升。

三重引號字串(比如用在gui.about裡的)使用出錯的問題已經修復。

重新載入時,Ren’Py將重新檢測自身所在路徑。

Ren’Py會根據渲染器動態載入所有功能,並在不生效的情況下嘗試其他渲染器。

某個語句後載入的計時器(timer),會在回滾後精確復位。如果計時已經結束,即使遊戲回滾到計時器生成之前的地方,依然會保持計時結束狀態。

Ren’Py允許遊戲運行時截圖。

動態變數在回滾後無法維持動態的問題已經修復。

給定尺寸後,hbox和vbox可視組件會以Ren’Py 7.4相同方式放置所有子組件。

新增的 mipmap 樣式特性可以用在 Dissolve()ImageDissolve()AlphaDissolve() 轉場效果中, 以及 AlphaMask()Movie()Text() 可視組件中,還有所有文本。 該特性控制以上提及內容生成的紋理是否生成mipmap。不生成mipmap可以提升速度較慢電腦的渲染性能,缺點是縮小圖片時會有顯示瑕疵。 沒有指定值的情況下,該特性分別根據配置項 config.mipmap_dissolvesconfig.mipmap_moviesconfig.mipmap_text 取值。

自動語音配置項的版本切換功能體驗提升。

Lint檢查工具再次由於多語言問題爆了。

7.4 link

基於模型的渲染器(renderer) link

新版本包含一個全新的“基於模型的渲染器(model-based renderer)”,主要處理將文本和圖片繪製到顯示器上,作為Ren’Py 6.10時添加的原生OpenGL渲染器的補充(實際是替換)。 該渲染器能夠更好利用當前主流GPU(無論集顯還是獨顯)提升性能和效果。 該渲染器支持的設備包括,支持OpenGL 2.2、DirectX 9.0c或11的電腦,支持OpenGL ES 3的移動設備和嵌入式系統。

基於模型的渲染器最大的改變在於,Ren’Py將不再受限於在二維平面上繪製矩形圖像,Ren’Py可以將圖像轉為三維空間內的三角形網格(mesh)。 已經存在和使用的矩形精靈對象(sprite)也將使用同樣的顯示方式,Ren’Py將其轉換為非矩形的網格,實際上就是全三維的幾何體(geometry)。

除了網格幾何體,基於模型的渲染器還支持著色器(shader),除了Ren’Py自帶的著色器,還允許創作者在遊戲中自訂著色器。 著色器(shader)是指運行在GPU上的小段程序,用來處理幾何體與像質數據,以此實現各種類型的圖像效果。

基於模型的渲染器實現了更快的紋理(texture)載入系統,把一些系統消耗加大的紋理載入和alpha遮罩(premultiplication)工作,從CPU轉到GPU處理。

基於模型的渲染器還會為載入進GPU的紋理創建mipmap。mipmap是指紋理的一系列分割採樣後的縮微版本,存儲在GPU中。透過創建和使用mipmp,現版本Ren’Py將圖片尺寸縮小到原來的50%,且不產生混頻失真(aliasing artifact)。 該功能在4K顯示器使用1080P或更低解析度時能有明顯效果。

在當前版本中,基於模型的渲染器是可選的配置項,通過變數 config.gl2 控制是否使用。當我們對新渲染器基類足夠經驗之後,可能會作為為類Ren’Py的默認渲染器。

Live2D link

基於模型的渲染器帶來的新特性之一,就是支持使用Live2D技術支持的精靈圖像(sprite)。 Ren’Py要求創作者自行下載Live2D Cubism的包,同時創作者在發行遊戲前需要同意Live2D技術的使用條款。

Ren’Py支持Live2D模型的顯示,可以任意改變模型的表情並將多個動作組合成隊列(queue)。該功能集成在Ren’Py的圖像屬性(image attribute)中。 當圖像屬性改變時,Ren’Py還支持動作切換的漸變(fade)效果。

matrixcolor和blur link

基於模型的渲染器帶來了變換(transform)方面的新功能,比如matrixcolor和blur。

當前版本的變換(包括ATL中的變換)新增了一個 matrixcolor 特性(property)。 該特性是一個矩陣(matrix)或即時創建矩陣的對象,用於對變換的子組件進行染色。

之前版本的Ren’Py中包含名為 func:im.MatrixColor 的圖像處理器,而新的matrixcolor特性的性能更好。 圖像處理器往往需要幾分之一秒進行運算,在即時演算中顯得太慢,並且盡顯對單一圖像處理。新的變換特性速度很快,可以用在需要演算的每一幀,並且可以應用在所有可視組件。 現在可以使用變換的matrixcolor用於某個圖層(layer),將整個圖層染色——不再需要單獨的純色圖就可以將遊戲畫面改為老舊照片的棕黃色(sepia)或者黑白兩色。

圖像處理器中的MatrixColor跟新增的matrixcolor特性有些許差別,新增的matrixcolor使用4×4矩陣並對alpha通道預乘(premultiply),所以它使用的矩陣與圖像控制器不同。 此外,使用新的matrixcolor特性時需要使用一些新的 ColorMatrix 對象。

另一個新增的變換特性是 blur ,可以根據給定的像質數對可視組件的子組件模糊處理。

Python2/Python3相容模式 link

因為Ren’Py還不完全在Python3環境內支持,該版本的Ren’Py包含了一些功能特性允許創作者的腳本同時在Python2和Python3環境下運行。

首先,Ren’Py現在使用 未來計劃 提供標準庫的相容性。 目前可以在模組(module)已經改名的情況下使用import引用Python3的模組。

某個開頭為 rpy python 3 的.rpyc 文件將會以Python3相容模式編譯。該特性導致了兩項變化:

  • Ren’Py編譯文件時將嘗試匹配Python3語法規則,包括除法規則的改變。在Python3中,1/2 等於0.5而不是0。 由於這項改變會影響可視組件的位置,寫成 1//2 可以保持原來的語法規則。
  • Ren’Py會改變字典(dict)類型的行為表現,直接在 .rpy 文件中調用 itemskeysvalues 方法時, 將返回視圖(view)類型,而不是原來的列表(list)類型。這項改變匹配Python3中對應方法的語法規則,但在面對數據保存或回滾時, 必須將返回結果顯式轉化為列表類型再使用。

升級了庫與平台支持 link

Ren’Py 7.4的生成系統(build system)統一為redone,不再使用多系統單獨生成的方式(除了webasm)。 此次生成系統的變更同時將所有Ren’Py用到的庫都升級為更新的版本。

因此,Ren’Py官方支持的平台列表有明顯變化。這裡是最新的支持列表:

平台 CPU 備註
Linux x86_64 最低版本要求Ubuntu 16.04
Linux i686 最低版本要求Ubuntu 16.04
Linux i686 最低版本要求Ubuntu 16.04
Linux armv7l 使用Raspian Buster的樹梅派
Windows x86_64 64位或更新版本的Windows Vista。
Windows i686 最低版本要求Windows Vista.
macOS x86_64 macOS 10.10+
Android armv7a Android 4.4 KitKat
Android arm64 Android 5.0 Lollipop
Android x86_64 Android 5.0 Lollipop
iOS arm64 所有64位iOS設備,iOS 11.0+
iOS x86_64 所有64位iOS模擬器,iOS 11.0+
Web webasm 主流web瀏覽器

最大的新增平台是64位版本Windows,這意味著Ren’Py可以在所有主流64位桌面和移動平台運行。 如果需要的話,新增的 renpy.bits 配置項可用於確認運行平台是32位還是64位(例如,將 config.image_cache_size_mb 設置為合適的值)。

當前版本不再支持32位使用armv71處理器的iOS設備。這些設備甚至不再被蘋果支持,並且也不支持Ren’Py要求的OpenGL ES版本。

Web link

多虧了新的編譯技術,現在Ren’Py在瀏覽器上的運行速度顯著提升了。

為web平台構建的遊戲可以在遊戲運行時從伺服器下載圖像和音訊檔案。 當圖像或音訊預載入時,遊戲就會開始下載。這項技術可以減少遊戲開始運行前的初始化時間和記憶體占用。

在觸控螢幕設備的web瀏覽器上運行遊戲時,Ren’Py會顯示一個觸控鍵盤,彌補WebAssembly遊戲鍵盤輸入方面的缺陷。

載入過程中可以使用WebP格式顯示splash界面,包括帶動畫的WebP。

提供了更多Python模組(module),使Python環境更貼近原生的Ren’Py埠。

提升了對iOS瀏覽器的支持。

Steam link

可以在Ren’Py啟動器安裝Steam平台的支持。方法是啟動器中選擇在“設置”->“安裝庫”->“安裝Steam支持包”。

新增的配置項 config.steam_appid 會為創作者自動創建名為 steam_appid.txt 的文件。 在項目中應用時,需要使用 define 語句賦值或在python early 語句塊中賦值。

多語言支持 link

簡體中文、日語和漢語的多語言支持更新,現在使用了統一的字體(譯者註:SourceHanSans,也就是思源黑體)。

教學項目中新增了簡體中文,由Neoteus提供。

(譯者:我不吐槽這事……)

折損和移除 link

如上面所說,Ren’Py不再支持Windows XP。

如上面所說,Ren’Py不再支持32位iOS設備。

Ren’Py內移除了下載Editra文本編輯器的選項。 Editra編輯器已經超過5年未更新,並且原始發布網站已經關閉。

基於軟體的渲染器沒有完全移除,而是做了精簡,並且在遊戲運行時不再作為可選項。原因是防止基於GPU的渲染器在實際遊戲中顯示錯誤而導致玩家認為遊戲有問題。

其他雜項 link

對遊戲控制器的支持提升。手把控制器可以實現連發效果。Ren’Py使用的庫重新編譯以支持更多主流遊戲控制設備。

Ren’Py在安卓和iOS設備上使用軟體解碼播放影片影片(movie),這意味著相同的影片檔案可以在全平台播放。

定義了滑鼠游標配置項 config.mouse ,使用SDL2的色彩游標API,能用利用硬體加速功能並降低了滑鼠移動延遲。

現在 define 語句可以用於設置字典中的一個key值。

# Ren'Py項目起源於2004年。
define age["eileen"] = 2021 - 2004

define 語句可以使用 += 和 |= 運算符,並用於對應的運算。

define config.keymap['dismiss'] = [ 'K_KP_PLUS' ]

# 這裡假設 endings 是一個集合。
define endings |= { "best" }

現在 playqueue 後面使用新增的 volume 分句,可以在播放音訊檔案的任意時候,指定某個音訊通道的音量。

變換(transform)中新增的 fit 特性提供了不同以往的圖像填充方式,可以決定圖像是否保持長寬比進行填充。 舉例來說,圖像可以縮放為給定尺寸,或者完全覆蓋不縮放。

應用 xpanypan 特性的可視組件不再會被增大為原尺寸的兩倍,便於與其他變換特性組合使用。

renpy.input() 函數可以使用正則表達式判斷輸入內容是否被允許。

Grid網格可以使用 margin 特性,用於指定整個網格的外延空白區域以及視口(viewport)的內部空白。

Ren’Py支持一種 {alt} 文本標籤(text tag)。帶有這種標籤的文本會在自動語音模式下唸出來,但不會顯示在螢幕上。 另一種相反效果的文本標籤是 {noalt} 。

啟動器窗口可以調整尺寸。“設置”選項中新增了一個按鈕,用於重設啟動器窗口大小。

新增配置項 build.mac_info_plist 便於訂製化mac版的app。

Ren’Py內建了 requests 庫,聯網功能更方便。

按下鍵盤的PAUSE鍵直接進入遊戲菜單(game menu)。

7.3.5 link

修復 link

電腦平台的presplash界面重寫,防止該界面下滑鼠點擊無響應的問題。

iOS埠更新,Ren’Py中新增一些新的模組(module),可以編譯iOS的app。

其他變更 link

audio 目錄,也就是由 audio namespace 定義的音訊目錄,可以在啟動器(launcher)中有快捷連結。同時,新建項目時會自動創建audio目錄。

新增的配置項 config.exception_handler 可以配置為某個應用程式,接替Ren’Py自帶異常處理系統的所有工作。

7.3.4 link

修復 link

該版本修復了7.3.3版本中引入的嚴重圖形故障。

  • 在Windows平台,全螢幕和窗口模式之間進行切換會導致紋理(texture)載入失敗,並導致顯示錯誤的紋理。
  • 在所有平台,使用 Flatten() 都可能導致圖形故障。

其他變更 link

當前版本中,動態圖像(dynamic image)的任何地方都可以包含 “[prefix_]” ,尤其是使用 add 將某個動態圖像添加到按鈕(button)、拖拽組件(drag)等類似可以獲取焦點的對象時。

創作者自訂語句可以包含if語句。

界面更新時,拖放系統性能提升。

7.3.3 link

audio link

當前版本Ren’Py新增 audio 目錄,在 audio命名空間 中自動根據檔案名定義音訊名。 如果有個音訊檔案 game/audio/overture.ogg ,可以在腳本中直接播放:

play music overture

新增類 AudioData() ,可以讓創作者在Ren’Py中直接使用壓縮音訊數據,而不再需要使用其他程序預處理。 為實現這個功能,Ren’Py引入了Python的wave和sunau模組。

單聲道音訊檔案混音的一個問題已經修復。該問題可能會導致很多WAV文件無法播放。 (我們始終不推薦使用WAV文件。)

平台 link

鑑於蘋果公司的條款要求,Mac版的Ren’Py重建為一個未簽名的二進位制程序。現在需要按住ctrl並點擊renpy.app程序,然後選擇“打開”才能啟動Ren’Py。

對安卓的版本要求降低為Android 19(Android 4.4 KitKat)。

Ren’Py的web埠有一些變更:

  • Screen variants 可以檢測配置和進行設置。
  • 全螢幕功能提升,儘管用戶可能需要點擊對應選項才能啟用全螢幕。
  • 關閉web頁面的行為可以被檢測到,並保存持久化數據。
  • 原先默怕生成的‘game.zip’檔案名可以修改。在index.html文件中的‘DEFAULT_GAME_FILENAME’配置項控制該項。
  • 針對移動設備的HTTP請求(原生+renpyweb):詳見 https://github.com/renpy/renpyweb/blob/master/utils/asyncrequest.rpy
  • 啟用Python的web埠用作測試WebSocket,可以使用Python的‘socket’模組監測埠。
  • HTTP快取控制功能,允許遊戲更平滑更新。
  • 引入pygame.draw模組,支持Canvas繪圖板。
  • 提升WebGL相容性。

其他變更 link

在進行重寫GL項目時,我們發現在7.3.0版的性能下降問題,原因在於framebuffer對象的切換。 修改了FBO的使用方法後,Ren’Py性能得到了提升。

renpy.input() 函數可以接收界面的名稱,用於用戶輸入的提示語。

使用界面語言創建的列表、字典和集合可以正確解析。這可以讓更多可視組件可以解析為常數,提升界面性能。

回滾時隱藏通知界面。

NVL模式界面默認顯示對話窗口,防止 windows show 語句已生效導致的問題。

在一個多段語句(比如對話中的菜單)中,當使用 from_currentCall 設置為True 時,主控流程將恢復為多段語句的第一段(這樣才能顯示對話內容)。

更多函數使用圖像標籤(tag)的默認圖層。

新增 renpy.is_init_phase() 函數。

當對話內容是menu語句的一部分時,自動語音功能也可以生效。

移除對GLES1的支持。(多年沒用的東西了。)

SelectedIf()SensitiveIf() 行為(action)可以支持將其他行為作為入參。

很多條值(BarValue)可以使用一個 force_step 入參,強制將某個條(bar)的值調整為最接近的某個檔位(step)值。

Frame() 支持tile入參是一個整數字串,該整數表示frame中tile圖像的重複次數。

多語言支持 link

韓語和西班牙語更新。

7.3.2 link

修復 link

在上個版本中的平台變數後退問題已修復。

多語言支持 link

更新西班牙語的支持。

7.3.1 link

變更 link

描述文本(descriptive text,為視力受損人群設計,在開啟自動語音的情況下顯示並描述場景訊息)功能更新。 描述文本的角色改為使用 alt (原先的 sv 角色作為別名)。還可以使用訂製角色顯示描述文本,而不僅限於旁白。

當前版本Ren’Py每次都會初始化媒體播放系統,這樣無聲影片也可以正常模仿。

大多數可視組件中,用作選擇默認獲取焦點的可視組件的 default 特性,重命名為 default_focus,避免與 default 語句發生衝突。 該特性值是一個整數,值最大的可視組件獲得焦點。

可視組件 Flatten() 會從入參 child 獲取坐標。。

使用renpy.random.Random並帶種子的隨機數生成器支持回滾。

模擬安卓或iOS系統時,運行平台的配置變數(例如renpy.android、renpy.ios、renpy.windows和renpy.mobile)將被正確設置。

當前版本Renpyweb創建存檔文件時會存儲日期和時間。

修復 link

當前版本修復了一個很重要的問題,該問題可能會導致界面內插(interpolate)文本不更新或更新出錯。

當前版本的圖像預載入規則將根據圖像預載入進程運行。

修復了一個與 {clear} 文本標籤相關的問題。

在很多情況下,配置項 config.end_game_transition 無法正常運行的問題已經修復。

多語言支持 link

對俄語、漢語和西班牙語的支持更新。

7.3.0 link

Renpyweb link

由於Sylvain Beucler的貢獻,當前版本Ren’Py可以生成HTML網頁平台版本。所有支持WebAssembly的主流web瀏覽器都可以運行HTML版的Ren’Py項目。 HTML網頁版會下載整個遊戲再運行,所以適合做一些小型項目或大型項目的示範版本。 Web版目前標記為beta測試版,web平台本身存在很多問題(最明顯的就是單一執行緒),所以載入較大圖片時會導致音訊卡頓。 所以,在其他平台運行良好的Ren’Py項目,在web端運行可能運行很糟糕。 我們將隨著Web瀏覽器一起改進,目標是最終移除beta標誌。 在Ren’Py啟動器點擊“Web”按鈕就可以生成一個工程的Web版本。當前版本的啟動器還附帶一個小型Web伺服器,配合Web瀏覽器就能進行測試。

創作者定義語句(CDS) link

Ren’Py中的創作者自訂語句(creator-defined statement)和使用這些語句的Lexer對象,在多處進行了擴展並提升了功能。 相關語法如下:

  • 現在可以要求Lexer對象將某一行程式碼作為一條Ren’Py語句或一個Ren’Py的語句塊處理。
  • 可以要求Lexer捕獲錯誤,便於將報錯範圍限定在創作者定義語句(CDS)內,而不是整個CDS。

renpy.register_statement() 函數有新的入參,對應新功能。

  • 在預載入語句中使用 predict_allpredict_next 兩個入參,可以控制預載入所有後續所有語句,亦或每次只預載入下一條可用語句。
  • 新增的 post_execute 入參可以讓我們指定下個語句(通常是CDS語句後面那句)運行時執行某個函數。 當語句運行並執行內部的語句塊時,還可以使用一個表達式,執行某些工作然後退出時執行清理。 (舉個例子,某個腳本標籤接到一個消息事件並執行後,跳轉回原來的調用點。)
  • 新增的 post_label 入參可以讓我們指定一個腳本標籤名,並在CDS執行完跳轉到對應的腳本標籤,功能類似調用 from 語句。

當前版本Ren’Py會將CDS語句的處理結果快取在 .rpyc 文件中。這樣設計可以運行更加複雜的語法,執行效率也會提升。 同時這也意味著,如果修改CDS處理函數時,可能需要執行強制重新編譯。

界面語言提升 link

當前版本可以引用界面語言可視組件的語句中應用 as 分句。 在拖拽組件中這點非常實用,可以讓界面捕獲到拖拽對象並需要時調用對應方法。

on 語句可以使用支持一個事件消息列表。

界面(screen)新增了 sensitive 特性。這個特性決定該界面是否可以發生互動。

在界面語言中,如果某個Python語句後面帶有不正常的特性名時,當前版本的Ren’Py會生成一個錯誤。(雖然很少見,但這往往是一個語法錯誤。)

文本提升 link

當前版本Ren’Py支持自閉合的自訂文本標籤(tag),這是不需要成對閉合標籤的 自訂文本標籤

當前版本Ren’Py支持三種新的表示,可以用於格式化文本:

  • “[varname!u]” 強制文本大寫。
  • “[varname!l]” 強制文本小寫。
  • “[varname!c]” 強制首字母大寫。

安卓和iOS提升 link

當前版本Ren’Py會在支持的設備上使用Framebuffer對象。因此,安卓和iOS設備上運行時配置項 focus_mask 會生效。

當前版本Ren’Py將為安卓生成64位的arm二進位制文件。這是Google Play商店將在今年晚些時候執行的強制要求。

安卓上文本輸入的功能再次重寫,修復了用戶卡輸入的問題。 Completion was eliminated, as it was the source of the problems. While languages that require input methods will need a larger rewrite to function, Ren’Py should now properly handle all direct input keyboards.

多語言支持 link

Ren’Py啟動器和樣例工程已由Arda Güler翻譯為土耳其語。

Ren’Py教學工程已由Moshibit翻譯為西班牙語。

法語、韓語、俄語和西班牙語均有更新。

其他提升 link

side 可視組件的子組件渲染順序調整,將根據在控制字串中的順序進行渲染。

say 語句、 menu 語句和 renpy.call_screen 語句新增入參 _mode ,可以用來指定語句執行時的運行 模式

函數 renpy.show_screen()renpy.call_screen() 可以使用入參zorder。

當前版本Ren’Py播放單聲道音訊檔案時,音量將與雙聲道音訊檔案一致,而不再是音量減半。

新增的 config.load_failed_label 將指定一個腳本標籤(label),當Ren’Py讀取存檔失敗時自動跳轉。因為在讀檔失敗時不能定位到當前語句。

這個新函數可以實現遊戲的自動恢復機制。

新增配置項 config.notify ,可以攔截系統通知消息並使用自己定義的內容。

config.say_attribute_transition_callback 的介面已做相容處理,同時接受新舊兩種標籤。

修復 link

Ren’Py遺失某些字元的問題,特別是阿拉伯語中設置為強調色部分,已經修復。

內部使用的OpenDyslexic字體檔案已變更,解決直接複製遊戲可能出現的問題。

7.2.2 link

在此版本中,Ren’Py新增了一個輔助菜單,打開方式為按鍵盤“a”鍵。 該菜單面向玩家開放,讓玩家可以覆蓋遊戲字體,修改文本大小和啟用自動語音。

在此版本中,Ren’Py將允許覆蓋公共game目錄(/mnt/sdcard/Android/package/files/game)內容。 該功能出現在7.2.0版本的功能列表中,但當時還無法正常運行。

在此版本中,Ren’Py支持say語句中的臨時圖像屬性(attribute),應用於多語言支持(translation)。

上傳到itch.io時,Ren’Py會自動下載butler模組。這表示現在上傳時不需要安裝獨立的Itch應用程式,而之前的版本是需要的。

各種條(bar)值對象,包括 DictValue()FieldValue()VariableValue()ScreenVariableValue() 都可以使用新增的 action 參數。該參數對應一個在值發生改變時,執行的某個行為函數(action)。

回滾系統最佳化,減少了GC數量。

7.2.1 link

iOS版提升 link

現在Ren’Py生成iOS版工程時,會設置iOS應用的版本欄位。

從此版本起,Ren’Py將搜索ios-icon.png和ios-launchimage.png文件,使用合適的尺寸用作iOS版本的圖示和啟動圖像。

其他提升 link

當讀檔後立刻使用回滾,renpy.in_rollback() 函數將返回True。可以使用下面的腳本:

::
python:
if not renpy.in_rollback():
renpy.run(ShowMenu(‘save’))

實現在初始化階段就顯示存檔菜單,而不用等到讀檔或回滾。

新增配置項 config.say_attribute_transition_callback ,可以選擇say語句的基礎轉場效果。

新增環境變數 RENPY_SEARCHPATH ,可以覆蓋啟動參數 config.searchpath

修復 link

Ren’Py自身代碼經過一輪審核,確保運算符 == 和 != 匹配,無論 == 是否被重定義過。

使用 add 語句在界面中添加變換(transform)時可能出現的問題,已經得到修復。

extend 語句處理入參的機制發生改變,確保較新的入參優先度高於 extend 之前的say語句中的入參。

當前版本Ren’Py在判斷動態圖像(dynamic image)是否相等時會考慮作用域。這個改動也修復了界面中某些動態圖像不更新的問題。

macOS上 config.save_dump 的值為True時導致崩潰的問題已經修復。

config.profile 的值為True時導致崩潰的問題已經修復。

安卓平台顯示數字鍵盤時,Ren’Py明確要求文本(而不是信箱地址、密碼和電話號碼等)輸入。

某些menu語句導致前向滾動無法運行的問題已經修復。

7.2 link

臨時性say語句 link

Ren’Py現在支持臨時性say語句。用法與普通say語句相同,可與普通say語句混用。 臨時性say語句中的設置的各類屬性(attribute),在語句執行完後將恢復為上一條語句的狀態。 比如下面這段腳本:

show eileen happy

e "我很開心。"

e @ vhappy "我真的很開心!"

e "我還是很開心。"

對話中的第一行和最後一行,Eillen將使用happy表情。對話的第二行中,Eileen將使用vhappy表情。

變更 link

新增 window auto showwindow auto hide 語句,可以在顯式展示和隱藏對話窗口後,保持 自動對話窗口管理 有效。

Preference`(“display”,“window”)() 現在可以避免創建比整個界面更大的窗口。 在 gui.init() 中配置的窗口最大尺寸就是上限。

創作者定義的語句 新增了幾個語法分析器方法,可以處理入參、圖像命名的組件、腳本標籤(label)和使用特定分隔符的Python代碼。

renpy.force_autosave() 函數新增一個入參,可以防止自動存檔未完成的情況下再次強制自動存檔。

點擊繼續界面 新增一些參數。

放置文本型對象時, yanchor 特性(property)的值可以是 renpy.BASELINE。設置為該值時,錨點就會設置為文本第一行的底線(baseline)。

新增的圖像操縱器(image manipulator) im.Blur() 可以模糊圖像。感謝大佬Mal Graty的貢獻。

層疊式圖像(layeredimage)組支持 multiple 特性(property),允許在同一個組內同時使用多個圖像屬性(attribute)。 這是個很實用的功能,可以讓一組自動定義的函數應用在很多不衝突的圖像上。

(有多個顯示設備時)當滑鼠切換到不同的桌面時,Ren’Py會保持全螢幕。在重新最大化窗口的載入過程中不再會出現抖動現象。

config.allow_duplicate_labels 配置項可以定義或設置一段init python代碼,然後允許遊戲內出現重複的腳本標籤(label)。

可視組件 Movie() 可以設定循環或不循環,並在停止循環播放後顯示關聯的靜態圖像。 還可以在影片播放之前顯示某個指定的圖像。

安卓平台變更 link

安卓SDK的下載更新。修復工具無法下載的問題。

針對鍵盤制定了一個顯式行為函數,確保確認鍵(enter)正常。

當使用sideload模式安裝在亞馬遜的設備時,Ren’Py使用亞馬遜的支付API,可以使用“雙商店”APK進行支付系統測試。

Ren’Py現在可以使用公共遊戲目錄(/mnt/sdcard/Android/package/files/game),前提是在遊戲中定義好使用的目錄。

修復 link

使用dissolve效果時界面底部會出現一條不透明的黑色或灰色線,這個bug已經被修復。

對imagefont字體的支持問題已修復。

從啟動器導航菜單創建新文件的功能已經可以運行。

菜單集功能再次有效。

Function() 和其他行為函數被傳入不相容的數據類型時,Ren’Py不會掛死。

某個情況下前向滾動失敗的問題已修復。

MacOS上Steam消息無法正確顯示的問題已修復。

7.1.3 link

這個版本是相當於7.1.2的再次發布,只修復了一個bug。那個bug是在測試版本殘留的問題,會導致在初始啟動階段就設置 config.default_language 的值。

7.1.2 link

功能提升 link

Ren’Py的界面語言現在支持包含匿名的ATL變換(transform)。比如現在可以這樣寫:

screen hello_title():
    text "你好。":
        at transform:
            align (0.5, 0.5) alpha 0.0
            linear 0.5 alpha 1.0

新增的 SetLocalVariable()ToggleLocalVariable() 行為函數,可以用來設置界面使用的變數。

新增的 config.menu_include_disabled 配置項,決定菜單是否應該包含可由if分句禁用的入口(entry)。

在安卓模擬器模式中可以使用Shift類組合鍵(比如Shift+I和Shift+R)。

在文本標籤(tag)需要一個值卻沒有提供的情況下,Ren’Py提升了報錯訊息。

新增的 _version 配置項標識遊戲在創建時的版本號。這個值僅僅存儲創建時定義的版本號。後續是否更新取決於創作者的需求。

可視組件 Movie() 添加一個新的模式,讓同一個文件內的色彩數據和alpha mask數據按邊對齊。 這個模式防止main影片與mask影片出現不同步的問題。

FilePageNext()FilePagePrevious() 函數可以通過入參控制,是否可以將玩家帶入自動或快速存檔頁。

新增的 config.skip_sounds 配置項決定Ren’Py是否跳過非循環播放的音訊檔案。

多語言支持 link

現在Ren’Py能夠自動檢測使用者系統中的地區,並設置相應的語言。 詳見 config.enable_language_autodetect多語言支持 部分文件。

德語部分更新。

修復 link

修復了一個Windows平台的bug。這個bug僅在使用阿拉伯語和希伯來語時出現(譯者註:就是說中文用戶不用管,所以這也不按原文翻譯了)。

如果讀取某個圖像(image)時,發現完全匹配圖像名的圖像不存在,但相同前綴(prefix)的圖像存在時,現在Ren’Py會報一個錯誤(error)。在這次修改之前,如果圖像eileen happy而要顯示eileen happy unknown時,那個unknown屬性(attribute)會被忽略。

Lint工具功能提升,能夠處理帶屬性(attribute)的非同名圖像,比如層疊式圖像(layerd image)。

Ren’Py會生成適合手機顯示的選項菜單圖像。

7.1.1 link

歷史記錄方面的bug修復 link

這個版本解決了Ren’Py中“歷史”界面的一個問題(issue)。這個問題的觸發條件是,一行對話中出現不成對的方括號,比如:

"I [[think] I'm having a problem."

出現這種情況時,字串“I [think] I’m having a problem.”會添加到歷史記錄中。如果Ren’Py中顯示這段歷史記錄,並嘗試內插 think 變數,就會掛掉。

新版本的修復辦法是,在歷史界面中添加了 substitute False 的情況。這個辦法只對新建的項目有效。 之前已經存在的老項目,創作者只能自己修復了。 下面是一個新的歷史界面定義:

screen history():

    tag menu

    ## 因為歷史界面可能很大,所以不預載入界面。
    predict False

    use game_menu(_("History"), scroll=("vpgrid" if gui.history_height else "viewport"), yinitial=1.0):

        style_prefix "history"

        for h in _history_list:

            window:

                ## 如果history_height的值是None,就使用自適應布局。
                has fixed:
                    yfit True

                if h.who:

                    label h.who:
                        style "history_name"
                        substitute False

                        ## 如果對應角色的文本顏色有單獨設置,就獲取設置的文本顏色。
                        if "color" in h.who_args:
                            text_color h.who_args["color"]

                $ what = renpy.filter_text_tags(h.what, allow=gui.history_allow_tags)
                text what substitute False

        if not _history_list:
            label _("The dialogue history is empty.")

新的歷史界面定義中包含一行 substitute False 。創作者可以在自訂的歷史界面中添加這行,避免上面提到的程序卡死問題。

安卓版本的提升 link

現在Ren’Py分配給安卓發布工具的記憶體總量增大到1.5GB,也就是Google套件中的預設值。為了確保創作者具有發布更大遊戲的能力,請確認電腦上安裝了64位版本的Java 8。

Ren’Py明確要求安卓系統,將軟鍵盤的“回車(Enter)”鍵作為一次輸入的結束。

現在Ren’Py在安卓8(Oreo)以下版本中將剪裁和重新調整app圖示(icon)的尺寸。

Ren’Py生成x86_64版本的apk時,會使用一個不同的版本號數字。這樣就可以同時讓適配x86_64和armeabi-v7a處理器的發布包上傳到Google Play或其他應用商店裡, 這樣就不需要每次分別生成一個apk並手工修改名稱。

其他提升 link

現在Ren’Py會自己處理0字寬的字元繪製問題,防止不支持0字寬的字體依然會被繪製在螢幕上的情況出現。

Ren’Py支持非斷行空格和0字寬非斷行空格字元,防止文本中的圖像空間被擠占。

Ren’Py支持 Character() 對象中 ctc_position 參數的一種新值“nestled-close”。 使用該值可以防止“點擊繼續”型標誌和其他行之間出現斷行。

(拖放組件中的)Drags類現在支持變換的點擊事件。(桌面電腦的滑鼠右鍵點擊和觸控平台的長按操作。)

修復 link

函數 SetVariable()ToggleVariable() 入參類型已經擴展,可以接受命名空間加欄位形式。 所以現在可以使用類似 SetVariable("hero.strength", hero.strength + 1)ToggleVariable("persistent.alternate_perspective") 這樣的寫法。

對話窗口自動管理(使用 window auto 語句啟用)是指,當遊戲內菜單有關聯的對話或標題時,會自動調整布局和尺寸。

Ren’Py生成程序時必須的fribidi內嵌版本原始碼已經包含在 -source 歸檔中。

還有一些語音支撐方面的修復點,最佳化了對歷史記錄和語音重播功能的支持。

7.1 link

安卓 link

這個版本重點重新編寫的Ren’Py對安卓平台支持,以適應現在行動端的需求。 這樣Ren’Py遊戲可以在Google Play商店上架。某些變更可能需要創作者更新遊戲內的某些文件。 特別需要注意的是,icon圖示格式已經改變,所以icon圖示需要重新製作。

Ren’Py運行要求的最低安卓版本號已經提升至安卓19(aka 4.4 KitKat),最佳運行版本為安卓28(aka 9 Pie)。

(譯者註:這裡的安卓19和安卓28是指安卓的API級別。每個API級別對應一個安卓版本號,例如LEVEL 19對應的是安卓4.4系統,LEVEL 28對應的是安卓9.0。)

添加了x86_64結構,原有的x86已經刪除。(某些x86設備可以通過二進位制轉義層運行arm平台版本。)

獨白模式 link

現在使用3個雙引號,可以直接在腳本中寫大段的對話或旁白。例如:

e """
這是一段對話。

而這是第二段。
"""

這將創建兩端對話。詳見 獨白模式

在獨白中還可以使用新的文本標籤(tag)——{clear}。 當{clear}標籤單獨占一行時,作用相當於 nvl clear 語句。詳見 NVL獨白模式

帶屬性的say語句變更 link

帶屬性的(attribute)的say語句中,如果對應標籤(tag)的圖像不存在,處理機制有所變化。 以前,Ren’Py會使用名圖像,並且最近帶屬性的say語句中的屬性,以及顯示那個屬性對應的頭像(side image)。

現在,Ren’Py會根據提供的屬性和已存在的屬性決定顯示的頭像。這個特性使得帶屬性的say語句以同一個工作機制實現顯示或不顯示圖像。 當某個屬性(attribute)對應的頭像並非唯一時,Ren’Py會根據所有給定的屬性,選用存在的屬性中最有可能的圖像作為頭像。

這項改動主要是為了方便使用層疊式圖像(layered image)作為頭像,這樣只需要選用不同的圖像屬性(attribute)就可以改變頭像。

更新器變更 link

現在Ren’Py每次更新時,更新器會提示使用者選擇更新渠道。這個設計意在讓使用者確認每次更新使用哪個渠道, 這樣就不會意外更新為某個預發布或nightly版本。

你可能會發現,有時並找不到預發布版本的更新。這是正常的——與之前的版本不同,只有存在可用的預發布版本的更新渠道才會出現。

多語言支持 link

Ren’Py啟動器(launcher)、模板遊戲和The Question的腳本,已經由Muhammad Nur Hidayat Yasuyoshi翻譯為馬來語。

韓文也已更新。

現在RAPT使用的字串也可以翻譯為非英語的其他語言了。

其他 link

現在Ren’Py可以在遊戲退出時使用可靠的方法自動存檔。(相比之前版本要可靠,原來的自動存檔可能會失敗或陷入死循環。) 這個特性由配置項 _quit_slot 控制。

文件行為函數(比如 FileSave()FileLoad()FileAction() )現在可以使用一個 slot=True 入參。 當這個入參存在時,行為函數會載入一個已命名的槽位,而不需要進入存檔頁面。

開發者菜單(使用快捷鍵Shift+D)現在會顯示一個界面,能夠展現已顯示和已隱藏圖像的相關屬性。

添加了函數 renpy.transform_text() ,該函數可以將不帶觸控文本標籤或文本內插的文本執行變換(transform)操作。

現在使用Gallery對象的make_buttons方法創建的按鈕(botton)現在繼承空的樣式(style),而不再是按鈕樣式。 這樣預防了按鈕樣式的某些特性(property)導致的故障。

現在,點擊滑鼠時,結束文本顯示的代碼透過事件消息(event)方法調用。 這樣,菜單顯示狀態下時就不會因為滑鼠點擊而結束互動行為。

處理imagebutton和image map的自動圖像時,支持可視組件的前綴名。

之前的版本中,在NVL模式下如果某個NVL模式語句後面跟著另一個NVL語句,並且後面的語句中含有某個未定義的角色名,運行會出現一個錯誤(error)。 現在這個bug已經修復。

當兩個ATL變換(transform)嵌套時,使用變換的語句會同時實現兩個變換效果,而不只是嵌套在外層的變換。

Ren’Py用於window、bar和frame的動態圖像(dynamic image)已更新。(以及所有由可視組件派生出的對象,比如按鈕和imagemap。)

當模態框(modal)狀態置為True時,Ren’Py會將某個內核資源占用100%的問題(issue)已經修復。

Ren’Py現在已經包含了一份fribidi的拷貝,而不再使用操作系統中安裝的版本。

(譯者註:某些語言文字的書寫列印是從右往左順序進行的,當這些文字中出現其他字元,比如阿拉伯數字、英語單詞等,又需要保持從左往右的列印順序。fribidi是針對這種雙向列印需求提供的庫。)

如果配置了 box_wrap ,就可以使用新增的配置項 box_wrap_spacing 控制行間距和列間距。

配置項 adjust_spacing 的樣式特性現在可以使用“horizontal”和“vertical”這兩個值了。 設置為這兩個值後,就可以指定只在水平或垂直方向調整間距。

LayerdImageProxy現在可以使用內插字串。

開始遊戲或者進入一個新的上下文(context),比如一個菜單上下文時,會調用新增的配置項 config.context_callback 。 這個配置可以用於進入那個上下文時,停止語音和音效的播放。

可視組件 Drag() 新增 activated 特性。這個特性是一個回調函數,當用戶首次在某個可拖拽(drag)組件時被調用(在組件移動之前)。

7.0 link

自從Ren’Py 6帶來ATL語言、界面語言、OpenGL和DirectX加速等特性後,到Ren’Py 7.0對安卓和iOS平台的支持、多語言支持、外部平台接入支持(Accessbility)等新功能,Ren’Py引擎的開發已經超過了10年。

6.0版和7.0版之間的變化,可以參看變更日誌的其他部分,或者在Ren’Py的網站上查看更老版本的變更日誌。這一層的內容是7.0跟6.99.14.3兩個版本間的差異。

層疊式圖像 link

層疊式圖像 是使用在Ren’Py中的新定義圖像。它設計用於精靈(sprite),該精靈是通過Photoshop等軟體製作出的一系列圖層。層疊式圖像系統讓圖像根據屬性(attribute)顯示不同內容,由Python條件表達式決定顯示哪個圖層的圖像。

層疊式圖像用為 composite()ConditionSwitch() 的一種替代方案。它使用的語言讓定義合成圖像更方便。而且Ren’Py可以根據被合適命名的文件,生成對應部分的定義。相比Ren’Py的其他功能,層疊式圖像也更優秀。比如屬性(attribute)可以預載入,而ConditionSwith卻不行。層疊式圖像還可以在互動式指導器(interactive director)中使用。

字典轉場 link

字典轉場 可以使用with語句和某些其他函數將轉場應用於一個或多個圖層。Ren’Py不會在使用這些轉場時暫停。字典轉場使精靈進行轉場的時候也同時顯示對話成為可能。

變更 link

現在的Ren’Py中已經不包含舊的教學和模板。不過從舊版本的Ren’Py中複製過來也可以用。

Scroll() 行為可以使按鈕改變視口的位置或條(bar)的值。

Dissolve()ImageDissolve()AlphaDissolve() 轉場現在可以承認源可視組件的alpha通道,就像設置了 alpha=True參數一樣。由於忽略alpha通道不再是最優,這種改變允許在更多地方使用相同的轉場。

自動圖像定義現在可以在init level 0級別運行,而不是原來的init level必須大於999。這個改動允許 renpy.has_image() 函數能在初始化語句塊(block)中使用。

互動式指導器(interactive director)現在多了一個按鈕,允許創作者選擇顯示在界面的頂部還是底部。

界面語言的for語句 聲明現在需要一個index子句:

for i index i.name in party:
    ...

當被提供時,它應該返回一個唯一的值,該值可以像按鈕地圖訊息和轉換狀態其來源的對象。

現在有可選的上標文字,允許兩種不同的上標文字同時顯示。(比如翻譯和注音。)

新的 可視組件前綴 系統可以定義你自己的可視組件,組件可以用字串訪問,這與圖像,圖像文件和solid具有的字串形式相同。

Ren’Py現在支持創建具有單個文件的.zip文件(例如.rpa文件)大於2GB。這需要使用Zip64標準,在某些平台上可能不支持解壓縮這種文件,最需要注意的是Windows XP。

新的 renpy.get_hidden_tags() 函數返回一組標籤(tag),包含隱藏屬性,另一個 renpy.get_showing_tags() 函數則返回一組排列好的標籤(tag)。

為了與ATL和其他動畫保持一致,第二次顯示影片精靈現在將重播影片。

多語言支持 link

Ren’Py 教學和The Question範例現已支持法語,感謝 Alexandre Tranchant。

對日語和俄語的支持更新。

修復 link

當界面不顯示時,處理hide和replace事件消息導致的界面無法恢復問題已經修復。(這種情況會在用戶跳過遊戲時出現。)

在互動式指導器(interactive director)中使用預設語言(英語)時,偶爾會切換為俄語的問題已經修復。

可視組件 Composite()Crop()Tile() 分別對應各自的新名稱。

接入控制台時,Ren’Py回滾位置不正確的問題已經修復。那個問題會導致控制台顯示不正確的數據,不過僅限於控制台自身的數據。