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

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

工具與腳本
我們使用了一個(gè)Python腳本來轉(zhuǎn)換GRP文件,使其滿足以下要求:
所有MIDI文件轉(zhuǎn)換為Type 0格式
VOC文件轉(zhuǎn)換為更易處理的 WAV 格式
GRP文件必須存儲(chǔ)在SD卡中。通過在開機(jī)時(shí)按下特定按鍵組合,文件會(huì)被復(fù)制到外部閃存。Atomic Edition需要2×32MB閃存芯片,而原始版本只需2×16MB芯片。
性能亮點(diǎn)
超頻情況下:30–50 fps
未超頻情況下:18–30 fps
由于引擎更簡單,DN3D 比Quake更快
結(jié)論
此移植展示了芯科科技MG24無線SoC的強(qiáng)大性能與靈活性:
在受限硬件上運(yùn)行完整功能的經(jīng)典復(fù)古第一人稱射擊游戲
支持多人模式、音樂、存檔/讀取以及控制臺(tái)功能
高效的內(nèi)存管理與性能調(diào)優(yōu)
我們希望這能激發(fā)開發(fā)者探索嵌入式平臺(tái)的更多可能性——無論是游戲、可穿戴設(shè)備,還是下一代物聯(lián)網(wǎng)。
-
開發(fā)板
+關(guān)注
關(guān)注
25文章
6111瀏覽量
112837 -
芯科科技
+關(guān)注
關(guān)注
1文章
469瀏覽量
17071 -
Matter
+關(guān)注
關(guān)注
1文章
318瀏覽量
7026
原文標(biāo)題:上手開發(fā)-將經(jīng)典射擊游戲移植到MG24 Matter開發(fā)板
文章出處:【微信號(hào):SiliconLabs,微信公眾號(hào):Silicon Labs】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
基于芯科科技信道探測開發(fā)板的PC桌面鎖定示例
芯科科技2025年Works With開發(fā)者大會(huì)深圳站Matter技術(shù)專場前瞻
如何選擇合適的芯科科技Wi-Fi開發(fā)板
使用MG24開發(fā)板測試天線分集
芯科科技亮相2025 Matter開放日和開發(fā)者大會(huì)
下一代物聯(lián)網(wǎng):芯科科技和Arduino借助邊緣AI和ML簡化Matter設(shè)計(jì)和應(yīng)用
芯科科技MG26 SoC支持先進(jìn)的物聯(lián)網(wǎng)應(yīng)用和Matter
倒計(jì)時(shí)8天! 免費(fèi)開發(fā)板申領(lǐng)即將截止|2025 Matter 應(yīng)用開發(fā)比賽

將經(jīng)典射擊游戲移植到芯科科技MG24 Matter開發(fā)板
評論