RPCS3是目前最成熟的SONY PlaySatAION 3模擬器之一,已經可以在電腦上正常執行許多套裝遊戲,在先前的更新中也加入升頻功能,能讓遊戲在高於原本的畫質設定下執行。在近期更新中,更是透過非同步繪製的方式來降低畫面發生停頓狀況的頻率,以及加入了玩家帳號管理等功能。
遊戲過程不再卡卡
有使用過RPCS3模擬器的玩家,應該都會在開啟遊戲時等待漫長的系統啟動,並在過程中遇到不正常卡頓的狀況,明明在大多數的時間FPS都可以流暢跑到60幀,為什麼偶爾就會發生明顯的卡頓感?這就要從RPCS3的繪圖方式來說明。
在2017年的時候,開發者為了要提升程式效能,於是移除了大量佔用處理器資源的頂點預處理(Vertex Preprocessing)步驟,雖然能大幅增進效能(在某些情況增益甚至高達10倍),但這種方式會增加頂點著色器(Vertex Shader)的資料量,並增加從記憶體區塊讀取頂點資料的複雜性,會造成顯示驅動程式需要花很常的時間連接至程式,執行過程也需要透過位元轉移(Bitshift)與資料遮罩(MasKING)等方式來解碼頂點資料。
雖然程式執行的速度很快,但是連接步驟則非常緩慢,即便可以透過繪圖快取(Shader Cache)來降低延遲,但是當玩家到達新場景的時候,就很容易遇到需要的資料不在快取之中,而造成卡頓的狀況。為了要避免這個問題,RPCS3就會預先將所有的資料預先處理備用,而其副作用就是開啟遊戲時需花很長的時間預備資料。
▲ 在第一次執行遊戲時,RPCS3可能會顯示「Loading Pipeline Object…」、「Compiling shaders…」等訊息並伴隨漫長等待。(圖片來源:RPCS3部落格)
解決之路困難重重
在解決這個問題的過程中,開發人員遇到了許多困難,首先PlaySataion 3的RSX繪圖處理器,並非採用現在主流的統一繪圖架構(Unified Shader),而是具有獨立的頂點與像素管線,彼此具有各自的指令集架構,這些龐大且複雜的程式將會讓執行檔的程式碼相當混雜。
另一個大挑戰是,位元組碼(Bytecode)本身並不包含程式運作所需的全部資訊,需要在傳送繪圖需求的過程中透過暫存器進行設定。舉例來說,TEX指令並不會區分貼圖是1D、2D、3D、立方體等種類與它們的陰影變數,這代表模擬器需要在資料進入暫存器之後才能知道其種類,所以這類資料就無法在遊戲執行之前預先準備。
▲ PlaySataion 3繪圖處理器的架構造成模擬的困難。(圖片來源:維基百科,本圖採用創用CC姓名標示-相同方式分享,作者為Voodooo83)
(下一頁還有解決方式與其他更新說明)
解決之道:非同步繪製
如果你有看過RPCS3的程式生產管線,就會發現程式反組譯器被拆分為程式與反組譯執行緒等2大分類,這是因為RPCS3一開始就採用非同步反組譯,雖然執行準確度與效率都無法與同步反組譯相比,但其最終目標就是能讓解碼與重新編譯分開進行。
在實現這個目標之前,解碼器需要非常有效率與降低處理器負擔,否則反組譯著色器就會造成劃面閃爍或錯誤,於是開發者需要花更多心力去清理反組譯器,以最小化產生的著色器數量。
一旦頂點程式分析器能將大多數遊戲產生的著色器數量降低到1,000以下時,就能從主要繪圖流程中,將反組譯、重新編譯、連接等步驟分離。這個方式對原本就支援多執行緒的Vulkan來說不會太難,但是對OpenGL來說要處理執行緒先後順序就有點難度。
這種處理手法原本預期會產生嚴重的圖型錯誤,但實際上程式只需幾秒鐘的時間就能正確編譯,所以不需近似著色器或直譯器(Interpreter)的幫助,也能應用在模擬器上。
這功能對玩家來說是個非常好的消息,因為與其在遊戲開始前要等待1分鐘左右的「黑畫面」,大多數玩家寧可圖像在1、2秒之間短暫出錯,來降低整體等待時間。
▲ 非同步繪製可以縮短模擬器繪製場景所需的時間,並改善卡頓狀況,連開發者自己都對成果感到印象深刻。(圖片來源:RPCS3部落格,下同)
▲影片右半部的畫面採用非同步繪製技術,可以看到卡頓狀況比左邊畫面改善許多。
其它改進也值得一提
RPCS3近期除了透過非同步繪製來改提升戲體驗外,也在更新中改善了頂點程式反組譯器(Vertex Program Decompiler)與分析器,能進一步簡化著色器,並降低整體產生的著色器數量。這個改進除了解除許多效能瓶頸之外,也解決了許多如長時間停在相同畫面會造成當機,或是大量著色器快取導致畫面閃爍等間接產生的問題,也讓《音速小子 世界大冒險》(Sonic Unleashed)、《全面抵抗2、3》(Resistance 2、3)、《拉捷特與克拉克 Future 2》(Ratchet & Clank Future:A Crack in Time)等遊戲能夠正常執行。
RPCS3先前雖然已經支援遊戲存檔與獎盃功能,但是模擬系統只具有「00000001」這個單一使用者ID,在近期更新中則加入了使用者管理功能,讓玩家可以在模擬系統中建立多重使用者ID,並自由切換使用者,不但方便管理不同玩家的存檔與獎盃,也能讓《泰拉瑞亞》(Terraria)這類單機多人遊戲的玩家可以同時登入帳號。
▲改善頂點程式反組譯器與分析器,除了增加RPCS3的效能外,也提升了相容性,讓《音速小子 世界大冒險》等遊戲能夠正常執行。
▲ RPCS3也正式支援多重使用者功能。
▲ 雖然多位玩家能同時以分割畫面遊玩《泰拉瑞亞》,但可惜的是這款遊戲本身的圖像模擬還是有些小問題。
▲ 截止2018年7月的統計,RPCS3已經能夠執行2,199款遊戲,其中974款被列為可正常遊玩。
到目前為止RPCS3已經可以執行約75%的PlaySataion 3遊戲,共有高於3成的遊戲列為可正常遊玩,約4成為可進入遊戲(但可能有效能或圖像問題),整體而言已經算是不錯的成果,但仍然有相當多的努力空間。如果讀者想以實際行動對開發團對表示支持的話,不妨透過Patreon募資平台進行小額捐款。
想看小編精選的3C科技情報&實用評測文,快來加入《T客邦》LINE@查看原始文章商品推薦
- 女生包包怎麼挑?小資女必看!網購投資超划算的百搭實用托特包!
- 男孩最愛「有個性的可愛女孩」!4種「瑪莉珍鞋」穿搭 任何季節都百搭
- 來測測你的「美食魂」~你一定看過,卻叫不出名字的古早味傳統點心!
- 換季穿搭指南!6款早秋襯衫搭配術,簡單穿出隨性時尚韓妞風格
- 客製自己的手機殼!宇宙大明星「BT21客製化手機殼」亮相!
- 洗淨力100分!網友激推洗衣精推薦TOP6!水晶肥皂 洗衣球都上榜~
- 以舊換新『Apple Trade In』換購方案:最高折抵 NT$17,200,不用一萬輕鬆入手最新 iPhone 11 !
- 拖鞋都要比別人可愛!10款迪士尼、史迪奇、蛋黃哥等超Q造型拖鞋超療癒
- 泰國零食推薦,泰國CONN香脆玉米粒,喬山健康科技代理,非基改玉米真空油炸/無反式脂肪/零膽固醇,上班族團購美食,追劇零食推薦,派對零食推薦,
- 2019台北東區美食【小膳香成都麻辣火鍋】喝花酒推薦.菜單
- 北海道直送!家樂福日本週開跑,免飛日本就能吃到北海道必買零食、乳製品
- 蘋果價格高攀不起?最潮 『AirPods造型』 耳飾配件平價登場!戴上就威風走跳潮流界啦!
- 2019 最火爆款『雲朵包』The Pouch 席捲全球!穿搭 KOL、IG 網紅都在揹,令人一見傾心的時髦軟萌系包款就是它!
- 【十月優惠懶人包】美食餐廳、咖啡飲料、甜點午茶通通有,好康折扣資訊一把抓!吃好吃滿準備過冬啦~
- 敗家首選!【大江購物中心】週年慶優惠好禮拿不完,買完這一波我就剁手!
- 《台北南京東路特賣會》曼黛瑪璉內衣首八日8折滿萬75折 。零碼內衣任選3件899元,2件1000元。內褲6件1000元︱(影片)
- 快趁現在買起來!5款平價鍋具千元有找,高CP值還不快衝
- 2019基隆伴手禮首選【泉利米香】冰的特產禮盒
- 珍奶控與捲迷們注意了!亞尼克 X 黃氏兄弟『黑糖珍珠撞奶生乳捲』夢幻登場:濃郁黑潮、Q彈來襲!
- 原來韓妞都這樣穿!2019 韓國秋冬穿搭 大勢公開