음성 채팅

*이 콘텐츠는 AI(베타)를 사용해 번역되었으며, 오류가 있을 수 있습니다. 이 페이지를 영어로 보려면 여기를 클릭하세요.

음성 채팅은 자신과 다른 플레이어 간의 실시간 음성 통신을 가능하게 하는 기능입니다. 최대 100명의 플레이어를 지원하는 장소에서만 사용할 수 있습니다.

게임 내에서 음성으로 채팅하는 두 사용자.

음성 채팅 활성화

음성 채팅은 최대 100명의 플레이어를 지원하는 모든 새로운 게임에서 인증된 13세 이상의 사용자에게 기본적으로 활성화되어 있습니다. 음성 채팅을 활성화해야 음성 인식 API를 사용할 수 있습니다.

기존 게임에서 음성을 활성화하거나 새로운 게임에서 비활성화하려면:

  1. Studio에서 게임을 엽니다.
  2. 파일경험 설정을 엽니다.
  3. 창 왼쪽의 통신 탭으로 이동합니다.
  4. 음성 채팅 활성화를 원하는 설정으로 전환합니다.
  5. 선택 사항
    게임 내에서 플레이어 간의 더 나은 소통을 위해, 자격이 있는 플레이어가 자신의 아바타를 움직임으로 애니메이션화할 수 있도록 카메라 활성화를 켭니다.
  6. 변경 사항을 저장하려면 장소를 게시합니다.

최대 플레이어 수 설정

장소의 최대 플레이어 수를 100명 이상으로 설정한 경우, 음성 채팅을 지원하기 위해 이를 줄여야 합니다.

  1. 크리에이터 대시보드에서 게임을 선택한 다음 구성장소로 이동합니다.
  2. 원하는 장소를 선택한 다음 왼쪽 열에서 접근으로 이동합니다.
  3. 최대 방문자 수에 100 이하의 숫자를 입력합니다.
  4. 변경 사항 저장 버튼을 클릭합니다.

장소의 최대 플레이어 수를 100명 미만으로 업데이트하면, 이미 다른 높은 숫자로 구성된 서버가 있을 수 있습니다. 이러한 서버는 음성 채팅을 지원하지 않으므로, 서버를 재시작하는 것이 좋습니다.

음성 동작 사용자 정의

음성 채팅은 기본적으로 근접 기반으로 설정되어 있어, 참가자 간의 거리와 가까운 정도에 따라 볼륨이 조정됩니다. 그러나 UseAudioApiEnabled로 설정하여 게임 내에서 음성이 설정되고 사용되는 방식을 제어할 수 있습니다.

VoiceChatService가 이미 나타나지 않는 경우:

  1. 탐색기 창에서 마우스 오른쪽 버튼을 클릭하고 컨텍스트 메뉴에서 **서비스 표시…**를 선택합니다.

  2. 팝업 창에서 VoiceChatService를 선택하고 삽입을 클릭합니다. 서비스가 탐색기 계층에 나타납니다.

    탐색기 계층의 VoiceChatService
  3. VoiceChatService가 선택된 상태에서 속성 창에서 UseAudioApiEnabled로 설정합니다. 이는 이미 설정되어 있을 수 있습니다.

팀 기반

팀원만 서로 들을 수 있는 Team 기반 채팅을 구현하려면, ServerScriptService 내에 다음 Script를 사용할 수 있습니다:

