news 2026/4/27 14:51:31

MoQ实现Twitch Plays Pokemon项目:节省成本、实时发现与双向控制的创新玩法!

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MoQ实现Twitch Plays Pokemon项目:节省成本、实时发现与双向控制的创新玩法!

发布信息

发布时间为2026年4月16日。

项目介绍

这是用MoQ实现的Twitch Plays Pokemon项目。不过为避免被任天堂起诉,大家玩自制游戏。模拟器运行在得克萨斯州的虚拟机上,玩完游戏后,需往下滚动查看博客正文。

架构是怎样的?

这里有N个模拟器工作节点和M个玩家,它们通过一条连接与通用的MoQ CDN进行所有数据交互。

如何实现按需服务?

MoQ有节省成本的秘密功能。当观众想要音频和/或视频时,会向MoQ CDN发送 `SUBSCRIBE` 请求,MoQ CDN会收集同一轨道的所有 `SUBSCRIBE` 请求并合并。运行模拟器的性能较弱的云虚拟机每个轨道最多只会收到一个 `SUBSCRIBE` 请求,无论观众数量多少。默认情况下,MoQ发布者只有在有活跃订阅时才会传输轨道。模拟器会对媒体进行编码,但像素会留在内存中,直到有观众观看。还会根据是否有活跃订阅来开启或关闭编码器:如果没有音频订阅,Opus编码器将休眠;如果没有视频订阅,H.264编码器将休眠。若既没有音频订阅也没有视频订阅,模拟器将休眠。除非有观众观看或收听,否则不会浪费CPU/GPU资源。对于Game Boy模拟器来说,节省带宽和CPU资源虽不是大事,但对于使用昂贵订阅服务的人很重要,比如没人想要字幕就别运行Whisper,没人想要H265格式就别进行转码,没人想看糟糕的游戏直播就把它丢到 `/dev/null` 里。而这一切都内置于MoQ中。

发现机制是怎样的?

普通做法是硬编码可用游戏列表,但MoqBoy使用了MoQ的实时发现可用广播的功能。有一个单独的二进制文件用于处理ROM,目前它们都在得克萨斯州运行。它们连接到最近的 `cdn.moq.dev` 节点,工作节点1发布 `demo/boy/big2small`,工作节点2发布 `demo/boy/opossum`。玩家首先会向MoQ CDN请求所有以 `demo/boy/` 为前缀的广播,当游戏上线或下线时,玩家会收到实时通知。另外,“opossum” 是个生造词。hang.live也是用这种方式发现其他用户的,用MoQ就好。

玩家如何玩游戏?

MoQ是单向协议,但观众也可以成为发布者。每个玩家都会发布一个名为 `demo/viewer/big2small/` 的广播,其中 `` 是随机生成的。他们会生成一个 `controls` 轨道,按下按钮时,会向该轨道写入一个JSON数据块。MoqBoy发布者使用发现机制来查找所有玩家,会订阅所有以 `demo/viewer/big2small/` 为前缀的广播的 `controls` 轨道。通过两个单向流实现了 “双向” 流。不直接在MoQ中构建双向流是因为涉及业务逻辑,比如MoqBoy使用无政府模式,发布者会订阅所有玩家的内容;杀人机器人可能想实施锁定模式,发布者只订阅一个玩家的内容;或者杀人机器人达到通用人工智能水平,不再想订阅任何可怜人类的内容。单向流容易进行广播,多个机器人可以订阅同一个 `killswitch` 轨道,且总是进行广播的协议更容易扩展,应用程序需要负责实现聚合逻辑。

能否自己运行项目?

可以自己运行这个项目,设置单仓库,然后运行 `just boy`。相关文件夹包括Rust发布者、JS播放器、Web/ROM相关内容。Software Mansion的团队正在努力开发React Native绑定,这里有一张在真机上运行MOQ BOY演示的截图。这绝对是游戏的未来。如果想在手机上使用MoQ,可以联系他们,也可以自己使用开源的 `Rust -> C/Kotlin/Swift/Python` 绑定。

这只是个模拟器小项目吗?

这不是一个有趣的模拟器小项目,而是一个关于如何将MoQ用于机器人、无人机和其他机器的演示,只要用摄像头的实时画面替换Game Boy模拟器,没人会发现区别。另外,已经开始承接项目以推动MoQ的试点应用,主要目标是扩展MoQ生态系统,即使要签署保密协议。如果有关于如何使用MoQ的建议、赞助一些开源贡献、用MoQ试点项目替换现有的糟糕设置等需求,可以发邮件或在Discord上私信。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/27 14:50:27

别再傻傻分不清了!ToB、ToC、ToG产品经理的日常工作到底差在哪?

ToB、ToC、ToG产品经理的日常:从需求挖掘到落地的全景对比 每天早上9点,当ToC产品经理正在分析用户点击热力图时,ToB产品经理可能正在与销售团队讨论某企业客户的定制需求,而ToG产品经理则可能在准备向某政府部门汇报项目进度的材…

作者头像 李华
网站建设 2026/4/27 14:45:22

Element Plus终极指南:5个步骤打造专业级Vue 3企业应用界面

Element Plus终极指南:5个步骤打造专业级Vue 3企业应用界面 【免费下载链接】element-plus 🎉 A Vue.js 3 UI Library made by Element team 项目地址: https://gitcode.com/GitHub_Trending/el/element-plus Element Plus是专为Vue 3设计的现代化…

作者头像 李华
网站建设 2026/4/27 14:42:23

魔兽世界GSE宏编辑器:5步打造智能战斗循环的终极指南

魔兽世界GSE宏编辑器:5步打造智能战斗循环的终极指南 【免费下载链接】GSE-Advanced-Macro-Compiler GSE is an alternative advanced macro editor and engine for World of Warcraft. 项目地址: https://gitcode.com/gh_mirrors/gs/GSE-Advanced-Macro-Compile…

作者头像 李华
网站建设 2026/4/27 14:41:41

Ryujinx Nintendo Switch模拟器完整指南:从零开始PC畅玩Switch游戏

Ryujinx Nintendo Switch模拟器完整指南:从零开始PC畅玩Switch游戏 【免费下载链接】Ryujinx 用 C# 编写的实验性 Nintendo Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/ry/Ryujinx 想在电脑上体验Nintendo Switch游戏的魅力吗&#xff1f…

作者头像 李华
网站建设 2026/4/27 14:39:57

ASP.NET Core MVC完整指南:构建高性能Web应用的最佳方案

ASP.NET Core MVC完整指南:构建高性能Web应用的最佳方案 【免费下载链接】Mvc [Archived] ASP.NET Core MVC is a model view controller framework for building dynamic web sites with clean separation of concerns, including the merged MVC, Web API, and We…

作者头像 李华