Silicon Labs(芯科科技)熱衷于突破嵌入式系統的極限和創新。在先前成功將一款經典游戲-雷神之錘(Quake)移植到基于EFR32MG24無線SoC的Arduino Nano Matter開發板之后,我們迎來了新的挑戰:將另一款經典第一人稱射擊游戲-毀滅公爵3D(Duke Nukem 3D)的完整體驗帶到我們的超低功耗平臺MG24的開發板上,以實現包括游戲音樂、多人連線模式等完整的游戲玩法。
為什么選擇毀滅公爵3D
毀滅公爵3D于1996年在Quake之前發布,是互動玩法的里程碑。雖然在圖形上不如Quake先進,但它提供了:
可移動的墻壁和區域
與物體交互以及可破壞的環境
高級功能:鏡子、安全攝像頭、腳本控制和混響效果
這些特性使它成為一個完美的參考設計,用來展示嵌入式性能和游戲體驗的完整性。
硬件限制與游戲特性
我們希望代碼能運行在去年為Quake移植開發的同一款開源硬件上,也就是“The Gamepad”,它基于Arduino Nano Matter板,搭載基于芯科科技MG24 SoC的MGM240S無線模塊。

The Gamepad硬件規格:
無外部RAM(僅使用MGM240S內部的25kB)
外部閃存用于數據存儲(最高 64 MB)
320 × 240 像素RGB IPS LCD,帶SD卡讀卡器
立體聲音效
模擬搖桿和16個按鍵
代碼庫
我們選擇了Chocolate Duke Nukem 3D,它是Fabien Sanglard的xDuke移植版本的精簡和注釋版,并支持SDL。SDL支持讓我們可以在Windows上開發和優化,然后再移植到真實硬件。
我們針對內存和速度進行了大量優化,以適應256 kB RAM的限制。
內存優化
原始毀滅公爵3D需要8 MB RAM,遠超我們的硬件條件,因此必須進行深入優化。主要措施包括:
根據性能分析和代碼檢查,優化結構體字段大小
將關卡常量數據存儲到閃存,減少RAM 占用
創建分配器,僅存儲修改過的對象,未修改的對象直接從閃存讀取
將部分靜態全局數組移到棧上
重用大型全局緩沖區(例如在關卡加載時重用幀緩沖)
優化插值算法
游戲動畫渲染時,從外部閃存分塊復制到RAM,再進行渲染
腳本文件預編譯并作為常量數組存儲在代碼中
攝像機精靈(顯示安全攝像頭畫面)臨時渲染到幀緩沖的狀態欄區域,因此每次渲染后必須重新繪制狀態欄
優化聲音引擎,減少冗余RAM 使用
將xDuke 的高級混響效果替換為原版Duke Nukem 3D 的簡單混響
速度優化
為了提升性能,我們采取了以下策略:
重寫部分繪圖例程。原始代碼是高度優化的x86 匯編,后來在xDuke 中通過自動工具轉換為C,導致代碼難以理解且性能下降。
由于墻體和精靈是逐列繪制的,我們利用DMA在當前列繪制時從外部閃存加載下一列,實現加載與渲染并行,減少等待時間。
基于802.15.4無線連接的多人模式
我們采用芯科科技的RAIL庫構建了一個輕量級協議:
異步節點發現:在初始階段,所有節點選擇一個隨機地址,并通過“問候”數據包進行廣播。一旦其他節點接收到這些數據包,網絡就形成了。
同步的類令牌環通信:當所有玩家都確認準備好比賽后,協議切換到同步模式。在此模式下,地址最小的節點被選為主節點。主節點每隔25毫秒啟動通信,第二個節點(地址次小)廣播其數據,然后第三個節點發送,最后第四個節點廣播自己的數據。協議支持自動重發丟失的數據包,以確保可靠性。

工具與腳本
我們使用了一個Python腳本來轉換GRP文件,使其滿足以下要求:
所有MIDI文件轉換為Type 0格式
VOC文件轉換為更易處理的 WAV 格式
GRP文件必須存儲在SD卡中。通過在開機時按下特定按鍵組合,文件會被復制到外部閃存。Atomic Edition需要2×32MB閃存芯片,而原始版本只需2×16MB芯片。
性能亮點
超頻情況下:30–50 fps
未超頻情況下:18–30 fps
由于引擎更簡單,DN3D 比Quake更快
結論
此移植展示了芯科科技MG24無線SoC的強大性能與靈活性:
在受限硬件上運行完整功能的經典復古第一人稱射擊游戲
支持多人模式、音樂、存檔/讀取以及控制臺功能
高效的內存管理與性能調優
我們希望這能激發開發者探索嵌入式平臺的更多可能性——無論是游戲、可穿戴設備,還是下一代物聯網。
-
開發板
+關注
關注
26文章
6340瀏覽量
119390 -
芯科科技
+關注
關注
1文章
508瀏覽量
17840 -
Matter
+關注
關注
1文章
337瀏覽量
7178
原文標題:上手開發-將經典射擊游戲移植到MG24 Matter開發板
文章出處:【微信號:SiliconLabs,微信公眾號:Silicon Labs】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
芯科科技攜手Waites公司打造基于傳感器的狀態監測解決方案
RL78/G24 快速原型開發板使用指南
采用XIAO MG24開發板的手套動作控制電動滑板設計
Hubble Network采用芯科科技MG24無線SoC構建全球低功耗藍牙網絡
請問如何將蜂鳥E203移植到Xilinx NEXYS A7 FPGA 開發板上?
芯科科技2025年Works With開發者大會深圳站Matter技術專場前瞻
如何移植rt-thread到野火imx6ull開發板上?
如何選擇合適的芯科科技Wi-Fi開發板
使用MG24開發板測試天線分集
芯科科技亮相2025 Matter開放日和開發者大會
下一代物聯網:芯科科技和Arduino借助邊緣AI和ML簡化Matter設計和應用
將經典射擊游戲移植到芯科科技MG24 Matter開發板
評論