クラシックなMAMEゲームをWebで楽しめるサイトを作ってみました。
シンプルにWebで遊べるサイトは多いようですが、ネットワークプレイをWeb上でスムーズにサポートするサイトはないように思えたので、
ネットワークプレイに重点を置いて作ってみました。
まず、ユーザーがMAME ROMをアップロードすると、管理側でそのROMに問題がないか確認し、承認されるとユーザーに公開されます。
1P、2Pに対応するゲームであれば、ゲームの種類に関係なくネットワークプレイができるようにしてみました。
Backend : FastAPI, Radis, postgresql, wss, likvekit
Frontend : react + vite, tailwindCss
当初は、ネットワークプレイ時にそれぞれのエミュレーターをWeb上で起動し、ユーザーのキー入力だけを伝える方式で進めていましたが、同期の部分で深刻な問題が発生しました。キー入力だけは相互に伝わるものの、キャラクター設定やエミュレーターの読み込み時間の差などの問題で、どうしても同期してゲームを進行できませんでした。そこで考えたのが、ネットワークゲームを開始したら画面全体を参加者のブラウザーへ送信してしまう方法です。LiveKitを使い、この状態でキー入力だけをWebSocket経由で相互にやり取りするようにしました。
その結果、同期の問題はようやく完全に解決し、シューティングでも対戦格闘でも問題なくネットワークゲームを進められるようになりました。
問題はネットワークトラフィックですが。
気軽に楽しめるよう、ゲームプレイ以外の機能は付けていません。
一度見ていただいて、改善点を教えていただけるとありがたいです。
まだコメントはありません。