Ian|在线试玩,在体感游戏中打败泰森,这位小哥破解了任天堂拳无虚发

编辑:张倩、陈萍

加入体感控制 , 这位小哥破解了原版任天堂的拳击格斗游戏「拳无虚发」 。
Ian|在线试玩,在体感游戏中打败泰森,这位小哥破解了任天堂拳无虚发
文章图片

在经典红白机上玩拳击游戏是很多人的童年回忆 , 其中就包括任天堂 1987 年发布的拳击格斗游戏——「Punch Out(拳无虚发)」 。
Ian|在线试玩,在体感游戏中打败泰森,这位小哥破解了任天堂拳无虚发
文章图片

在这款游戏中 , 玩家的设定是一个拳击小白 , 需要在教练的指导下战胜各种大块头对手 , 最后挑战终极大 boss 拳王泰森 。 当然 , 泰森本人也玩过这款游戏 。
Ian|在线试玩,在体感游戏中打败泰森,这位小哥破解了任天堂拳无虚发
文章图片

随着网游、大型单机等各种游戏的兴起 , 红白机逐渐退出历史舞台 , 成了怀旧的代表 , 早期版本的「Punch Out」也很少有人玩了 。
但最近 , 一位名叫 Ian Charnas 的网友又把这款游戏翻了出来 , 而且自己开发了一种新的玩法——加入体感控制 。 简单来说 , 在这款 DIY「拳无虚发」中 , 你可以借助摄像头和 AI 算法控制游戏中的角色 , 就像在玩 Switch、Xbox 的体感游戏 , 但成本几乎为零 。
Ian|在线试玩,在体感游戏中打败泰森,这位小哥破解了任天堂拳无虚发
文章图片

为了增加游戏的沉浸感 , 他甚至在身上绑了个电击臂环 , 从而在受到攻击时能得到更真实的反馈 。
Ian|在线试玩,在体感游戏中打败泰森,这位小哥破解了任天堂拳无虚发
文章图片

那么 , 这个新游戏是怎么做出来的呢?Ian Charnas 在视频中介绍了几个主要步骤 。
首先 , 你要找到一个能进行实时姿态估计的算法 。 Ian 用的是谷歌的 MoveNet , 这个模型能够快速、准确地检测人体的 17 个关键点 。
Ian|在线试玩,在体感游戏中打败泰森,这位小哥破解了任天堂拳无虚发
文章图片

接下来就要想办法将游戏从原始的游戏盘导到电脑浏览器上 。 由于 80 年代的任天堂连 USB 接口都没有 , Ian 就先把原始游戏机改装了一番 。
Ian|在线试玩,在体感游戏中打败泰森,这位小哥破解了任天堂拳无虚发
文章图片

成功把游戏代码导入电脑之后 , Ian 又找了一个任天堂模拟器来运行该游戏 。 此时 , 一个体感游戏基本完成 。
但真正上手玩之后 , Ian 发现了一个问题:姿态识别输入比手柄输入要慢 , 但对手的出拳速度并没有变 , 这就很难赢 。
要想赢 , 要么提高自己的出拳速度 , 要么拖慢对手的速度 , Ian 选择了后者 。 这就需要修改游戏代码 。 但「拳无虚发」的原始游戏代码并不是写给人看的:
Ian|在线试玩,在体感游戏中打败泰森,这位小哥破解了任天堂拳无虚发
文章图片

为了读懂这些代码 , Ian 对源代码进行了逆向工程(反汇编) , 并对游戏人物的速度进行逐一修改 , 使得每一个人物都是可被击败的 。
Ian|在线试玩,在体感游戏中打败泰森,这位小哥破解了任天堂拳无虚发
文章图片

在完成这些操作之后 , Ian 成功打败了终极 boss 泰森 。
Ian|在线试玩,在体感游戏中打败泰森,这位小哥破解了任天堂拳无虚发
文章图片

最后 , Ian 还把游戏以及配套的教程放到了网上 , 点击以下网站、打开摄像头就可以试玩:https://reallifepunchout.com/
MoveNet 是个什么模型?
上述进行实时姿态估计的算法用到了谷歌今年推出的 MoveNet 模型 , 它是一个预训练模型 , 所以设置好以后即可使用 。 该模型能够快速、准确地检测人体的 17 个关键节点(如脚踝、膝盖、肩膀、手肘、手腕、耳朵、眼睛和鼻子等) , 能够以 50+ fps 的速度在笔记本电脑和手机上运行 。 该模型已在 TF Hub 上提供 , 有两个变体 , 分别称为 Lightning 和 Thunder 。 Lightning 适用于对延迟要求严格的应用 , 而 Thunder 适用于对准确性要求较高的应用 。 因此 , 我们可以看到 Thunder 模型的关键点得分通常会比 Lightning 略高 。
MoveNet 在两个数据集上训练完成:COCO 和一个名为 Active 的谷歌内部数据集 。 其中 Active 数据集通过在 YouTube 上的瑜伽、健身和舞蹈视频中标注关键点(采用了 COCO 的 17 个身体关键点标准)而产生 。 训练时 , 每段视频不超过三帧 , 以增加场景和个体的多样性 。
Ian|在线试玩,在体感游戏中打败泰森,这位小哥破解了任天堂拳无虚发
文章图片

Active 关键点数据集的图像