在绝大多数玩家的认知里,Windows画图和《毁灭战士》之间唯一的交集,大概就是小时候用喷枪工具画过几把歪歪扭扭的像素霰弹枪。但微软Azure首席技术官Mark Russinovich刚刚把这个前提击得粉碎——他放出了一个名叫DoomPaint的项目,让id Software那款1993年的经典FPS,完整地在微软画图程序里跑了起来。

消息一出,评论区几乎立刻裂成两半。一派觉得这纯属整活:所谓的“运行”无非是把每一帧画面提前渲染好,然后像幻灯片一样贴进画图窗口,根本没用到画图的计算能力,换个看图软件也能干同样的事。另一派却认为,正是因为彻底放弃了让画图“计算”的念头,反而戳中了一种极端聪明的幽默感——这可能是“万物运行Doom”传统里,最理直气壮的一次摆烂式胜利。

打开网易新闻 查看精彩图片

这两边的说法其实都没有偏离事实,但DoomPaint真正有意思的地方,恰恰在于它把“不去计算”做成了核心卖点。根据项目在GitHub上的说明,DoomPaint调用的并不是某个嵌入画图的仿制引擎,而是原汁原味的共享版《毁灭战士》。游戏的每一帧都被如实渲染,然后复制到Windows剪贴板,再以“正常文档编辑”的身份粘贴进画图。说得直接一点,画图全程只负责显示,就像一台被强行接上HDMI线的老显示器。

这种设计很偷懒,但也很诚实,而且意外地催生了一些在原版游戏里根本不可能出现的玩法。由于每一帧都是以独立操作的形式粘贴进去,画图的撤销历史里会忠实地留下每一个画面。于是按下Ctrl+Z,就等于硬生生把时间往回拨:中枪没关系,撤销;被恶魔撕碎也无所谓,再往回倒几步就行。更妙的是,既然画图认为每一帧都只是一张普通图片,那你随时可以点击保存,把当前关卡的任何瞬间存成一张规规矩矩的PNG截图——用一种近乎作弊的方式,完成游戏截屏。

在性能表现上,这套看似简陋的机制其实也有清晰的底线。只要把游戏分辨率保持在原版的320×200,DoomPaint能够跑满《毁灭战士》原生的35Hz刷新率。Russinovich明确解释过,游戏引擎本身会以正常速度运转,不受画图性能的影响。换句话说,即使画图的画面更新偶尔掉链子,游戏内部的逻辑判定依然照常进行,不会出现子弹变慢或者敌人卡顿的滑稽场面。为了让每次粘贴都稳定通过,项目里还内置了好几种技术上的绕过方案,专门防止剪贴板出错或者打断游戏节奏。

Russinovich本人对这个项目有过一句相当经典的定性:“画图在渲染游戏,但它并不计算。画图什么都不计算。画图从来就没计算过任何东西。这就是笑话本身。”这句话几乎是整件事最准确的注脚。它没有试图掩饰“画图没干活”的真相,反而把这种明知故犯的笨拙,转化成了只有程序员和玩家才能秒懂的幽默。

把《毁灭战士》当作整活试验品,在它发售后的这几十年里几乎成了一种持续扩张的亚文化。除了DoomPaint这种用画图当显示器的奇葩思路,不久前人们才刚见识过ChatGPT以文本生成的方式跑起这款游戏,更有科学家在微芯片上训练人类脑细胞,让它们学会控制Doomguy完成最初关卡的冒险。在这些案例面前,“运行”的定义早就不再局限于哪块芯片承担了多少运算量,而变成了一种关于极限移植的集体玩笑。

回归到DoomPaint本身,正反两方的争论或许永远不会有标准答案。觉得它不过是一场技术偷懒的人,有足够扎实的逻辑支撑;而把它看作极客式幽默巅峰的人,也能从Ctrl+Z回档和保存PNG这种意外功能里,找到一种刻意为之的机灵。唯一可以确定的是,当一个人打开画图软件开始玩《毁灭战士》的时候,旁人问“这算哪门子运行”的瞬间,这个项目的任务就已经完成了。