术→技巧, 研发

逆向思维:红白机射击游戏的奥秘

钱魏Way · · 825 次浏览

是否还有人记得小霸王游戏机中的打鸭子游戏。小时候在同学家好像玩过1~2次,由于不会玩也没什么深刻的印象。

今天看了一篇介绍其原理的文章,感觉开发人员真是脑洞大开。

想当年的小霸王的红白机大部分是连接黑白电视机作为屏幕的,想要在这样的设备上实现射击类的游戏,你会这么做?

项目背景:

  • 电视作为信号输出设备,其天线端可以接收到模拟信号。
  • 电视作为信号输出设备,屏幕无法接收到任何外部信号。

所以,打鸭子游戏判断鸭子是否被打中的并不是由屏幕感知的,而是由手枪感知的。那么手枪如何感知屏幕上哪一只是鸭子呢?

  • 方案一:手枪上安装一个摄像头,通过摄像头+图像识别确定是否命中目标?(图像识别等技术在当年还没发展起来,摄像头在当年也异常的昂贵。)
  • 方案二:通过手枪控制显示器上看不见的光标,判断程序是否命中(类似鼠标控制原理)?(当年的有的鼠标也还是最原始的滚轮鼠标,通过体感方式,使用陀螺仪控制的那时候还没有被发明出来)

所以以上两种方案都是不可行的。那么当年的游戏开发人员又是如何实现的呢?

我们先来看看游戏配套的那把枪。

拆开光线枪内部,结构其实非常简单。

这种设计的目的就是当人按下扳机开关时通过放大电路放大的光敏二极管信号来判断有没有光线射入光枪,如果细心的朋友可能会发现,在玩打鸭子时,如果按下扳机屏幕会闪以下,这就是这款光枪最大的奥秘所在,里面包含了设计者的智慧:与大多数人心中所想的,光枪为发射器,电视屏幕为接收器不同的是,大家家中的电视才是真正发射信号的枪,而光枪则是接收信号的靶子。

每次扣下扳机,电视都会变黑然后在目标鸭子所在的地方显示白色方块,光枪显示到白色光的时候说明击中鸭子,而电视先闪现一个纯黑色画面则是游戏的一个巧妙的“反作弊”机制,早期的FC光枪由于没有这个机制(包括部分国内小霸王兼容机所附带的光枪),玩家只要将光枪对准家里亮着的台灯进行射击,光枪同样接收到白色信号,系统将判断为击中。而增加了黑色信号的检测之后就没有这种问题。

具体逻辑是这样的:

在玩家扣动扳机的时候,游戏机先控制电视显示一帧全黑的画面,然后再显示一帧鸭子的位置替换为白色方块的画面,这两帧画面的显示间隔非常短,只有百分之二秒左右。

如图2所示,当玩家按下扳机,游戏画面会变黑。这个画面的切换比较快,大概在30ms左右,所以肉眼不容易看出来。这屏幕变黑的这段时间中,游戏可以检测光枪返回的光枪,看是否为弱。之后,如图3所示,第一只鸭子的位置会用白色块显示,从图2到图3在30ms左右。如果这个时候游戏发现检测到的光强很强,那就说明玩家击中这只鸭子了。大概过50ms左右,画面会切换到图4,白色块显示在第二只鸭子的地方,如果游戏此时发现光强为强,那么就说明玩家击中第二只鸭子了。再过50ms左右,游戏会返回到正常画面。

以上就是光枪的工作过程了。因为这个在当时非常巧妙的设计,《打鸭子》这款游戏的销量达到了惊人的3000万套(其中北美市场销量占95%),仅次于《超级马力欧兄弟》,是FC上第二畅销的游戏,也给无数人留下了美好的童年回忆。

每当玩家扣动扳机时,电视屏幕都会有一瞬间完全变黑,之后鸭子所在的位置将会闪出一个白色方块,此时FC光枪如果接收到一个黑色加白色的信号,便会判定为击中鸭子。

 随着科技的进步,目前类似的射击类游戏,比如Switch主要使用的是陀螺仪的方式控制内部的光标实现的。碍于陀螺仪的准确性及需要校准,体验也不是很好。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注