Arsitektur Layanan Streaming Amatir Permainan DOS

Baru-baru ini saya menulis artikel singkat tentang streaming game DOS di browser. Saatnya melakukan sedikit tinjauan teknis. Proyek ini dilakukan secara eksklusif oleh saya, jadi saya memposisikannya sebagai proyek amatir. Di antara teknologi yang tersedia untuk umum yang memungkinkan streaming game, hanya WebRTC yang dapat dibedakan di atasnya dan layanan saya dibuat. Seperti yang mungkin sudah Anda duga, ini terdiri dari browser dan bagian server.





Bagian browser



Komponen utama layanan ini adalah server Janus WebRTC. Di luar kotak, ini menyediakan API sederhana untuk menghubungkan ke server, dan mendukung protokol WebRTC. Oleh karena itu, bagian browser ternyata sesederhana mungkin, sebagai pembungkus Janus API .



Bagian server



Di dosbox sisi server , ffmpeg dan Janus digunakan . Mereka semua dikumpulkan bersama dalam wadah buruh pelabuhan.



Versi layanan saat ini menggunakan:



  • Versi dosbox terbaru
  • Versi terbaru dari ffmpeg yang dikompilasi dengan vp9 dan dukungan codec opus
  • Versi terbaru janus dengan tambahan kecil (tentang mereka di bawah)




Streaming audio dan video



Saat buruh pelabuhan mulai, supervisor memulai ketiga program. Dosbox meluncurkan game dan mulai menghasilkan frame dan suara secara terus menerus. Data ini dialihkan ke ffmpeg, yang membuat dua aliran RTP (suara, video). Plugin streaming Janus ( komponen standar ) mendengarkan streaming ini dan menghasilkan data WebRTC untuk browser.



{dosbox} --> {ffmpeg} --> {janus streaming plugin} --> {browser}









Dukungan keyboard



Umpan data WebRTC digunakan untuk mendukung tindakan game (klik tombol). Setiap kali pemain mengklik tombol, pengendali keyboard browser dipicu. Ini mengirimkan perintah teks melalui saluran data ke server.



  • pipa kdown - saat tombol diklik
  • pipa kup - saat tombol dilepaskan




Di server, data ini diproses oleh ekstensi saya ( kode sumber ). Pipa bernama dibuat di mana perintah masuk direkam. Di sisi lain, dosbox terus membaca pipa ini dan menambahkan kejadian keyboard ke antrian untuk diproses. Saluran data beroperasi dalam mode terurut, masa pakai satu paket adalah 16 ms. Itu. acara keyboard akan disampaikan sesuai urutan penekanannya.



{browser} --> {janus data text channel} --> {pipe} --> {dosbox}













Infrastruktur



Layanan ini diluncurkan di platform Amazon. Tugas Fargate baru dibuat untuk setiap klien. Setelah memulai, tugas menerima IP publik, yang dikirim ke browser. Setelah menerima IP, browser memulai koneksi WebRTC ke server Janus. Saat dosbox selesai, tugas Fargate berhenti secara otomatis. Secara teknis tidak ada batasan untuk jumlah pemain secara bersamaan.



{browser} --> {+fargate} --> {ip} --> {browser}

...

{browser} --> {stop} --> {-fargate}









Bukan sebuah kesimpulan



Ternyata cukup dangkal,



Ternyata cukup dangkal, sampai saya mengerti apa yang harus ditulis lebih detail. Secara umum, arsitekturnya terbukti cukup berfungsi. Layanannya gratis, Anda bisa mencobanya di sini .



Tinjau artikel: DOS Cloud Gaming



All Articles