下一世代的網頁遊戲
過去幾年裡,Mozilla 與其他瀏覽器和整體產業緊密合作,致力推動 Web 遊戲的發展。在共同努力下,我們先是透過 asm.js,後又推出 WebAssembly,讓開發者能直接在 Web 上佈署原生碼。如今 WebAssembly 不但已登陸 Firefox 與 Chrome,也即將出現於 Edge 和 WebKit 上。透過 WebAssembly,應用程式碼能在瀏覽器中達到近原生的效能,進而大大造福遊戲開發者,還能嘉惠 WebVR 的應用。由於 WebAssembly 程式碼省去了即時(JIT)編譯和記憶體回收(garbage collection)的程序,故可實現更穩定的效能。隨著主要瀏覽器引擎均已支援此格式,更多應用可享受到近原生速度,從而促成許多零外掛高效能網頁遊戲的誕生。
「從 2017 年開始,許多在 Kongregate 上架的遊戲紛紛捨棄 Flash。現在有近六成的新遊戲改採 HTML5,」Kongregate 執行長暨共同創辦人 Emily Greer 表示:「藉此,開發者得以享受到 HTML5 的突破性技術與工具,而消費者不必安裝第三方外掛程式就能玩遊戲。伴隨 HTML5 的持續演進,開發社群將可創造出更多更先進的遊戲,進而造福 Kongregate.com 的數百萬玩家,以及蓬勃發展的廣大網頁遊戲產業。」
Kongregate 的資料顯示,在該平台上架的遊戲中,HTML5 遊戲約佔 55%。
從其資料看來,其中多半為高品質遊戲。逾六成的 HTML5 遊戲獲得玩家給予「非常好」評分肯定(即在滿分 5 分中拿下高於 4.0 的分數)。
這趨勢固然可喜,但仍有可以改進之處。畢竟,Web 是不斷演進的平台,開發者總是在找尋能提高效能的方法。我們最常聽到的聲音是,希望 Firefox 能為 Web 提供多執行緒的支援。多執行緒處理的一大必備要件是 SharedArrayBuffer,其功用在於讓多個 Web workers 可同時共享記憶體。SharedArrayBuffer 的規格現已確定,我們也計畫於 Firefox 55 正式釋出對於SharedArrayBuffer 的支援。
另一個常見的意見是要加入 SIMD 的支援。SIMD 乃 Single Instruction, Multiple Data(單一指令、多重數據)幾字的縮寫,是讓 CPU 可平行處理數學運算指令的方法,而可大幅提升 3D 渲染和物理等數學演算密集程序的效能。
WebAssembly 社群團體現階段的目標是要在 WebAssembly 下一波的重大更新中,透過 SIMD 與多執行緒技術來實現硬體平行處理。我們在 WebAssembly 第一版上線後乘勝追擊,並且持續與夥伴協力下,這兩個新功能計將於 2018 年初達成穩定運作,並隨 Firefox 正式推出。
過去幾年間,我們在優化 Firefox 運作效能上投入很多心力,也從中獲得許多寶貴的經驗。我們已在一篇有關把原生遊戲移植到 Web 的部落格文章中分享了我們學到的經驗,也期盼各位能多多指教,幫助我們精益求精。多執行緒支援將於 2018 年正式上線,未來,我們還會繼續改善 Firefox 運作所需的記憶體用量。
再次感謝這些年來大力相助的遊戲開發者、出版商、引擎供應商及其他的瀏覽器引擎團隊。若無大家的協助,我們不可有今日的成果,由衷感謝各位!
