このリポジトリにより、ブラウザでの導入に先立って、ブラウザ拡張機能を介して netcode.io を使用できるようになります。 netcode.io は、マルチプレイヤー HTML5 ゲームをサポートする目的で、Web ブラウザーで UDP を安全に使用できるようにします。 netcode.io の詳細については、ここを参照してください。
netcode.io は、拡張機能を介して次のブラウザでサポートされています。
モバイル プラットフォームは拡張機能やネイティブ メッセージングをサポートしていないため、ブラウザーで netcode.io サポートがネイティブに表示されるまで、モバイル デバイスのサポートは基本的に不可能です。
これが機能するには、ブラウザ拡張機能と、実際の netcode.io 通信を実行するネイティブ アプリケーション ヘルパーの両方をインストールする必要があります。この拡張機能は、ヘルパー経由で netcode.io を利用できるようにするために、ブラウザーで提供されるネイティブ メッセージング API を使用します。
ブラウザでこれを試すには、まず netcode.io.host ヘルパーをビルドします。
go get github.com/wirepair/netcode
go build
- 現在の OS の場合env GOOS=windows GOARCH=amd64 go build
- Windows 用にビルドします (Linux スタイルで環境変数を設定します)env GOOS=linux GOARCH=amd64 go build
- Linux 用にビルドします (Linux スタイルで環境変数を設定します)env GOOS=darwin GOARCH=amd64 go build
- Mac 用にビルドします (Linux スタイルで環境変数を設定します) ./netcode.io.host
これはエラーなしで実行され、ネイティブ メッセージング拡張機能としてインストールされます。
これが完了したら、 browserwebext
ディレクトリを解凍された拡張機能として追加します。
この API は、JavaScript クライアントがwindow.netcode
として利用できるようになりました。従来のif (window.netcode) { ... }
パターンを使用して netcode.io が利用可能かどうかを確認できます。
window.netcode
は、 createClient(callback)
という 1 つの関数が用意されています。
netcode.io プロトコルを使用した安全な UDP 通信に使用できる新しい netcode.io クライアントを作成します。コールバックの形式はcallback(err, client)
です。 err
が設定されている場合、クライアントの作成中にエラーが発生しました ( client
null になります)。それ以外の場合はclient
が設定され、 err
null になります。返されるクライアントはClient
のインスタンスです。
protocol
ipv4
またはipv6
いずれかである必要があり、接続できるサーバー アドレスの種類が決まります。
パラメータ:
protocol
: ipv4
またはipv6
のいずれか。callback
: callback(err, client)
形式のコールバック。 ここで、 err
はnull
またはError
のインスタンス、 client
null
またはClient
のインスタンスのいずれかです。 netcode.io ヘルパーがユーザーによってインストールされているかどうかを確認します。コールバックの形式はcallback(err, isPresent)
で、 err
はnull
またはError
のインスタンスです。エラーがない場合、 isPresent
ネイティブ ヘルパーがインストールされているかどうかを示すブール値です。
netcode.io ヘルパーがインストールされていない場合は、netcode.io ヘルパーを簡単にインストールできる https://github.com/RedpointGames/netcode.io-browser/releases/tag/latest にユーザーを誘導する必要があります。数回クリックするだけ。
パラメータ:
callback
: callback(err, isPresent)
形式のコールバック。 err
はnull
またはError
のインスタンスで、 isPresent
null
またはブール値のいずれかです。 netcode.io クライアントのティック レートを設定します。パケットの送受信における 1 秒あたりのティック数として表されます。クライアントのティック レートのデフォルトは60
です。つまり、1 秒間に 60 回です。
パラメータ:
tickRate
: 1
以上の整数。callback
: callback(err)
形式のコールバック。 err
null
またはError
のインスタンスです。指定されたトークンを使用して netcode.io サーバーに接続します。 token
Uint8Array
のインスタンスであり、認証サーバーから受信した netcode.io トークンを表す必要があります。
netcode.io を使用して UDP パケットを任意の IP アドレスに送信することはできません。代わりに、netcode.io ライブラリ (または互換性のある実装) を使用する認証サーバーが必要です。このライブラリでは、ゲーム サーバーの IP アドレスのリストと、認証サーバーとゲーム サーバー間で共有される秘密キーを使用してトークンを生成および署名できます。
ほとんどの一般的なシナリオでは、認証サーバーは AJAX リクエストの一部としてトークンを提供します。ユーザー アカウント システムを使用している場合は、ユーザーがゲームにログインした後、クライアントがどのサーバーへの接続を許可されているかを示すトークンを提供します。
パラメータ:
token
: トークン データを含むUint8Array
インスタンス。callback
: callback(err)
形式のコールバック。 err
null
またはError
のインスタンスです。 packetBuffer
をデータとして接続先のサーバーにパケットを送信します。 packetBuffer
Uint8Array
のインスタンスである必要があります。
パラメータ:
token
: 送信するパケット データを含むUint8Array
インスタンス。callback
: callback(err)
形式のコールバック。 err
null
またはError
のインスタンスです。クライアントの現在の状態を文字列として返します。返される状態は、 connected
、 connectionDenied
、 connectionRequestTimeout
、 connectionResponseTimeout
、 connectionTimedOut
、 connectTokenExpired
、 disconnected
、 invalidConnectToken
、 sendingConnectionRequest
、 sendingConnectionResponse
、またはdestroyed
のいずれかです。
パラメータ:
callback
: callback(err, state)
形式のコールバック。 err
null
またはError
のインスタンスです。 state
null
(エラーの場合) または上記のいずれかの状態です。クライアントを破棄し、サーバーから切断し、関連するリソースをクリーンアップします。クライアントは一度破棄されると再利用できません。
パラメータ:
callback
: callback(err)
形式のコールバック。 err
null
またはError
のインスタンスです。イベントリスナーをクライアントに追加します。現在サポートされているtype
はreceive
のみです。これは、クライアントがサーバーからパケットを受信したときに起動されます。
receive
の場合、コールバックはcallback(clientId, buffer)
の形式になります。 clientId
は認証サーバーによって最初に発行されたクライアント識別子であり、 buffer
Uint8Array
のインスタンスとして受信されたパケットです。
パラメータ:
type
: 上記のサポートされているタイプの 1 つ。callback
: type
に基づいて形式が異なるコールバック。 このホスト拡張コードは、MIT ライセンスに基づいて提供されます。
このプロジェクトの現在の主な目標は次のとおりです。
すべてのプル リクエストは、MIT ライセンスに基づいて利用可能にする必要があります。