基於 Rust 的 Game Boy 模擬器因網頁版可玩性受到關注

BigGo Editorial Team
基於 Rust 的 Game Boy 模擬器因網頁版可玩性受到關注

復古遊戲社群最近對一款名為 retroboy 的 Game Boy 模擬器議論紛紛,該模擬器使用 Rust 編寫,能夠直接在網頁瀏覽器中執行。這個專案展示了現代程式語言和 WebAssembly 如何使開發者能夠將經典遊戲體驗帶到網路上,並保持令人印象深刻的準確性。

基於網頁的模擬挑戰與進展

該模擬器因其全面的功能集而受到廣泛關注,包括精確的 CPU 模擬、音訊支援以及與各種記憶體庫控制器(MBCs)的相容性。然而,社群討論揭示了音訊模擬仍然是基於瀏覽器的模擬器最具挑戰性的方面之一。許多使用者報告聽到原始遊戲中不應該存在的咔嗒聲和其他音訊瑕疵。這似乎是 WebAssembly 和瀏覽器中音訊的一個常見問題。

「今天幾乎所有 WASM+音訊在瀏覽器中都會出現這種情況,除非你非常非常小心你正在做什麼,並利用多執行緒。我認為這個問題主要是圍繞單執行緒環境,它必須在播放音訊和其他事情之間切換。」

開發者在評論中解釋說,WebAudio 效能限制通常需要更大的音訊緩衝區(至少100毫秒),而原生應用程式只需要20毫秒,任何幀率下降或效能問題都可能導致音訊故障。一些人建議使用單獨的執行緒進行音訊處理作為潛在的解決方案,儘管這會增加實現的複雜性。

retroboy 模擬器的主要特點:

  • 週期精確的 CPU,透過所有 JSON CPU 測試
  • 精確的音訊模擬(受瀏覽器限制)
  • 使用基於掃描線的渲染器進行圖形模擬
  • 支援 MBC1、MBC3、MBC5 和 HuC1
  • 支援 MBC3 卡帶的 RTC 功能
  • 透過瀏覽器本地儲存實現卡帶 RAM 的持久化
  • 支援 GameShark 或 GameGenie 作弊碼
  • 網頁前端支援全屏模式、暫停/恢復和自定義控制

不斷增長的 Rust 模擬器生態系統

該專案加入了不斷增長的基於 Rust 的模擬器生態系統,幾位評論者分享了他們自己類似專案的連結。由於其效能特點和記憶體安全特性,Rust 程式語言似乎在模擬器專案中越來越受歡迎。當編譯為 WebAssembly 時,這些模擬器可以在瀏覽器中高效執行,無需外掛或下載。

程式碼庫的清晰組織受到了幾位希望從中學習的開發者的特別讚揚。一些人提到,由於對框架和工具的不確定性,他們曾猶豫是否開始自己的模擬器專案,但發現這個專案使用 wasm-bindgen 和 HTML Canvas 的方法簡單明瞭,很有吸引力。

最推薦的 Game Boy 遊戲(來自評論):

  • Pokémon Red/Blue 和 Gold/Silver
  • The Legend of Zelda: Link's Awakening
  • Tetris
  • Super Mario Land 1 & 2
  • Kirby's Dream Land
  • Wario Land II & III
  • Donkey Kong (1994)

復古遊戲的持久魅力

除了技術討論外,評論還揭示了 Game Boy 遊戲和硬體的持久受歡迎程度。使用者熱情地分享了他們最喜歡的遊戲,其中寶可夢、塞爾達傳說:夢見島和俄羅斯方塊經常被提及為必玩體驗。對話還強調了蓬勃發展的自制遊戲場景,為經典硬體創造新遊戲,包括像 LSDj 這樣的音樂排序器和現代俄羅斯方塊實現。

許多評論者指出,他們最近從 Anbernic 和 Miyoo 等製造商那裡購買了復古遊戲掌機,價格從約50英鎊(約65美元)起,不僅能模擬 Game Boy,還能模擬包括 PlayStation 1 在內的系統。這表明除了純軟體模擬之外,行動式復古遊戲體驗市場強勁。

專案建立者對他們的小型業餘專案受到的關注感到驚訝,並提到他們發現 wasm-bindgen 相對容易使用。這種可訪問性表明現代網路技術正在降低複雜模擬專案的入門門檻,允許更多開發者為儲存遊戲歷史做出貢獻,同時透過無處不在的網路瀏覽器平臺使其易於訪問。

參考:retroboy