Code Monkey home page Code Monkey logo

wsnet2's Introduction

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

使い方

機能詳細

クラス詳細

wsnet2's People

Contributors

makiuchi-d avatar pandax381 avatar inada-s avatar methane avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.