MoQ Boy: Bản demo GameBoy trên đám mây chứng minh sức mạnh của giao thức MoQ
MoQ Boy là một dự án trình diễn khả năng của giao thức MoQ (Media over QUIC) thông qua việc chạy giả lập GameBoy trên đám mây. Hệ thống này tối ưu hóa tài nguyên bằng cách chỉ kích hoạt mã hóa và chạy máy ảo khi có người xem thực sự, đồng thời cho phép điều khiển game theo thời gian thực qua cơ chế phát hiện và đăng ký thông minh. Đây là bước đệm quan trọng cho các ứng dụng điều khiển robot và drone trong tương lai.

MoQ Boy là một bản sao của Twitch Plays Pokemon, nhưng được xây dựng trên nền tảng công nghệ truyền thông hiện đại. Tuy nhiên, tác giả gặp một dilemma nhỏ: không muốn bị Nintendo kiện vì vi phạm bản quyền. Vì vậy, thay vì các trò chơi thương mại, chúng ta hãy cùng thưởng thức các game tự chế (homebrew) chạy trên giả lập này.
Các máy giả lập (emulator) đang chạy trên các máy ảo (VM) tại Texas, vì vậy nếu độ trễ (latency) cao, xin đừng "ném đá" tác giả. Hãy cuộn xuống để đọc bài viết sau khi đã trải nghiệm GAME.
MoQ Boy Demo
Kiến trúc hệ thống
Hệ thống bao gồm N worker giả lập và M người chơi. Tất cả sử dụng một kết nối duy nhất đến một MoQ CDN chung cho mọi thứ. Nhưng làm thế nào để mọi thứ hoạt động trơn tru?
Tối ưu hóa theo nhu cầu (On-Demand)
Trước hết, hãy nói về một tính năng bí mật giúp tiết kiệm chi phí đáng kể.
Khi người xem muốn nghe âm thanh hoặc xem video, họ gửi yêu cầu SUBSCRIBE đến MoQ CDN. MoQ CDN sẽ gom tất cả các yêu cầu SUBSCRIBE cho cùng một track lại với nhau. Kết quả là: máy ảo cloud yếu ớt chạy giả lập chỉ nhận tối đa một yêu cầu SUBSCRIBE cho mỗi track, bất kể có bao nhiêu người xem.
Theo mặc định, nhà xuất bản MoQ chỉ truyền track nếu có đăng ký hoạt động. Máy giả lập của chúng ta sẽ mã hóa media, nhưng những pixel quý giá đó sẽ nằm trong RAM cho đến khi có người xem.
Nhưng chúng ta có một giải pháp thông minh hơn. Thay vì mã hóa liên tục, chúng ta bật/tắt bộ mã hóa dựa trên trạng thái đăng ký:
- Nếu không có đăng ký âm thanh, bộ mã hóa Opus sẽ ngủ.
- Nếu không có đăng ký video, bộ mã hóa H.264 sẽ ngủ.
Và còn thông minh hơn nữa: Nếu không có đăng ký âm thanh và video, máy giả lập sẽ ngủ. Chúng ta không tiêu tốn CPU/GPU trừ khi có mắt hay tai nào đó được hưởng lợi!
Nếu bạn cuộn lên lại các bản demo ở trên, bạn có thể thấy màn hình đen ngắn. Trình phát sẽ tự động UNSUBSCRIBE khi ra khỏi tầm nhìn, và nếu mọi người đều làm vậy, quá trình giả lập sẽ dừng lại.
Kiến trúc MoQ Boy
Việc tiết kiệm băng thông/CPU có lẽ không phải là vấn đề lớn đối với giả lập GameBoy (màn hình chỉ 160x144). Nhưng điều này bắt đầu quan trọng đối với bất kỳ ai chạy các dịch vụ đăng ký đắt đỏ:
- Nếu không ai muốn phụ đề, đừng chạy Whisper.
- Nếu không ai muốn H.265, đừng chuyển mã nó.
- Nếu không ai muốn xem video chơi game tệ của bạn, hãy gửi nó đến /dev/null.
Tất cả đều được tích hợp sẵn trong MoQ.
Khám phá tự động (Discovery)
Một người nhàm chán sẽ hard-code danh sách các game có sẵn. Nhưng tác giả lại "HYPER-C00l", nên MoqBoy sử dụng khả năng khám phá các bản phát sóng trực tiếp của MoQ.
Hiện tại, tất cả đều đang chạy tại Texas. Chúng kết nối đến node cdn.moq.dev gần nhất và:
- Worker 1 xuất bản
demo/boy/big2small. - Worker 2 xuất bản
demo/boy/opossum.
Điều đầu tiên trình phát làm là hỏi MoQ CDN về mọi bản phát sóng có tiền tố demo/boy/. Nó sẽ nhận được thông báo trực tiếp khi các game trực tuyến và ngoại tuyến.
Cũng giống như cách hang.live khám phá người dùng khác. Nó đơn giản như "hãy cho tôi biết khi nào ai đó xuất bản một bản phát sóng bắt đầu bằng room123/". Bạn không cần một dịch vụ "phòng" riêng biệt để quản lý thành viên. Chỉ cần dùng MoQ.
Điều khiển (Controls)
MoQ là một giao thức một chiều. Nhà phát sóng phát, người xem xem. Nhưng làm thế nào để người chơi chơi game?
Đây là bí mật: Người xem cũng có thể là nhà phát sóng!
Mỗi người chơi xuất bản một bản phát sóng gọi là demo/viewer/big2small/, với một ID ngẫu nhiên. Họ tạo ra một track điều khiển duy nhất, và khi một nút được nhấn, họ ghi một blob JSON vào đó:
{
"a": true,
"up": true
}
Nhà xuất bản MoqBoy sử dụng cùng cơ chế DISCOVERY ở trên để tìm tất cả người chơi. Nó đăng ký vào track điều khiển cho bất kỳ bản phát sóng nào có tiền tố demo/viewer/big2small/.
Bada bing, bada boom. Bây giờ chúng ta có luồng dữ liệu "hai chiều" bằng cách sử dụng hai luồng một chiều.
Tại sao không xây dựng luồng hai chiều trực tiếp vào MoQ? Đó là vì logic kinh doanh. MoqBoy sử dụng sự hỗn loạn (anarchy), nơi nhà phát sóng chọn SUBSCRIBE TẤT CẢ người chơi. Robot của bạn có thể muốn thực thi khóa, nơi nhà phát sóng chọn SUBSCRIBE MỘT người chơi.
Một lợi ích của luồng một chiều là chúng dễ dàng phân tán (fan out). Nhiều robot có thể đăng ký vào cùng một track "killswitch". Dễ dàng mở rộng một giao thức luôn phân tán hơn là thêm logic kinh doanh vào relay để hợp nhất các blob JSON.
Mã nguồn mở
Và bạn có thể tự chạy nó. Thiết lập kho mono repo, sau đó chạy just boy. Thật thú vị khi gõ.
Nếu bạn lười hỏi AI, đây là các thư mục liên quan:
- Nhà xuất bản Rust.
- Trình phát JS.
- Web/ROM stuff.
Đội ngũ The Software Mansion đang làm việc chăm chỉ trên các binding React Native. Đây là một cái nhìn lén về bản demo MOQ BOY này chạy trên điện thoại thật!
MoQ Boy trên Mobile
Chắc chắn đây là tương lai của gaming. Hãy liên hệ với họ nếu bạn muốn MoQ trên điện thoại. Hoặc tự sử dụng các binding Rust -> C/Kotlin/Swift/Python mã nguồn mở!
Một bản demo thực tế
Tôi biết điều này trông giống như một dự án giả lập game vui vẻ, nhưng tôi thề nó không phải vậy. Đây là meant to be một DEMO về cách bạn nên sử dụng MoQ cho robot, drone và các cỗ máy giết người khác. Chỉ cần thay thế giả lập GameBoy bằng THỰC TẾ thông qua nguồn cấp camera, không ai sẽ nhận ra sự khác biệt.
Tác giả đã bắt đầu làm việc tư vấn như một cách để đưa các phi công MoQ cất cánh (nghĩa đen và nghĩa bóng). Mục tiêu chính là mở rộng hệ sinh thái MoQ.
Nếu bạn muốn:
- Một số lời khuyên về cách sử dụng MoQ.
- Tài trợ cho một số đóng góp mã nguồn mở.
- Một phi công MoQ để thay thế thiết lập tồi tàn của bạn.
Hãy gửi email cho tác giả.
Bài viết liên quan

Công nghệ
Startup Equity Adventure Game: Trò chơi mô phỏng hành trình vốn và cổ phần khởi nghiệp
26 tháng 4, 2026

Phần mềm
Giới thiệu Tiao: Trò chơi chiến thuật lượt chơi xây dựng trên Next.js và TypeScript
26 tháng 4, 2026

Phần mềm
Fast16: Khám phá khung phá hoại phần mềm độ chính xác cao tiền thân của Stuxnet
26 tháng 4, 2026
