一台售价126万5000日元的中画幅相机,最近被拿来干了一件跟拍照毫无关系的事——跑《DOOM》。而且不是摆拍,是真能玩:手指在屏幕上滑,视角跟着转;手指挪到快门键上按下去,屏幕里的枪就响了。
这事是软件开发者Radium Wang在10月7日报告的。他把成果发到了Reddit的Hasselblad相机社区「r/hasselblad」,一段15秒的视频里,相机背面的屏幕显示着《DOOM》的游戏画面,角色在关卡里走动、转向、开枪,操作逻辑跟拿手柄差不多,只不过手柄换成了一台相机。
先搞清楚这台相机是什么来头
被拿来跑游戏的设备是瑞典相机厂商Hasselblad在2022年发售的X2D 100C。这是一台面向专业摄影师的中画幅无反相机,配置包括约1亿像素的CMOS传感器、1TB内置SSD、3.6英寸翻转式触摸屏。美国售价8199美元,日本官方商店标价126万5000日元。
换句话说,这是一台为出片而生的机器,不是为打游戏而生的。所以当它屏幕上出现像素化的走廊和敌人时,反差感就出来了。
快门键怎么变成扳机的
Wang在GitHub上公开的资料里,把操作映射讲得挺细:
- 快门键完全按下,开枪;按住不放,就按武器的连射速度持续开火
- 快门键半按(也就是平时拍照对焦的那个动作),不开枪
- 背面触摸屏上布置了前进、后退、左右转身,以及射击、冲刺、开门的按钮
- 左右滑动屏幕也能转视角,可以一根手指移动、另一根手指环顾四周
- 相机内置扬声器会播放音效,枪声能直接响出来
- 目前还不支持播放BGM
半按不开枪这个细节挺有意思——拍照时的对焦逻辑被保留了下来,只有真正“按下快门”的那一下才等于扣扳机。Wang的报告里还提到,实机测试中快门输入被识别后,游戏内弹药数从50发掉到了48发,说明这套映射是真的在跑,不是演示动画。
一台相机是怎么跑起游戏的
原理层面,Wang用的是开源项目doomgeneric。这个项目的思路是:把画面渲染和输入处理按目标设备重写一遍,就能让《DOOM》在各种奇怪的硬件上跑起来。
X2D 100C内部本身就有Android相关的机制和Qt等技术,这次移植就是借了这套底子。具体流程是:独立的游戏引擎生成320×200像素的画面,写进相机的内存,再让相机原本的显示系统把这幅图读出来,投到背面屏幕上。触摸操作则反过来,通过相机自身的输入功能传给游戏引擎。
快门键射击的实现方式,是临时改写相机原本的输入处理,把平时用于拍照的按键输入分流给游戏。这也是整个移植里最“不务正业”的一环。
另外要说明的是,这次实验用的不是《DOOM》的商业游戏数据,而是兼容游戏《Freedoom》的数据。
它还不是一台能常驻打游戏的相机
得泼点冷水。这个移植版本质上是实验性质的,并不是往相机里装了个游戏就能随时开玩。公开的实验程序设了30到180秒的时限,时间一到就退回相机原本的界面。
而且目前确认能跑的,只有初代X2D 100C的特定固件环境,长时间稳定运行没有验证过,公开的源代码本身也没有在实机上重新验证。所以现在看到的是一个“能跑起来”的证明,不是一个成熟的产品。
为什么总有人往奇怪的东西上塞DOOM
《DOOM》是id Software为MS-DOS开发、1993年发售的FPS,算是把FPS这个品类推到大众面前的代表作。它的游戏引擎源代码以GPL-2.0许可证公开,允许在特定条件下使用、修改和再分发,于是各种移植尝试就没停过。
此前已经有人让它在Windows自带的画图软件「Microsoft Paint」里跑起来,还有人用“一个巨大的字符串”实现了《DOOM》。这次轮到一台126万日元的相机。
顺带一提,用数码相机跑《DOOM》也不是头一回。8月时,程序员Bas Lichtjaar就为2010年发售的数码单反Canon EOS 550D做过移植,借助相机的功能扩展软件「Magic Lantern」,支持方向键移动、射击和音频播放。区别在于,那版移植为了避开与拍摄处理、自动对焦的冲突,没有把快门键用于游戏操作;而这次X2D 100C版偏偏反着来,专门把快门键分配给了射击。
Wang本人此前就在做Hasselblad相机的固件解析,报告过启用连续自动对焦「AF-C」和瞳检测功能之类的成果。他认为相机内部的软件环境还有不少空间,所以把研究开源出来,招呼其他开发者一起玩。这次的《DOOM》移植,算是这条研究线的一个分支。
Reddit上的反应比移植本身还热闹
视频发出来后很快有了讨论度,除了感叹,评论区还冒出了各种“点单”:有人说下一个该跑《Crysis》,也有人提议做成“击倒敌人的瞬间自动拍一张照片”。
一台为高画质照片设计的相机,按一次快门飞出去的不是照片而是子弹——作为移植目标够离谱,作为高端相机的用法也够离谱。至于它到底算不算“物尽其用”,可能得看你是摄影师还是玩家。
热门跟贴