Steam を使用したボイス コミュニケーションの開始点です。
音声通信に使用される、次の 3 つのインタフェースがあります。
- SteamVoip: これはグローバルな音声システムであり、この中でルームやクライアントを作成できます。
- SteamVoipRoom: ルームは、クライアント間通信のためのホストです。同一のルーム内のクライアントは互いに通信できます。
- SteamVoipClient: 録音および再生を行うエンティティであり、同一のルーム内の他のクライアントとの間で音声を送受信します。
音声通信を使用するには、最初にルームを作成する必要があります。
次に、音声システムをフレームごとに更新して、以降にクライアントとの通信を許可する必要があります。
クライアントのみが録音および再生を処理するため、この段階では音声は録音されません。異なるコンピュータ上で 2 つのクライアントを作成する必要があります。ルームの作成者(ホスト)は、希望のクライアントを作成することもできます。ホストのみがルームにピアを追加できます。また、他のピアがルームに参加するにはルーム ID を知る必要があります。したがって、2 つの RPC を設定し、1 つを参加要求用に、1 つを参加受け入れ用にすることをお勧めします。
クライアントを作成するピアは、ホストに RPC を送信します。
RPC.want_to_join_room(host)
ホストは RPC を処理し、ピアをルームに追加することで応答し、ピアが参加するルームを示す RPC を返送します。
function CallbackObject:want_to_join_room(sender)
SteamVoipRoom.add_member(self.room_id, sender)
RPC.accept_join_room(sender, self.room_id)
end
ピアは、受け入れ RPC を処理し、受け入れ時にはルームに参加する必要があります。
function CallbackObject:accept_join_room(host, room_id)
self.client = SteamVoip.join_room(host, room_id)
end
これにより、ホストに加え、クライアントのピアも VoIP システムを更新しなければならなくなります。ピアは、メンバーに参加することを通知するためのコールバック オブジェクトを提供します。
新しいピアがルームに追加されるとき、すべての接続済みクライアントは、再生する Timpani イベントおよびイベントで再生される音源の情報とともに、応答が必要なコールバックを受信します。Timpani イベントは、ボリュームや音声などのための設定に存在する必要があるダミーのイベントです。
|
ルームを作成し、それに対して一意の識別子を返します。
|
|
指定したルームを破壊します。
|
パラメータ room_id : | string | 破壊するルームの ID です。 |
戻り値
|
join_room ( host_peer_id, room_id ) : stingray.SteamVoipClient
指定したルームにピアを参加させます。
|
パラメータ host_peer_id : | string | ルームのホストの ID です。 |
room_id : | string | 参加する部屋の ID です。 |
戻り値
|
ルームを退出します。
|
パラメータ 戻り値
指定したクライアントを破壊します。
|
音声システムを更新します。
|
パラメータ callback_object : | table | ルームのメンバーシップの変更に対応するために呼び出されるコールバック関数のセットを含むテーブルです。 |
戻り値
コールバック オブジェクトは、次のコールバックを受信します。
- room_member_added(room_id, peer_id): timpani_world, event, sound_source? : これは、新しいクライアントがルームに入った場合に呼び出されます。新しいクライアントの音声を再生するために必要な情報を返す必要があります。まず、再生する[TimpaniWorld]を入力します([stingray.World.timpani_world()]によって返される)。次に、Timpani イベントを指定して音声を再生します。これは、再生されない、ダミー サウンドのイベントにすることができます。最後に、ワールド内のどこでサウンドが再生されるかを示すための参照を指定する必要があります。次のいずれかのタイプを使用して、音源を指定できます。
- nil: イベントは、2D 音源としてトリガされます。
- Unit, object_index?: 指定したユニット(および指定する場合はオブジェクト)にリンクされた Timpani イベントをトリガします。
- Matrix4x4 : 指定したポーズにリンクされた Timpani イベントをトリガします。
- Vector3, Quaternion?: 指定した位置およびオプションの回転で再生される Timpani イベントをトリガします。
- sound_source_id: 以前の [TimpaniWorld.trigger_event()] 呼び出しによって返される音源のイベントをトリガします。
- room_member_removed(room_id, peer_id): これは、クライアントがルームを退出するときに呼び出されます。