Skip to content
forked from KLab/wsnet2

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

License

Notifications You must be signed in to change notification settings

SeungHuLee/wsnet2

 
 

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やリモート環境で起動する場合は、 docker-compose.ymlにて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

Releases

No releases published

Packages

No packages published

Languages

  • C# 81.8%
  • Go 18.1%
  • Other 0.1%