新增了 camera 語句,用在3D舞台系統中。
這個語句與 show layer 語句相似,但 camera 語句不需要指定圖層名,也不會在使用 scene 語句後清除效果。
可以直接這樣寫
camera:
perspective True
就能啟用3D舞台系統。
除此之外, show layer 語句和 scene 語句在7.4.4及更早版本中的效果發生了反轉。
scene 語句將清除 show layer 語句帶來的變換效果。
新增類 Model 是一種使用基於模型渲染器並用於創建模型的可視組件。
現在可以使用該類創建多紋理的2D模型,並可以自訂變換(transform),並像內建的各種變換一樣使用。
目前這個組件還不支持3D,不過未來可期。
每夜版中在iOS平台編譯過程中產生的錯誤已修復,不過那個錯誤沒有出現在Ren’Py正式版中。
Ren’Py應用程式窗口失焦後,模態(modal)界面無法攔截時間事件的問題,已經修復。
blur著色器的疊代次數做了限制,確保Ren’Py與大多數使用webgl的設備相容。
在勾選“強制重新編譯”選項時,Ren’Py生成最終文件時將重新編譯 renpy/ 目錄下的所有Python文件。 這樣可以確保某些原因修改過的文件都能重新編譯,但並不是指創作者電腦上Ren’Py所在的整個目錄。
使用animation時間軸時,ATL將跳到可視組件顯示內容的第一幀。
回滾之後,Ren’Py的暫停設置了超時。
從Ren’Py 7.4.5開始,基於模型的渲染器將作為遊戲的默認渲染器。
如果要禁用此渲染器,請將 config.gl2 設置為False。
啟用基於模型的渲染器後,Ren’Py可以支持“3D舞台”。 3D舞台在顯示圖像時增加了第三個維度,當可視組件縮放、移動、旋轉等變化時顯示3D透視效果。 更多訊息詳見 3D Stage。
為了3D舞台的使用便利性考慮,使用 show layer 或 renpy.layer_at_list() 應用到整個圖層的變換(transform)後,scene 語句不再清空該圖層的變換(transform)。
啟用基於模型的渲染器後,可以使用新增的 Swing() 轉場效果。
該轉場能讓場景在3D空間裡的垂直或水平軸向旋轉,並實現場景切換。
新增的 blend 變換特性可用來指定遮罩函數。
遮罩函數控制如何將新的像素與原有像素混合。除了Ren’Py原有的“normal”和“add”遮罩函數,這次新增了“multiply”、“min”和“max”函數。
一直以來積攢了一些對硬體滑鼠支持的修改和提升,現在正式在文件中發布了GPU中受限尺寸硬體滑鼠的支持。
新增配置項 config.mouse_displayable 和可視組件 MouseDisplayable(),可用軟體滑鼠替換硬體滑鼠,類似於Ren’Py 7.3或更早之前的方案。
新增函數 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避免在回滾中暫停,總是嘗試在某個需要互動的語句處結束回滾。
播放音訊時,現在可以同步兩個音訊通道上不同音訊檔案的時間軸。
發布安卓版本的幾個必要的包(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方式進行縮放。
某些安卓設備上模糊效果無法正確顯示的一個問題已修復。
在安卓設備上播放某些稀有影片、音訊格式時出現的一個問題已修復。
安卓方面的修復會要求創作者重新生成安卓項目,遇到安卓在配置時的問題
Web平台beta版更新。
iOS 14.5.1及更高版本上的行動版Safari瀏覽器的一次回退,使Ren’Py無法在該平台運行。 由於該問題是由行動版Safari引起的,沒有解決方案,只會向用戶顯示一調提示訊息讓他們聯繫蘋果公司。 此次回退也影響了其他在iOS平台的瀏覽器,比如行動版Safari封裝外殼的Chrome和Firefox瀏覽器。
iOS版本生成問題修復。
macOS平台對Steam的支持已修復。
macOS應用程式的簽名和認證已修復。
預設的level-of-detail bias設置為-0.5,可以通過配置項 config.gl_lod_bias 修改。
這個值在Ren’Py中對縮小有用,對放大沒用。不過在放大圖像時可能會產生鋸齒。
此外還有一些Ren’Py針對模態界面的提升。
為幫助創作者實現遊戲多個發布版本(比如早期公測或Patreon平台版本),Ren’Py新增了old-game目錄,會將前一個版本game目錄的部分內容複製到old-game中。 Ren’Py會使用目錄中的.rpyc文件。由於.rpyc文件在載入遊戲時需要使用,所以也可以用於幫助多人開發遊戲遇到的載入問題。
更多訊息,詳見 文件 。
使用手勢或控制器導致程序異常退出的一個問題已修復。
發布web版本時windows版本程式異常退出的問題已修復。
成就系統的後端持久化數據,可以清空進度。
Live2D可以重設不透明度等參數。
載入時,Ren’Py不再改變窗口最大化尺寸。
新增了一項GL特性 blend_func ,需要啟用基於模型的渲染器。
該特性可以自己定義GL遮罩函數,使Ren’Py開始支持各種遮罩模式。
Live2D可以支持additive(疊加)和multiply(相乘或正片疊底)遮罩模式。
使用default或define定義 renpy 命名空間的變數時將報錯。
之前有一些 ref:Preference對象 <preference-variables> 的方法在文件中遺漏,已補充在文件中。 這些方法可以獲取或設置當前音量值和靜音狀態。
重寫了修改圖示的代碼,生成的可執行程序只能包含軟體和圖示,不再含有任何冗餘數據。 這樣應該能夠避免某些防毒軟體的攔截。
當前版本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嘗試各種不同的視覺系統時,窗口將出現閃爍。
當安卓修改某個渲染上下文(context)時,“非基於模型”渲染器可以正確分配紋理。 解決了以前隨機發生的畫面撕裂問題,尤其是使用Dissolves效果時出現的問題。
這解決了以往的一個問題,即在遊戲還沒有完全啟動時用戶就切換應用,導致啟動異常。 現在當Ren’Py發現程序啟動時沒有獲取焦點時,將在用戶切回遊戲時保存並退出,然後再重新啟動。
總體來說,安卓設備的相容性都得到了提升。
新增配置項 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元組。
在Ren’Py 7.4中引入的 default_mouse 配置項允許不修改 config.mouse 的情況下實現修改滑鼠游標。但即時修改該配置項的方法不存在。
新增的配置項 config.context_fadeout_music 和 config.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圖片導致當機的問題已經修復。
此版本修復了生成發布過程中會遺失文件的一個錯誤:
在三星的設備上發現一個問題,是啟用放大快捷鍵時,可能遊戲會無法響應。 我正在出補丁修復,但不想因此延後這個版本的更新。
macOS上的JVM檢測機制很健壯,不太會被瀏覽器插件拒絕。
當前版本Ren’Py推薦使用AdoptOpenJDK作為JVM的基礎。
pause 語句的語法變更,正確用法為:
pause 1.0
等效於:
$ renpy.pause(1.0)
不再是:
with Pause(1.0)
這表示需要真正暫停的功能特性都可以用pause語句實現。
modal型界面不再能阻止 pause 或 renpy.pause() 的暫停效果。
這表示pause語句可以對顯示在其上層的界面也有效果。
say語句可以增加一種 id 從句,允許創作者指定原say語句id。
這用在需要多語言支持的項目有用,比如原版語言中修復了一個拼寫錯誤,不再需要更新所有其他語言文件。
使用該功能特性是,只要在say語句後面添加 id,並拼上語句的id號。
e "This used to have a typo." id start_61b861a2
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的最低支持版本是10.10(Yosemite). Ren’Py 7.4無法在這個版本號運行,所以這是對該版本支持的恢復。
macOS 11.0(Big Sur)上無法選擇項目目錄的問題已經修復。
Pyobjus已經內建在macOS版本Ren’Py中。這個庫可以使用Cocoa的API。
有一些報告發現,Ren’Py 7.4.1預發布版本在某些老舊的安卓設備上無法正常工作,比如三星Galaxy S5。 我們正嘗試著一個設備復現此類問題,必要的時候再發布一個新版本。
更新了西班牙語。
某些支持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_dissolves,config.mipmap_movies 和 config.mipmap_text 取值。
自動語音配置項的版本切換功能體驗提升。
Lint檢查工具再次由於多語言問題爆了。
新版本包含一個全新的“基於模型的渲染器(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技術支持的精靈圖像(sprite)。 Ren’Py要求創作者自行下載Live2D Cubism的包,同時創作者在發行遊戲前需要同意Live2D技術的使用條款。
Ren’Py支持Live2D模型的顯示,可以任意改變模型的表情並將多個動作組合成隊列(queue)。該功能集成在Ren’Py的圖像屬性(image attribute)中。 當圖像屬性改變時,Ren’Py還支持動作切換的漸變(fade)效果。
基於模型的渲染器帶來了變換(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 ,可以根據給定的像質數對可視組件的子組件模糊處理。
因為Ren’Py還不完全在Python3環境內支持,該版本的Ren’Py包含了一些功能特性允許創作者的腳本同時在Python2和Python3環境下運行。
首先,Ren’Py現在使用 未來計劃 提供標準庫的相容性。 目前可以在模組(module)已經改名的情況下使用import引用Python3的模組。
某個開頭為 rpy python 3 的.rpyc 文件將會以Python3相容模式編譯。該特性導致了兩項變化:
1/2 等於0.5而不是0。
由於這項改變會影響可視組件的位置,寫成 1//2 可以保持原來的語法規則。items、 keys 和 values 方法時,
將返回視圖(view)類型,而不是原來的列表(list)類型。這項改變匹配Python3中對應方法的語法規則,但在面對數據保存或回滾時,
必須將返回結果顯式轉化為列表類型再使用。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版本。
多虧了新的編譯技術,現在Ren’Py在瀏覽器上的運行速度顯著提升了。
為web平台構建的遊戲可以在遊戲運行時從伺服器下載圖像和音訊檔案。 當圖像或音訊預載入時,遊戲就會開始下載。這項技術可以減少遊戲開始運行前的初始化時間和記憶體占用。
在觸控螢幕設備的web瀏覽器上運行遊戲時,Ren’Py會顯示一個觸控鍵盤,彌補WebAssembly遊戲鍵盤輸入方面的缺陷。
載入過程中可以使用WebP格式顯示splash界面,包括帶動畫的WebP。
提供了更多Python模組(module),使Python環境更貼近原生的Ren’Py埠。
提升了對iOS瀏覽器的支持。
可以在Ren’Py啟動器安裝Steam平台的支持。方法是啟動器中選擇在“設置”->“安裝庫”->“安裝Steam支持包”。
新增的配置項 config.steam_appid 會為創作者自動創建名為 steam_appid.txt 的文件。
在項目中應用時,需要使用 define 語句賦值或在python early 語句塊中賦值。
簡體中文、日語和漢語的多語言支持更新,現在使用了統一的字體(譯者註:SourceHanSans,也就是思源黑體)。
教學項目中新增了簡體中文,由Neoteus提供。
(譯者:我不吐槽這事……)
如上面所說,Ren’Py不再支持Windows XP。
如上面所說,Ren’Py不再支持32位iOS設備。
Ren’Py內移除了下載Editra文本編輯器的選項。 Editra編輯器已經超過5年未更新,並且原始發布網站已經關閉。
基於軟體的渲染器沒有完全移除,而是做了精簡,並且在遊戲運行時不再作為可選項。原因是防止基於GPU的渲染器在實際遊戲中顯示錯誤而導致玩家認為遊戲有問題。
對遊戲控制器的支持提升。手把控制器可以實現連發效果。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" }
現在 play 和 queue 後面使用新增的 volume 分句,可以在播放音訊檔案的任意時候,指定某個音訊通道的音量。
變換(transform)中新增的 fit 特性提供了不同以往的圖像填充方式,可以決定圖像是否保持長寬比進行填充。
舉例來說,圖像可以縮放為給定尺寸,或者完全覆蓋不縮放。
應用 xpan 和 ypan 特性的可視組件不再會被增大為原尺寸的兩倍,便於與其他變換特性組合使用。
renpy.input() 函數可以使用正則表達式判斷輸入內容是否被允許。
Grid網格可以使用 margin 特性,用於指定整個網格的外延空白區域以及視口(viewport)的內部空白。
Ren’Py支持一種 {alt} 文本標籤(text tag)。帶有這種標籤的文本會在自動語音模式下唸出來,但不會顯示在螢幕上。 另一種相反效果的文本標籤是 {noalt} 。
啟動器窗口可以調整尺寸。“設置”選項中新增了一個按鈕,用於重設啟動器窗口大小。
新增配置項 build.mac_info_plist 便於訂製化mac版的app。
Ren’Py內建了 requests 庫,聯網功能更方便。
按下鍵盤的PAUSE鍵直接進入遊戲菜單(game menu)。
audio 目錄,也就是由 audio namespace 定義的音訊目錄,可以在啟動器(launcher)中有快捷連結。同時,新建項目時會自動創建audio目錄。
新增的配置項 config.exception_handler 可以配置為某個應用程式,接替Ren’Py自帶異常處理系統的所有工作。
該版本修復了7.3.3版本中引入的嚴重圖形故障。
Flatten() 都可能導致圖形故障。當前版本中,動態圖像(dynamic image)的任何地方都可以包含 “[prefix_]” ,尤其是使用 add 將某個動態圖像添加到按鈕(button)、拖拽組件(drag)等類似可以獲取焦點的對象時。
創作者自訂語句可以包含if語句。
界面更新時,拖放系統性能提升。
當前版本Ren’Py新增 audio 目錄,在 audio命名空間 中自動根據檔案名定義音訊名。
如果有個音訊檔案 game/audio/overture.ogg ,可以在腳本中直接播放:
play music overture
新增類 AudioData() ,可以讓創作者在Ren’Py中直接使用壓縮音訊數據,而不再需要使用其他程序預處理。
為實現這個功能,Ren’Py引入了Python的wave和sunau模組。
單聲道音訊檔案混音的一個問題已經修復。該問題可能會導致很多WAV文件無法播放。 (我們始終不推薦使用WAV文件。)
鑑於蘋果公司的條款要求,Mac版的Ren’Py重建為一個未簽名的二進位制程序。現在需要按住ctrl並點擊renpy.app程序,然後選擇“打開”才能啟動Ren’Py。
對安卓的版本要求降低為Android 19(Android 4.4 KitKat)。
Ren’Py的web埠有一些變更:
在進行重寫GL項目時,我們發現在7.3.0版的性能下降問題,原因在於framebuffer對象的切換。 修改了FBO的使用方法後,Ren’Py性能得到了提升。
renpy.input() 函數可以接收界面的名稱,用於用戶輸入的提示語。
使用界面語言創建的列表、字典和集合可以正確解析。這可以讓更多可視組件可以解析為常數,提升界面性能。
回滾時隱藏通知界面。
NVL模式界面默認顯示對話窗口,防止 windows show 語句已生效導致的問題。
在一個多段語句(比如對話中的菜單)中,當使用 from_current 將 Call 設置為True 時,主控流程將恢復為多段語句的第一段(這樣才能顯示對話內容)。
更多函數使用圖像標籤(tag)的默認圖層。
新增 renpy.is_init_phase() 函數。
當對話內容是menu語句的一部分時,自動語音功能也可以生效。
移除對GLES1的支持。(多年沒用的東西了。)
SelectedIf() 和 SensitiveIf() 行為(action)可以支持將其他行為作為入參。
很多條值(BarValue)可以使用一個 force_step 入參,強制將某個條(bar)的值調整為最接近的某個檔位(step)值。
Frame() 支持tile入參是一個整數字串,該整數表示frame中tile圖像的重複次數。
韓語和西班牙語更新。
描述文本(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創建存檔文件時會存儲日期和時間。
當前版本修復了一個很重要的問題,該問題可能會導致界面內插(interpolate)文本不更新或更新出錯。
當前版本的圖像預載入規則將根據圖像預載入進程運行。
修復了一個與 {clear} 文本標籤相關的問題。
在很多情況下,配置項 config.end_game_transition 無法正常運行的問題已經修復。
對俄語、漢語和西班牙語的支持更新。
由於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瀏覽器就能進行測試。
Ren’Py中的創作者自訂語句(creator-defined statement)和使用這些語句的Lexer對象,在多處進行了擴展並提升了功能。 相關語法如下:
renpy.register_statement() 函數有新的入參,對應新功能。
from 語句。當前版本Ren’Py會將CDS語句的處理結果快取在 .rpyc 文件中。這樣設計可以運行更加複雜的語法,執行效率也會提升。 同時這也意味著,如果修改CDS處理函數時,可能需要執行強制重新編譯。
當前版本可以引用界面語言可視組件的語句中應用 as 分句。
在拖拽組件中這點非常實用,可以讓界面捕獲到拖拽對象並需要時調用對應方法。
on 語句可以使用支持一個事件消息列表。
界面(screen)新增了 sensitive 特性。這個特性決定該界面是否可以發生互動。
在界面語言中,如果某個Python語句後面帶有不正常的特性名時,當前版本的Ren’Py會生成一個錯誤。(雖然很少見,但這往往是一個語法錯誤。)
當前版本Ren’Py支持自閉合的自訂文本標籤(tag),這是不需要成對閉合標籤的 自訂文本標籤 。
當前版本Ren’Py支持三種新的表示,可以用於格式化文本:
當前版本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.
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 的介面已做相容處理,同時接受新舊兩種標籤。
在此版本中,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數量。
現在Ren’Py生成iOS版工程時,會設置iOS應用的版本欄位。
從此版本起,Ren’Py將搜索ios-icon.png和ios-launchimage.png文件,使用合適的尺寸用作iOS版本的圖示和啟動圖像。
當讀檔後立刻使用回滾,renpy.in_rollback() 函數將返回True。可以使用下面的腳本:
實現在初始化階段就顯示存檔菜單,而不用等到讀檔或回滾。
新增配置項 config.say_attribute_transition_callback ,可以選擇say語句的基礎轉場效果。
新增環境變數 RENPY_SEARCHPATH ,可以覆蓋啟動參數 config.searchpath。
Ren’Py自身代碼經過一輪審核,確保運算符 == 和 != 匹配,無論 == 是否被重定義過。
使用 add 語句在界面中添加變換(transform)時可能出現的問題,已經得到修復。
extend 語句處理入參的機制發生改變,確保較新的入參優先度高於 extend 之前的say語句中的入參。
當前版本Ren’Py在判斷動態圖像(dynamic image)是否相等時會考慮作用域。這個改動也修復了界面中某些動態圖像不更新的問題。
macOS上 config.save_dump 的值為True時導致崩潰的問題已經修復。
config.profile 的值為True時導致崩潰的問題已經修復。
安卓平台顯示數字鍵盤時,Ren’Py明確要求文本(而不是信箱地址、密碼和電話號碼等)輸入。
某些menu語句導致前向滾動無法運行的問題已經修復。
Ren’Py現在支持臨時性say語句。用法與普通say語句相同,可與普通say語句混用。 臨時性say語句中的設置的各類屬性(attribute),在語句執行完後將恢復為上一條語句的狀態。 比如下面這段腳本:
show eileen happy
e "我很開心。"
e @ vhappy "我真的很開心!"
e "我還是很開心。"
對話中的第一行和最後一行,Eillen將使用happy表情。對話的第二行中,Eileen將使用vhappy表情。
新增 window auto show 和 window 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() 可以設定循環或不循環,並在停止循環播放後顯示關聯的靜態圖像。
還可以在影片播放之前顯示某個指定的圖像。
安卓SDK的下載更新。修復工具無法下載的問題。
針對鍵盤制定了一個顯式行為函數,確保確認鍵(enter)正常。
當使用sideload模式安裝在亞馬遜的設備時,Ren’Py使用亞馬遜的支付API,可以使用“雙商店”APK進行支付系統測試。
Ren’Py現在可以使用公共遊戲目錄(/mnt/sdcard/Android/package/files/game),前提是在遊戲中定義好使用的目錄。
使用dissolve效果時界面底部會出現一條不透明的黑色或灰色線,這個bug已經被修復。
對imagefont字體的支持問題已修復。
從啟動器導航菜單創建新文件的功能已經可以運行。
菜單集功能再次有效。
當 Function() 和其他行為函數被傳入不相容的數據類型時,Ren’Py不會掛死。
某個情況下前向滾動失敗的問題已修復。
MacOS上Steam消息無法正確顯示的問題已修復。
這個版本是相當於7.1.2的再次發布,只修復了一個bug。那個bug是在測試版本殘留的問題,會導致在初始啟動階段就設置 config.default_language 的值。
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是否跳過非循環播放的音訊檔案。
現在Ren’Py能夠自動檢測使用者系統中的地區,並設置相應的語言。
詳見 config.enable_language_autodetect 和 多語言支持 部分文件。
德語部分更新。
修復了一個Windows平台的bug。這個bug僅在使用阿拉伯語和希伯來語時出現(譯者註:就是說中文用戶不用管,所以這也不按原文翻譯了)。
如果讀取某個圖像(image)時,發現完全匹配圖像名的圖像不存在,但相同前綴(prefix)的圖像存在時,現在Ren’Py會報一個錯誤(error)。在這次修改之前,如果圖像eileen happy而要顯示eileen happy unknown時,那個unknown屬性(attribute)會被忽略。
Lint工具功能提升,能夠處理帶屬性(attribute)的非同名圖像,比如層疊式圖像(layerd image)。
Ren’Py會生成適合手機顯示的選項菜單圖像。
這個版本解決了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 。創作者可以在自訂的歷史界面中添加這行,避免上面提到的程序卡死問題。
現在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並手工修改名稱。
現在Ren’Py會自己處理0字寬的字元繪製問題,防止不支持0字寬的字體依然會被繪製在螢幕上的情況出現。
Ren’Py支持非斷行空格和0字寬非斷行空格字元,防止文本中的圖像空間被擠占。
Ren’Py支持 Character() 對象中 ctc_position 參數的一種新值“nestled-close”。
使用該值可以防止“點擊繼續”型標誌和其他行之間出現斷行。
(拖放組件中的)Drags類現在支持變換的點擊事件。(桌面電腦的滑鼠右鍵點擊和觸控平台的長按操作。)
函數 SetVariable() 和 ToggleVariable() 入參類型已經擴展,可以接受命名空間加欄位形式。
所以現在可以使用類似 SetVariable("hero.strength", hero.strength + 1) 或 ToggleVariable("persistent.alternate_perspective") 這樣的寫法。
對話窗口自動管理(使用 window auto 語句啟用)是指,當遊戲內菜單有關聯的對話或標題時,會自動調整布局和尺寸。
Ren’Py生成程序時必須的fribidi內嵌版本原始碼已經包含在 -source 歸檔中。
還有一些語音支撐方面的修復點,最佳化了對歷史記錄和語音重播功能的支持。
這個版本重點重新編寫的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平台版本。)
現在使用3個雙引號,可以直接在腳本中寫大段的對話或旁白。例如:
e """
這是一段對話。
而這是第二段。
"""
這將創建兩端對話。詳見 獨白模式 。
在獨白中還可以使用新的文本標籤(tag)——{clear}。
當{clear}標籤單獨占一行時,作用相當於 nvl clear 語句。詳見 NVL獨白模式 。
帶屬性的(attribute)的say語句中,如果對應標籤(tag)的圖像不存在,處理機制有所變化。 以前,Ren’Py會使用名圖像,並且最近帶屬性的say語句中的屬性,以及顯示那個屬性對應的頭像(side image)。
現在,Ren’Py會根據提供的屬性和已存在的屬性決定顯示的頭像。這個特性使得帶屬性的say語句以同一個工作機制實現顯示或不顯示圖像。 當某個屬性(attribute)對應的頭像並非唯一時,Ren’Py會根據所有給定的屬性,選用存在的屬性中最有可能的圖像作為頭像。
這項改動主要是為了方便使用層疊式圖像(layered image)作為頭像,這樣只需要選用不同的圖像屬性(attribute)就可以改變頭像。
現在Ren’Py每次更新時,更新器會提示使用者選擇更新渠道。這個設計意在讓使用者確認每次更新使用哪個渠道, 這樣就不會意外更新為某個預發布或nightly版本。
你可能會發現,有時並找不到預發布版本的更新。這是正常的——與之前的版本不同,只有存在可用的預發布版本的更新渠道才會出現。
Ren’Py啟動器(launcher)、模板遊戲和The Question的腳本,已經由Muhammad Nur Hidayat Yasuyoshi翻譯為馬來語。
韓文也已更新。
現在RAPT使用的字串也可以翻譯為非英語的其他語言了。
現在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)組件時被調用(在組件移動之前)。
自從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兩個版本間的差異。
層疊式圖像 是使用在Ren’Py中的新定義圖像。它設計用於精靈(sprite),該精靈是通過Photoshop等軟體製作出的一系列圖層。層疊式圖像系統讓圖像根據屬性(attribute)顯示不同內容,由Python條件表達式決定顯示哪個圖層的圖像。
層疊式圖像用為 composite()
和 ConditionSwitch() 的一種替代方案。它使用的語言讓定義合成圖像更方便。而且Ren’Py可以根據被合適命名的文件,生成對應部分的定義。相比Ren’Py的其他功能,層疊式圖像也更優秀。比如屬性(attribute)可以預載入,而ConditionSwith卻不行。層疊式圖像還可以在互動式指導器(interactive director)中使用。
現在的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和其他動畫保持一致,第二次顯示影片精靈現在將重播影片。
當界面不顯示時,處理hide和replace事件消息導致的界面無法恢復問題已經修復。(這種情況會在用戶跳過遊戲時出現。)
在互動式指導器(interactive director)中使用預設語言(英語)時,偶爾會切換為俄語的問題已經修復。
可視組件 Composite()、 Crop() 和 Tile() 分別對應各自的新名稱。
接入控制台時,Ren’Py回滾位置不正確的問題已經修復。那個問題會導致控制台顯示不正確的數據,不過僅限於控制台自身的數據。