本篇文章更新時間:2026/01/26
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~
如果本站內容對你有幫助,歡迎使用 BFX Pay 加密貨幣 或 新台幣 贊助支持。
內容目錄
DOOMBUDS:在耳朵裡跑 DOOM 的狂想實驗
把 1993 的經典搬進耳機,究竟是惡搞還是硬核工程?
編輯前言:這篇筆記源自閱讀 DOOMBUDS 官方介紹,內容看似惡搞,但越看越發現這是極限工程的精彩示範。把 DOOM 跑在耳機上,到底需要多少黑魔法?
核心觀點 (Key Takeaways)
- DOOMBUDS 的核心不是惡趣味,而是一場針對硬體限制的極限挑戰。
- 整個專案分成四大部分:耳機上的 DOOM、序列伺服器、網頁伺服器、前端頁面。
- 真正的難點不在 DOOM 本體,而是如何把畫面以可接受的速度傳出去。
深入解析
專案作者把 DOOM 移植到 Pinebuds Pro —— 一款擁有開源韌體的耳機。光是這句話就足以讓任何開發者停下滑鼠,因為「耳機」本來就不是設計來跑遊戲的,更別提是 DOOM。
原文提到:「Bluetooth is pretty slow… UART is easily the better option。」這一句話點出了整個專案的基調:用最少的資源,硬幹出結果。
以下我整理文章中最關鍵的工程挑戰:
-
串口傳輸速率:如何擠出 FPS?
耳機沒有螢幕,畫面只能靠 UART 傳出去,但 DOOM 的 framebuffer 是 96KB。即使在 2.4Mbps 帶寬下,不壓縮只能跑 3fps。於是作者選擇用 MJPEG —— 每一幀都獨立壓縮成 JPEG,避開複雜的影片編碼。
最後實測約能跑到 18fps,瓶頸在於 Cortex-M4F 的 JPEG 編碼能力。 -
CPU:從 100MHz 超頻到 300MHz
作者直接把 Pinebuds 的 CPU 拉滿並關掉低功耗模式。DOOM 本體不是問題,但 JPEG 編碼讓它喘不過氣,是主要效能瓶頸。 -
RAM:從 768KB 擠到 DOOM 能用的等級
DOOM 原本需要 4MB RAM,耳機只給不到 1MB。作者透過移除快取、預先生成 lookup tables、盡量把資料塞到 flash 等方式,硬生生把需求壓到耳機撐得住的程度。 -
FLASH:塞不下 DOOM WAD 怎麼辦?
Shareware WAD 原本 4.2MB,而耳機只能放 4MB。好在 Doom 社群高手 fragglet 早已做出縮减版 Squashware,僅 1.7MB。這讓整個專案變得可能。
筆者心得與啟發
讀完 DOOMBUDS 的技術說明,我最大的感想是:這個專案雖然看起來像玩笑,但背後每一步都是真功夫。它把「工程的浪漫」演繹得淋漓盡致:不是因為有用才做,而是因為做得到而去做。
幾點啟發:
- 這個專案提醒我,限制不是束縛,反而造就創意。當資源少到極限時,反而更能凸顯工程師的品味與手感。
- Pinebuds Pro 之所以特別,是因為開源韌體。開放讓更多人能「玩硬體」,創造出本來根本不會存在的專案。
- DOOMBUDS 也顯示了現代前端、串流系統、嵌入式開發之間的跨領域整合能力。能把這些拼在一起,是非常高難度的技術表演。
總結來說,DOOMBUDS 不只是「把 DOOM 跑在耳機上」這麼簡單,而是一個提醒:好玩的、沒人做過的事,有時候就是最值得嘗試的。
