@@ -3,7 +3,7 @@ layout: "@/layouts/global.astro"
33title : " MoqBoy"
44author : kixelated
55description : " Using MoQ for REAL-TIME BIDIRECTIONAL STREAMING. Gameboy games!"
6- cover : " /blog/moq-boy/bren2 .png"
6+ cover : " /blog/moq-boy/moqboy .png"
77date : 2026-04-16
88---
99import Boy from " @/components/boy.astro" ;
@@ -16,7 +16,7 @@ Here's my MoQ copy of [Twitch Plays Pokemon](https://en.wikipedia.org/wiki/Twitc
1616But there's a dilemma: I don't want to get sued by Nintendo.
1717So enjoy homebrew games instead lul.
1818
19- And remember to scroll down and read the actual blog post once you're done GAMING.
19+ And remember to scroll down and read the actual blog post once you're done ** GAMING** .
2020
2121<Boy />
2222
@@ -33,8 +33,8 @@ But I want to first gloat about a secret feature.
3333A feature so secret, I gloat about it first.
3434** SAVING MOOLAH** .
3535
36- When a viewer wants audio and/or video, they issue a ` SUBSCRIBE ` request to the MoQ CDN.
37- The MoQ CDN (moq-relay nodes) slurp up all ` SUBSCRIBE ` requests for the same track and combines them.
36+ When a viewer wants audio and/or video, they issue a ` SUBSCRIBE ` request to a MoQ CDN.
37+ The MoQ CDN slurps up all ` SUBSCRIBE ` requests for the same track and combines them.
3838The end result: the underpowered cloud VM running the emulator gets at most one ` SUBSCRIBE ` request per track, regardless of viewer count.
3939
4040By default, a MoQ publisher will only transmit a track if there's an active subscription.
@@ -57,9 +57,9 @@ But we even bigger brain than that:
5757
5858- If there's no audio AND video subscription, ** the emulator sleep** .
5959
60- That's right, we' re not burning through the CPU/GPU unless some eye balls or ear holes will benefit.
61- This is aggressive; the web player will ` UNSUBSCRIBE ` to video if you scroll or tab away .
62- Scroll back up to the demos and you might see a black screen while the encoder/emulator/subscription reinitializes .
60+ We' re not burning through the CPU/GPU unless some eye balls or ear holes will benefit!
61+ Try scrolling back up to the demos and you might see a brief black screen .
62+ The player automatically ` UNSUBSCRIBE ` s when out of view, and if everybody does it, then no more Mr. Emulation .
6363
6464<figure >
6565 ![ bigger bren] ( /blog/moq-boy/bren2.png )
@@ -148,15 +148,15 @@ We now have a "bidirectional" stream by using two unidirectional streams.
148148But why not build bidirectional streams into MoQ proper?
149149Well it's because of business logic you nerd.
150150
151- This demo uses anarchy, where the broadcaster chooses to SUBSCRIBE to ** ALL** players.
152- Your flesh mangling robot might want lockout, where the broadcaster chooses to SUBSCRIBE to ** ONE** player.
153- Or maybe it gains sentience and doesn't want to SUBSCRIBE to ** ANY** pathetic humans any longer.
151+ - MoqBoy uses anarchy, where the broadcaster chooses to SUBSCRIBE to ** ALL** players.
152+ - Your flesh mangling robot might want enforce lockout, where the broadcaster chooses to SUBSCRIBE to ** ONE** player.
153+ - Or your flesh mangling robot has reached AGI (Sam be proud) and doesn't want to SUBSCRIBE to ** ANY** pathetic humans any longer.
154154
155- And as a perk, you can easily fan out controls just like any MoQ track .
156- Multiple robots can subscribe to the same ` controls ` track, ex. to listen for a shared kill switch .
155+ One perk of unidirectional streams is that they easily fan out .
156+ ** Multiple** robots can subscribe to the ** same** ` killswitch ` track.
157157They obviously will ignore it, but the thought counts.
158158
159- It's also just easier to scale a protocol that ALWAYS fans out.
159+ It's also just easier to scale a protocol that ** ALWAYS** fans out.
160160We're not in the business of adding business logic to the relay to merge JSON blobs or some other nonsense.
161161Your application is responsible for implementing fan in.
162162
@@ -173,10 +173,23 @@ If you're too lazy to ask AI, here's the relevant folders:
173173- [ JS player] ( https://github.com/moq-dev/moq/tree/main/js/moq-boy ) .
174174- [ Web/ROM stuff] ( https://github.com/moq-dev/moq/tree/main/demo/boy ) .
175175
176+ The [ Software Mansion] ( https://swmansion.com/ ) folks are hard at work on React Native bindings.
177+ Here's a sneak peak of this MOQ BOY demo running on a real phone!
178+
179+ <figure >
180+ ![ native screenshot] ( /blog/moq-boy/native.jpg )
181+ <figcaption >
182+ Definitely the future of gaming.
183+ </figcaption >
184+ </figure >
185+
186+ Definitely hit them up if you want MoQ on phone.
187+ Or use the open source ` Rust -> C/Kotlin/Swift/Python ` bindings yourself!
188+
176189## A Real Demo
177190So I know this looks like a fun emulator side project, but I swear it's not.
178- This is meant to be a DEMO of how you should use MoQ for robots, drones, and other murder machines.
179- Just replace the GameBoy emulation with REAL LIFE via a camera feed.
191+ This is meant to be a DEMO of how you should use MoQ for robots, drones, and other ~ murder~ machines.
192+ Just replace the GameBoy emulation with REAL LIFE via a camera feed, nobody will be the wiser .
180193
181194<figure >
182195 ![ weapon of mass destruction] ( /blog/moq-boy/moqboy.png )
@@ -186,7 +199,7 @@ Just replace the GameBoy emulation with REAL LIFE via a camera feed.
186199</figure >
187200
188201Also, I've started contracting as a way of getting MoQ pilots off the ground (literally and figuratively).
189- My primary goal is expand the MoQ ecosystem, which means most of what I do needs to be open source .
202+ My primary goal is expand the MoQ ecosystem, even if it means signing NDAs .
190203
191204Email me at ` me@kixel.me ` , or DM on [ Discord] ( https://discord.gg/FCYF3p99mr ) if you want:
192205- some advice on how to use MoQ.
0 commit comments