팀 채팅
local Teams = game:GetService("Teams")
local function findAudioInput(forPlayer : Player) : AudioDeviceInput?
-- 각 플레이어당 하나의 AudioDeviceInput만 있다고 가정, Player 객체에 부모가 설정됨
-- VoiceChatService.EnableDefaultVoice가 true인 경우 제공됩니다
-- AudioDeviceInput 객체가 다른 곳에 위치하는 경우 일반성을 위해 재작업해야 할 수 있습니다
return forPlayer:FindFirstChildWhichIsA("AudioDeviceInput")
end
local function onTeamChanged(player : Player)
local team = player.Team
if not team then return end
local device = findAudioInput(player)
if not device then return end
-- 팀원만 서로 들을 수 있도록 허용
device.AccessType = Enum.AccessModifierType.Allow
local allowed = {}
for _, player : Player in team:GetPlayers() do
table.insert(allowed, player.UserId)
end
device:SetUserIdAccessList(allowed)
end
local function onTeamAdded(team : Team)
team.PlayerAdded:Connect(onTeamChanged)
team.PlayerRemoved:Connect(onTeamChanged)
end
for _, team : Team in Teams:GetTeams() do
onTeamAdded(team)
end
Teams.ChildAdded:Connect(function(child : Instance)
if child:IsA("Team") then
onTeamAdded(child)
end
end)

비공간적

게임의 필요에 따라, 지리적 위치에 관계없이 동일한 볼륨으로 다른 사람의 목소리를 듣는 것이 더 합리적일 수 있습니다. 기본 음성 채팅을 비활성화하면, 다음 Script를 사용하여 비공간적 음성 채팅을 구현할 수 있습니다:

비근접 채팅
local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
local function wireUp(source : Instance, target : Instance)
local wire = Instance.new("Wire")
wire.SourceInstance = source
wire.TargetInstance = target
wire.Parent = source
end
-- 모든 플레이어의 음성을 위한 전역 볼륨 슬라이더 설정
local volumeSlider = Instance.new("AudioFader", Workspace)
local output = Instance.new("AudioDeviceOutput", Workspace)
wireUp(volumeSlider, output)
local function onPlayerAdded(player : Player)
local device = Instance.new("AudioDeviceInput", player)
device.Player = player
-- 각 새로운 플레이어의 마이크 입력을 전역 볼륨 슬라이더로 라우팅
wireUp(device, volumeSlider)
end
for _, player in Players:GetPlayers() do
onPlayerAdded(player)
end
Players.PlayerAdded:Connect(onPlayerAdded)
LocalScript
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local function onDescendantAdded(descendant : Instance)
if descendant:IsA("Wire") then
descendant:Destroy()
end
end
for _, descendant in player:GetDescendants() do
onDescendantAdded(descendant)
end
player.DescendantAdded:Connect(onDescendantAdded)

장소별 비활성화

게임 내 모든 장소에서 음성 채팅을 활성화하고 싶지 않은 경우, 음성 채팅이 가능할 장소 내에서 비활성화할 수 있습니다.

게임 내 특정 장소에서 음성 채팅을 비활성화하려면:

  1. 탐색기 창에서 마우스 오른쪽 버튼을 클릭하고 컨텍스트 메뉴에서 **서비스 표시…**를 선택합니다.

  2. 팝업 창에서 VoiceChatService를 선택하고 삽입을 클릭합니다. 서비스가 탐색기 계층에 나타납니다.

    탐색기 계층의 VoiceChatService
  3. VoiceChatService가 선택된 상태에서 속성 창에서 EnableDefaultVoice를 비활성화합니다.

  4. 변경 사항을 저장하려면 장소를 게시하고, 현재 게임을 실행 중인 모든 서버에 대해 변경 사항이 적용되도록 서버를 재시작합니다.

상태 확인

플레이어가 음성 채팅을 활성화했는지 확인하려면, LocalScript에서 IsVoiceEnabledForUserIdAsync()를 호출하거나, RunContextEnum.RunContext.Client로 설정된 Script에서 호출할 수 있습니다.

클라이언트 스크립트 - 음성 채팅 상태 확인
local Players = game:GetService("Players")
local VoiceChatService = game:GetService("VoiceChatService")
local localPlayer = Players.LocalPlayer
local success, enabled = pcall(function()
return VoiceChatService:IsVoiceEnabledForUserIdAsync(localPlayer.UserId)
end)
if success and enabled then
print("음성 채팅이 활성화되었습니다!")
end
©2026 Roblox Corporation. Roblox 및 Roblox 로고, 'Powering Imagination'은 미국 및 기타 국가 내 당사의 등록 및 미등록 상표입니다.