Doom hits KiCad as PCB traces become demons and doors
有一种纯粹的快乐来自于尝试某件事仅仅为了看它是否可行。眼前就有一个例子:用PCB设计软件来渲染《Doom》,或者通过示波器这个媒介漫步于地狱的边缘。
主角是Mike Ayles,他琢磨是否有可能用KiCad以矢量形式渲染《Doom》。答案?当然是肯定的。《Doom》几乎能在任何设备上运行。
然而,KiCad本身并未运行游戏引擎。设计师将KiCad用作一个渲染器,而一个独立的C语言进程则负责运行游戏引擎。Ayles写道:“如果我们想让Doom真正运行在KiCad内部,我们应该用KiCad的Python脚本引擎来重写它。但那个念头已经飘走了,我不打算重写它。”
KiCad渲染Doom的一帧画面(图片:Mike Ayles)
KiCad是处理PCB布局设计的。因此,游戏的每一帧都被渲染成铜走线,游戏对象则由PCB元件代替。墙壁是PCB走线,Ayles说:“恶魔是令人生畏的64引脚封装芯片。弹药夹则是朴素的3引脚元件。” “每一帧都产生了一个理论上可以拿去制造的、合法的PCB设计。”
我们《The Register》非常喜欢这种极其荒谬且最终看来毫无实际用处的技术尝试,尤其是这个项目在经过相应调整后,能在M1 MacBook Pro上达到25 fps。我们询问Ayles这个项目花了多长时间。他回答说:“我花了两天时间把它拼凑出来。周日有了这个想法,周一周二只是利用业余时间把它实现了。”
他补充道:“如果我的雇主正在阅读本文,这是一个专注于对我们工具进行基准测试的研究项目。” 我们很乐意将此澄清包含在内。
至于编码部分,Ayles告诉我们:“大部分代码是由Claude编写的。”然而,这位助手并不像其营销宣传的那么有用。他说:“它给出了一些绝对愚蠢的建议,我不得不比预期更多地介入,主要是架构方面而非具体实现。”
在拥有了一个矢量渲染器之后,Ayles决定尝试点别的:在示波器上渲染Doom的画面。他告诉我们:“我想,既然我有了一个矢量引擎,做这个应该不会太难。” “我确实有一些高端DAC(数模转换器),因为我以前是电子测试开发工程师。然而,我们这里的瓶颈在于使用一台数字示波器及其模拟的、效果不稳定的磷光余辉显示,所以我觉得直接用笔记本电脑的耳机接口会更有趣。”
这就诞生了ScopeDoom:将MacBook的耳机接口变成一个矢量显示器。它将显示一个可识别的《Doom》线框渲染图。“它并不美观,”Ayles写道,“但你可以走过E1M1关卡,认出起始房间、锯齿形走廊、第一把霰弹枪。几何形状是正确的,只是很粗糙。”
在示波器上运行的Doom(图片:Mike Ayles)
Ayles谦虚地将ScopeDoom称为“一个非常临时的东西”。看看他在圣诞节期间会搞出什么新花样,这将会很有趣。