음성 채팅

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

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

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

음성 채팅 활성화

음성 채팅은 최대 100명의 플레이어가 있는 모든 새로운 게임에 대해 인증된 13세 이상의 사용자에게 기본적으로 활성화되어 있습니다. 기존 게임의 음성을 활성화하거나 새로운 게임의 음성을 비활성화하려면:

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

이 설정을 활성화하면, 적격한 13세 이상의 사용자는 귀하의 게임에서 음성 채팅을 선택적으로 사용할 수 있습니다. 음성 채팅을 활성화해야 음성 인식 API를 사용할 수 있습니다.

최대 플레이어 수 설정

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

  1. 경험 설정 창의 왼쪽 내비게이션에서 장소를 선택합니다. 게임 내 모든 장소가 표시됩니다.
  2. 100명 이상의 플레이어가 있는 장소 옆의 버튼을 클릭한 후 장소 구성을 선택합니다.
  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)

비공간적

게임의 필요에 따라, 지리적 위치와 관계없이 다른 사람의 음성을 동일한 음량으로 듣는 것이 더 의미 있을 수 있습니다. 기본 음성 채팅을 비활성화한 후, ServerScriptService 내에서 다음 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)
로컬 스크립트

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'은 미국 및 기타 국가 내 당사의 등록 및 미등록 상표입니다.