国外大神 魔改灯泡主板 玩《毁灭战士》,太牛了!
大约每两年就可以将Doom运行的大小减半。
游戏移植“最跨界”
1、必须基于现成的设备,且不是用来玩Doom或一般游戏的。 2、所选择的设备有一个计算能力和/或内存相当有限的微控制器,否则没有挑战性。 3、不能添加额外的微控制器。可以超频,但不能额外加冷却装置。
为了节省RAM,必须牺牲CPU?
游戏中的对象结构(mobj_t)优化到到92字节,在更复杂的关卡地图上可以省出很多。静态对象,如关卡bonus和装饰品,专门为它们创建了一个静态mobj类型,将内存需求削减到一半(44字节)。在某些关卡中,有超过200个这样的对象。节省了超过30kB的内存。 对象(mobj_t和static_mobj_t)使用了内存池,动态分配的开销减少到1字节/对象,而池内只有16个条目。但为了实现这一点,还必须尽可能使用8位或16位数组索引,而不是指针。 游戏中的纹理,比如墙面、地面在游戏过程中会发生变化,所以它们需要长时间保存在RAM中。但实际游戏中的纹理数量是非常有限的。因此,单独创建了数组来存储可改变的纹理信息,而其他的静态纹理则从外部闪存中读取。 选用的160×128像素的显示器本来需要一个20kB的缓冲区,但Nicola选择首先计算并渲染160×96像素的3D场景,将结果发送到显示器。然后再绘制游戏中的状态栏,发送剩余的160×32像素。这样就节省了5个宝贵的KB,却不影响性能。 最后,优化中彻底删除了占用16Kb的复合纹理渲染模块。
如何攒机?
参考链接:
[1]https://www.youtube.com/watch?v=7ybybf4tJWw
[2]https://next-hack.com/index.php/2021/06/12/lets-port-doom-to-an-ikea-tradfri-lamp/
[3]https://github.com/next-hack/MG21DOOM
[4]https://hackaday.io/project/180182-hacking-an-ikea-trdfri-lamp-to-run-doom
[5]https://news.ycombinator.com/item?id=27498789
[6]https://www.reddit.com/r/programming/comments/nze7lk/doom_running_on_an_ikea_lamp/
[7]https://gamesystemrequirements.com/game/doom
评论