SteamVoip - stingray.SteamVoip 네임스페이스 참조 - Stingray Lua API 참조

stingray.SteamVoip 네임스페이스 참조

설명

Steam을 사용한 음성 통신의 시작점입니다.

음성 통신에 사용되는 인터페이스는 세 가지입니다.

  • SteamVoip: 룸과 클라이언트를 생성할 수 있는 전역 음성 시스템입니다.
  • SteamVoipRoom: 룸은 클라이언트 간 통신을 위한 호스트입니다. 동일한 룸에 있는 클라이언트끼리 대화할 수 있습니다.
  • SteamVoipClient: 동일한 룸에 있는 클라이언트 간 음성을 송신하고 수신해주는 녹음 및 재생 엔티티입니다.

음성 통신을 사용하려면 먼저 룸을 생성해야 합니다.

그런 다음, 모든 프레임에서 음성 시스템을 업데이트해야 이후에 클라이언트와의 통신이 설정됩니다.

클라이언트만 녹음 및 재생을 처리하기 때문에 이 단계에서는 어떠한 음성도 녹음되지 않습니다. 서로 다른 컴퓨터에 두 개의 클라이언트를 생성해야 합니다. 룸 생성자인 호스트도 원하는 경우 클라이언트를 생성할 수 있습니다. 호스트만 룸에 피어를 추가할 수 있고, 다른 피어는 룸에 참여하려면 룸 ID를 알아야 합니다. 그러므로 하나는 참여 요청용으로, 다른 하나는 참여 수락용으로 두 개의 RPC를 설정하는 것이 좋습니다.

클라이언트를 생성하려는 피어는 호스트에게 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 시스템도 업데이트해야 합니다. 그리고 참여 중인 구성원들에게 알리기 위한 콜백 오브젝트를 제공합니다.

SteamVoip.update(callback_object)

새로운 피어가 룸에 추가되면 연결되어 있는 모든 클라이언트가 콜백을 수신하고, 클라이언트는 재생할 팀파니 이벤트와 이 이벤트에 대해 재생할 사운드 소스에 관한 정보를 통해 이 콜백에 응답해야 합니다. 팀파니 이벤트는 음성에 대한 볼륨 등을 설정하기 위해 존재해야 하는 더미 이벤트입니다.

함수

매개변수
이 함수는 어떠한 매개변수도 수용하지 않습니다.
반환하는 항목

string

생성된 룸의 ID입니다.

매개변수

room_id :

string

삭제하려는 룸의 ID입니다.

반환하는 항목
이 함수는 아무 값도 반환하지 않습니다.
매개변수

host_peer_id :

string

룸 호스트의 ID입니다.

room_id :

string

참여하려는 룸의 ID입니다.

반환하는 항목

stingray.SteamVoipClient

지정된 룸에 대한 이 피어의 연결을 관리하는, 새로 생성된 클라이언트입니다.

매개변수

client :

stingray.SteamVoipClient

연결을 관리하는 클라이언트입니다.

반환하는 항목
이 함수는 아무 값도 반환하지 않습니다.

지정된 클라이언트를 삭제합니다.

매개변수

callback_object :

table

룸 멤버쉽 변경에 응답하기 위해 호출하는 콜백 함수 세트를 포함하고 있는 테이블입니다.

반환하는 항목
이 함수는 아무 값도 반환하지 않습니다.

콜백 오브젝트는 다음 콜백을 수신합니다.

  • room_member_added(room_id, peer_id): timpani_world, event, sound_source? : 새 클라이언트가 룸에 입장하면 호출됩니다. 새 클라이언트의 음성을 재생하려면 필요한 정보를 반환해야 합니다. 먼저, 그 안에서 사운드를 재생하는 [TimpaniWorld]를 [stingray.World.timpani_world()]에 의해 반환되는 대로 제공합니다. 그런 다음, 음성을 시작하기 위한 팀파니 이벤트를 제공합니다. 이 이벤트는 재생되지 않는 더미 사운드에 대한 이벤트일 수 있습니다. 마지막으로 표준 내 어디에서 사운드를 듣게 되는지를 나타내는 참조를 제공해야 합니다. 다음 유형 중 무엇이든 사용하여 사운드 소스를 지정할 수 있습니다.
    • nil: 이벤트가 2D 사운드 소스로 트리거됩니다.
    • Unit, object_index?: 지정된 유닛(및 오브젝트(지정된 경우))에 링크된 팀파니 이벤트를 트리거합니다.
    • Matrix4x4 : 지정된 포즈에 링크된 팀파니 이벤트를 트리거합니다.
    • Vector3, Quaternion?: 지정된 위치와 선택적 회전에서 재생되는 팀파니 이벤트를 트리거합니다.
    • sound_source_id: 이전의 [TimpaniWorld.trigger_event()] 호출에 의해 반환된 사운드 소스에 대한 이벤트를 트리거합니다.
  • room_member_removed(room_id, peer_id): 클라이언트가 룸에서 나가면 호출됩니다.