下载 App

微软CTO下场整活,用“Windows画图”畅玩DOOM

修改于08/139 浏览
大家已经见识过可以在各种奇怪“机器”上玩的《毁灭战士》了——孕检棒、智能冰箱、打卡机甚至是电子烟,只要有块屏幕、能算加减,它就能运行这款1993年的FPS始祖游戏。
验孕棒版《毁灭战士》
就在这几天,“万物皆可DOOM”的玩法又迎来了新的一页:在Windows自带的“画图板”软件上,让《毁灭战士》满帧流畅运行起来。
更重要的是,这次整活的不是什么民间高手,而是微软Azure的首席技术官(CTO),马克·鲁西诺维奇。
两年前,其实就有人尝试过用Windows XP的画图来移植运行《毁灭战士》。
当时那位技术大牛的版本,使用了一种类似“自动化辅助画图”的方法。当玩家打开游戏程序时,脚本会在后台运行游戏,逐个区域分析像素,最后再调用油漆桶工具在Windows XP中填充出对应的画面。
由于Windows XP承受不住这种频繁的点击和计算,导致当时这款《毁灭战士》基本无法正常游玩,每“画”出一帧画面,就要等待足足1到3分钟,顶多只能算是一次概念性整活。
两年前版本的“游戏画面”
这次微软CTO马克带来的版本,则达到了原版《毁灭战士》的35 FPS上限。
他的做法,也不是在Windows画图里原生运行游戏,更像是把画图当成了一块逐像素刷新的显示器。
就像他在这个项目的介绍里说的一样,“画图”渲染了游戏,但它不计算游戏。所有计算的工作,都交给了后台一个负责所有物理逻辑、怪物AI和画面生成的引擎,但这个引擎不向显示器输出任何画面。
等到后台算好了每一帧画面,它就会把计算好的图像以像素为单位复制到剪贴板中,然后粘贴到Windows画图里。当程序以极高频次把生成图像粘贴进Windows画图时,肉眼就能看到一个正在实时刷新的游戏画面。
两年前版本无法比拟的流畅度
原理听起来很简单,但真做起来还是遇到了不少难题。
马克遇到的第一个瓶颈,是后台引擎算得太快。如果Windows画图还没来得及把上一帧画面粘贴好,下一帧就把剪贴板给覆盖了,画面会直接崩掉。于是,马克就在系统底层建立了一套“传话机制”,画图必须老老实实打个报告说“我粘贴好了”,后台引擎才会把下一帧发过去。
至于操作方面,由于这版《毁灭战士》调用了剪贴板来“渲染”画面,会让键盘信号始终处于画图软件的快捷键范围内,无法传达给后面的程序。于是,马克又给引擎加入了一个底层拦截键盘信号的功能。
每当玩家按下WASD或鼠标控制角色时,按键信号就会在传达Windows画图之前,抢先一步被拦截并直接“偷渡”到后台的游戏引擎,从而实现在画图软件中直接操控游戏。
这个项目开发完成之后,被马克取名为DoomPaint,并上传到了GitHub上。由于Windows画图每次接收到新画面,在系统底层都被视作一次“对文档的编辑”,这就导致了一系列奇奇怪怪的“先进功能”:
比如玩家如果不小心被怪物打死了,不需要找存档,直接狂按Ctrl + Z撤销,画面就会像倒带一样,一帧一帧地退回到你几秒钟前还没死的健康状态;想保存高光时刻,不需要任何第三方截图软件,直接在Windows画图左上角点击“文件”、“保存”,就能把当前战况生成一张无压缩的图片。
最为方便的截屏方式
由于马克”微软Azure CTO”的这重身份,很多人在了解这次整活前,都以为这是一次对Azure的宣传营销,尤其是要展现CTO对于AI的理解和运用。
但事实上,这版《毁灭战士》用上的技巧和代码多是临场手搓,和他负责的虚拟机、AI算力等云服务基本没什么关系——看起来确实就是马克的个人爱好。
就和很多致力于“万物DOOM化”的极客一样,这位高管这次只是一个回归了程序员的身份,参与到了这样一场老派极客的浪漫活动中。在充满规矩的代码世界里,技术最原始的魅力,或许永远来自于那句“因为这样很有趣”。
01:10
地图随机拼接,国家随机诞生❗采取远交近攻的策略,最终一统大陆截图
地图随机拼接,国家随机诞生❗采取远交近攻的策略,最终一统大陆
#游戏冒险家大集结 #发现好游戏 #游戏推荐 #游戏安利 #新游安利
8 赞
3 回复
01:03
不拜山头、偷学百家、自创武学、钓鱼挖矿!真武侠来了!截图
不拜山头、偷学百家、自创武学、钓鱼挖矿!真武侠来了!
#休闲游戏 #武侠游戏 #武侠 #角色扮演 #江湖夜雨十年灯 #发现好游戏
10 赞
3 回复
01:27
🔥开局从荒野岔路开始你的宿命,放置养成战棋❗️截图
🔥开局从荒野岔路开始你的宿命,放置养成战棋❗️
#发现好游戏 #浅评一下 #游戏安利 #游戏推荐 #游戏日常 #战棋游戏
精华
5 赞
1 回复
01:09
第一人称手搓汉堡❗经营一家属于你的汉堡小店,用美味征服顾客❗截图
第一人称手搓汉堡❗经营一家属于你的汉堡小店,用美味征服顾客❗
#游戏冒险家大集结 #伯吉的温馨厨房 #游戏推荐 #模拟经营 #画风可爱 #steam移植 #免费游戏 #第一人称视角
14 赞
1 回复
01:14
从寒门到门阀,一年一回合,纵览数代人生截图
从寒门到门阀,一年一回合,纵览数代人生
#游戏安利 #游戏推荐 #游戏讨论 #策略 #模拟经营 #人生模拟 #我本布衣世家录 #文字游戏
13 赞
1 回复
01:07
种田新游戏‼️开局一片森林➕建造家园➕模拟经营,钓鱼砍树收集截图
种田新游戏‼️开局一片森林➕建造家园➕模拟经营,钓鱼砍树收集
#宝藏新游研究所 #模拟 #种田游戏 #建造 #发达家园
5 赞
2 回复
01:03
500w根干草里找一根针!真是的大海捞针!截图
500w根干草里找一根针!真是的大海捞针!
#游戏冒险家大集结 #游戏安利 #游戏推荐
7 赞
1 回复
01:28
👍吞噬成长,深海努力打破基因锁‼️先天能力傍身,吞噬进化论‼️‼️截图
👍吞噬成长,深海努力打破基因锁‼️先天能力傍身,吞噬进化论‼️‼️
#游戏冒险家大集结
4 赞
7 回复
01:17
挖空树会变树苗?人为造雨又能进化成树,继续撸?截图
挖空树会变树苗?人为造雨又能进化成树,继续撸?
这...难道不是卡牌合成版异星工厂? 哎哟,别说我碰瓷, 这又是撸树,又是放电,又是自动化的, 我只能想到异星工厂! #游戏冒险家大集结 #休闲游戏 #游戏推荐 #游戏安利
2 赞
01:05
全民进入不烧心世代!这包子吃了真不烧心!截图
全民进入不烧心世代!这包子吃了真不烧心!
#游戏冒险家大集结 #模拟经营 #模拟经营游戏 #好玩的模拟经营游戏 #这包子不烧心
3 赞
2 回复