DOSゲームアマチュアストリーミングサービスアーキテクチャ

最近、ブラウザでのDOSゲームのストリーミングに関する短い記事を書きました。少し技術的なレビューをする時が来ました。このプロジェクトは私だけが行っているので、アマチュアとして位置づけています。ストリーミングゲームを可能にする公開されているテクノロジーの中で、WebRTCのみを区別でき 、私のサービスが構築されています。ご想像のとおり、ブラウザとサーバーの部分で構成されています。





ブラウザ部分



このサービスの主要コンポーネントは、JanusWebRTCサーバーです。箱から出して、サーバーに接続し、WebRTCプロトコルをサポートするためのシンプルなAPIを提供します。したがって、ブラウザ部分は、Janus APIのラッパーとして、可能な限り単純であることが判明しました



サーバー部分



サーバー側の dosboxでは、 ffmpegJanusが使用されます。それらはすべてドッカーコンテナにまとめられます。



サービスの現在のバージョンは以下を使用します。



  • 最新のdosboxバージョン
  • vp9およびopusコーデックのサポートでコンパイルされたffmpegの最新バージョン
  • マイナーな追加を含む最新バージョンのjanus(以下でそれらについて)




オーディオとビデオのストリーミング



dockerが起動すると、スーパーバイザーは3つのプログラムすべてを起動します。Dosboxはゲームを起動し、フレームとサウンドの生成を継続的に開始します。このデータはffmpegにリダイレクトされ、2つのRTPストリーム(サウンド、ビデオ)が作成されます。Janusストリーミングプラグイン( 標準コンポーネント)は、これらのストリームをリッスンし、ブラウザー用のWebRTCデータを生成します。



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









キーボードのサポート



WebRTCデータフィードは、ゲームアクション(ボタンクリック)をサポートするために使用されます。プレーヤーがボタンをクリックするたびに、ブラウザーのキーボードハンドラーがトリガーされます。データチャネルを介してテキストコマンドをサーバーに送信します。



  • パイプkdown-ボタンがクリックされたとき
  • pipekup-ボタンが離されたとき




サーバーでは、このデータは私の拡張機能(ソースコードによって処理され ます着信コマンドが記録される名前付きパイプが作成されます。一方、dosboxは常にこのパイプを読み取り、処理のためにキーボードイベントをキューに追加します。 データチャネルは順序付きモードで動作し、1つのパケットの寿命は16ミリ秒です。それら。キーボードイベントは、押された順序で配信されます。



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













インフラ



このサービスはAmazonプラットフォームで開始されます。クライアントごとに新しいFargateタスクが作成されます。タスクを開始すると、パブリックIPが受信され、ブラウザーに送信されます。IPを受信すると、ブラウザはJanusサーバーへのWebRTC接続を開始します。dosboxが終了すると、Fargateタスクは自動的に停止します。技術的には、同時プレイヤーの数に制限はありません。



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

...

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









結論の代わりに







何を書くべきかをもっと詳しく理解するまでそれはかなり表面的 に判明しました。一般的に、アーキテクチャは非常に機能していることが証明されました。このサービスは無料ですこちらでお試し いただけます



レビュー記事: DOSクラウドゲーミング



All Articles