Skip to content
/ wsnet2 Public

モバイルオンラインゲーム向けのリアルタイム通信システム

License

Notifications You must be signed in to change notification settings

KLab/wsnet2

Folders and files

NameName
Last commit message
Last commit date
Dec 23, 2024
Jan 29, 2024
Dec 23, 2024
Dec 25, 2024
Dec 25, 2024
Oct 12, 2022
Jan 8, 2025
Feb 9, 2023
Nov 10, 2022
Mar 9, 2023

Repository files navigation

WSNet2

これは何?

WSNet2 は WebSocket をベースとしたモバイルオンラインゲーム向けのリアルタイム通信システムです。

特徴

  • WebSocket ベース: ほとんどの環境から特別な設定なく接続することができます
  • 自動再接続・再送: 利用アプリは一時的な切断を気にすることなく実装できます
  • スケーラブルな観戦: 中継サーバ(Hub)を増やすことで大規模な観戦に対応できます
  • Unity/.Net 両対応: C#のゲームロジックをより軽量にサーバ上でも実行できます

動作・開発環境

  • サーバ
    • Go 1.19 以降
    • MySQL 5.7 以降
  • クライアント
    • C#
      • Unity 2020 以降
      • .Net 5.0 以降
    • Go 1.19 以降

使ってみる

WSNet2 サーバ群の起動

$ cd server
$ docker compose up

VM やリモート環境で起動する場合は、 compose.yamlにて game/hub の接続ホスト名を環境変数WSNET2_GAME_PUBLICNAMEで適切に指定してください。

サンプルゲーム

Titleシーン Gameシーン

Unity クライアントの使い方

wsnet2-unityディレクトリを Unity で開き、Assets/Sample/Title.unityシーンを実行します。

  • テキストボックス
    • Lobby: WSNet2 の lobby の URL です
    • AppID/Key: WSNet2 に登録している AppID と Key です(Docker ではtestapp/testapppkeyが登録されています)
    • UserID: WSNet2 がユーザを識別する ID です。対戦するにはお互い異なる UserID にします
  • ボタン
    • CPU 対戦: オフラインで CPU と対戦します(WSNet2 に接続しません)
    • 部屋作成: WSNet2 に部屋を作り、相手プレイヤーを待ち受けます
    • ランダム入室: プレイヤーを待っている部屋に入室します
    • ランダム観戦: 対戦中のゲームを観戦します

Unity クライアントでゲームロジックを動かす例

Unity クライアントのタイトルシーンで「部屋作成」ボタンを押して、部屋を作り対戦相手の入室を待ちます。 対戦相手の Bot を次のように起動します。

$ cd wsnet2-dotnet/WSNet2.Sample
$ dotnet run -- -b

Lobby サーバをhttp://localhost:8080以外で起動している場合は、 Title シーン画面の Lobby に入力したうえで、Bot 起動時にも-sオプションで指定してください。

サーバサイドゲームロジックで対戦する例

次のようにゲームロジッククライアント(MasterClient)と Bot を起動します。 MasterClient が部屋を作り、Bot と Unity クライアントの入室を待ち受けます。

$ cd wsnet2-dotnet/WSNet2.Sample
$ dotnet run -- -m -b

Unity クライアントの Title シーンで「ランダム入室」を押して MasterClient の待ち受ける部屋に入室します。

観戦する例

次のようにゲームロジッククライアント(MasterClient)と Bot を 2 つ起動します。 MasterClient が部屋を作り、Bot が入室して対戦を始めます。

$ cd wsnet2-dotnet/WSNet2.Sample
$ dotnet run -- -m -b 2

Unity クライアントの Title シーンで「ランダム観戦」を押して観戦します。

Documentations

使い方

機能詳細

クラス詳細

About

モバイルオンラインゲーム向けのリアルタイム通信システム

Resources

License

Stars

Watchers

Forks

Packages

No packages published