灯泡|魔改宜家灯泡当主机!玩转《毁灭战士》无压力
这年头,“万物皆可《毁灭战士》”!(Doom)
极客们把这款猛男必玩的游戏移植到五花八门的设备上,iPod Nano、ATM机、示波器、验孕棒(壳)……
现在连灯泡也可以了?
一位外国全栈野生钢铁侠,直接找来了这只宜家出品的20美元灯泡:
文章图片
然后Up主买了块小屏幕,经过一番改造,便成了这样:
文章图片
看完demo,网友直呼宜家电灯泡已经远超自己当年的PC 。
文章图片
【灯泡|魔改宜家灯泡当主机!玩转《毁灭战士》无压力】更夸张的是,这台机器的微处理器只有108kB内存 。
要知道,毁灭战士的最低系统要求也要8MB内存 。
甚至有网友还表示新“摩尔定律”诞生:
大约每两年就可以将Doom运行的大小减半 。
文章图片
游戏移植“最跨界”
之前“验孕棒玩《毁灭战士》”大火,国外互联网上疯传 。
文章图片
但是,全栈野生钢铁侠Nicola Wrachien看了技术方案以后表示:这个不够硬核 。
所谓“验孕棒”玩《毁灭战士》,其实只用了验孕棒的壳,原有的处理器和屏都被换掉了 。
钢铁侠Nicola表示,要做就做全套 。
而且定下了《毁灭战士》跨界“铁则”:
1、必须基于现成的设备,且不是用来玩Doom或一般游戏的 。
2、所选择的设备有一个计算能力和/或内存相当有限的微控制器,否则没有挑战性 。
3、不能添加额外的微控制器 。可以超频,但不能额外加冷却装置 。
但如今电子设备大部分的计算能力都相当高,运行Doom不在话下…老哥环顾四周,发现宜家在售的TR?DFRI Zigbee灯泡不错 。
文章图片
这款灯泡可以实现自由控制明暗、颜色,其中的微控制器,刚好是Nicola Wrachien工作的美国半导体商芯科科技的产品 。
Cortex M33处理器,96+12kB的RAM(总共108kB),1MB 的闪存,基频80MHz。
计算能力肯定够了,但毁灭战士的最低系统要求也要8MB内存 。
文章图片
所以,优化RAM成为了最关键的工作 。
为了节省RAM,必须牺牲CPU?
Nicola的最低目标,是能在108kB内存上运行《毁灭战士》第一张地图 。
随着优化推进,他发现可以将全部全部地图运行时的RAM使用量控制在108kb以内,而且包括动态和静态、堆栈和帧缓冲区 。
为此,他进行了15项大大小小的优化,这些工作,构成了这次全栈移植《毁灭战士》到灯泡控制的核心 。
首先是对Doom代码本身优化 。Doom广泛使用32位,但其实16位或8位指令就足够了 。
其次是枚举的使用非常频繁 。移植后的Doom没有使用枚举数据类型,而是将数据大小修剪为能存储的最大值 。
此外,还减少了画面材质的路径、绘图数、和视觉数 。因为最后呈现的显示器像素并不高,所以不会对视觉效果产生负面影响 。
还有一点最重要的优化:既然如今已经不采用32位指令,而且内存也小于128k,那么也没有必要再用32位指针了 。
游戏中几乎所有的指针都指向4字节对齐的结构,这意味着 16 位指针就足够了 。这个策略实际上是为RAM牺牲CPU能力,但处理器0MHz的基频完全没有压力 。
此外,其余的优化还包括:
游戏中的对象结构(mobj_t)优化到到92字节,在更复杂的关卡地图上可以省出很多 。静态对象,如关卡bonus和装饰品,专门为它们创建了一个静态mobj类型,将内存需求削减到一半(44字节) 。在某些关卡中,有超过200个这样的对象 。节省了超过30kB的内存 。
对象(mobj_t和static_mobj_t)使用了内存池,动态分配的开销减少到1字节/对象,而池内只有16个条目 。但为了实现这一点,还必须尽可能使用8位或16位数组索引,而不是指针 。
推荐阅读
- USB|大神魔改出Type-C接口iPhone X大获成功 全球第二款来了:更完美
- Windows操作系统|Win11仍不够苹果?一招魔改Win11任务栏
- 罗永浩|宜家宣布将平均提价9%:之前被罗永浩批卖场存在安全隐患
- 吉利|吉利豪越魔改而来 全新皮卡专利图曝光 网友:买一台拉摩托
- 核电站|国内研究人员表态:第一盏由被核聚变能点亮的灯泡一定要在中国
- NVIDIA|大神魔改RTX 2060 12GB:游戏低帧率大涨
- NVIDIA|大神魔改出RTX 2060 12GB显卡 结果挖矿及跑分性能没啥提升
- 小米|小米发布自研环形冷泵散热技术!魔改版小米MIX 4畅玩《原神》60帧
- 散热器|小米MIX 4魔改自研“环形冷泵”:降服火龙888 秒降温5度
- 微软|Start11软件1.0版发布:一键魔改Win11为Win10/7