Socket.IO ブラウザゲーム プログラム

2013年04月15日にWEBサービス「ブラウザでワンナイト人狼」をリリースして、2025年07月15日をもって終了しました。

せっかくなのでこの機会に「ブラウザでワンナイト人狼」で使用していた「Socket.IO 通信処理部分」を作り直して公開しました(作成したのは通信部分だけです)。

2013年に作ったときは、基本的に jQuery と Ajax を使っていて、通信部分だけ Socket.IO を利用するといった時代を感じるプログラムでした。
当時は Socket.IO に room 機能がなかったので、ゲームを作成したユーザーのブラウザにプレイヤーの Socket ID をあつめ、全員にデータを送信することでネットワークゲームを実行していました。

今回試しで作り直した通信部分ですが、Socket.IO の room 機能 を使っています。

プログラム

GitHub BakuretuKen/socket_game_base_room
https://github.com/BakuretuKen/socket_game_base_room

プログラム実行画面

ゲーム作成(マスター画面)

プレイヤー接続(プレイヤー画面)

マスター画面(2名が接続状態)

「players」ボタンでオブジェクト players をコンソールに表示

「players」ボタンで文字列 playerName をコンソールに表示
「ますた」と表示される

「isMaster」ボタンでフラグ isMaster をコンソールに表示
「true」と表示される

開発について

game_master.tsgame_player.ts にゲームプログラムを書いてください。

マスターとプレイヤーでプログラムを分けたくない場合は game.ts ファイルを作成し、そこにゲームプログラムを書いてください。
マスターとプレイヤーの判別はフラグ isMaster を使用してください。

sendMessage 関数で全員にメッセージが送信できます。
自分宛てのメッセージ判断は「送信メッセージ」に Socket ID もしくは プレイヤー名 を含め、それで自分に来たメッセージかを判断してください。
もしくは Socket ID を指定して該当プレイヤーだけにメッセージを送信する sendDirectMessage 関数もつかえます。