Studio

Звук и музыка в Roblox: как игра начинает звучать

Где взять звуки, чем объёмный звук отличается от фонового, как сделать общий ползунок громкости и почему чужую музыку из интернета в игру заливать нельзя.

Средне 20 минут проверен 1 час назад

Что понадобится

Roblox Studio, умение добавить объект в дерево и запустить тест. Пара строк на Luau — по желанию.

Текст гайда «Звук и музыка в Roblox: как игра начинает звучать»

Содержание

Звук — самая недооценённая часть игры. Шаги, щелчок кнопки, короткий звон при награде — всё это дешевле любой графики, а ощущение «игра живая» даёт мгновенно. Разберём, как это устроено в Roblox, чтобы получилось не громко, а хорошо.

Объект Sound и где он лежит#

Всё звучание в Roblox — это объекты Sound. Один объект — один звук. Важно не что у него внутри, а где он лежит: от этого зависит, услышит игрок звук отовсюду или только вблизи.

Куда положить Sound
Где лежитКак слышноДля чего
Внутри Part или AttachmentОбъёмно: громче вблизи, тише издалиКостёр, мотор, дверь, лающая собака
В SoundService или WorkspaceОдинаково вездеФоновая музыка, гул уровня
Внутри интерфейса, из LocalScriptТолько у одного игрокаЩелчок кнопки, звук награды, ошибка

Правило одной строки

Звук события, которое видит только один игрок (открылось меню, показалась подсказка), должен играть на клиенте. Звук события в мире (взорвалась бочка) — на сервере, внутри детали. Перепутаешь — либо все услышат чужой щелчок, либо взрыв прозвучит у одного человека.

Свойства, которые нужны всегда#

  • SoundId — адрес звука вида rbxassetid://…
  • Volume — громкость; единица уже громко, для фона обычно 0.2–0.5
  • Looped — зациклить; для музыки и гула включают, для щелчка нет
  • PlaybackSpeed — скорость и заодно высота звука; лёгкий разброс делает повторы менее назойливыми
  • RollOffMinDistance и RollOffMaxDistance — с какого расстояния объёмный звук начинает затухать и где замолкает совсем
  • PlayOnRemove — сыграть в момент удаления объекта: удобно для звука разрушения

Проверить звук можно, не запуская игру: выбери Sound в дереве и нажми Play в свойствах. Так подбирают громкость и радиус за минуту вместо десяти перезапусков.

Где брать звуки#

Самый простой и безопасный путь — библиотека самой платформы. В Studio открой Toolbox → Audio и ищи по слову на английском: click, footstep, coin, ambient forest. Это официальные и лицензированные звуки: их можно ставить в игру и не бояться, что материал снимут.

Свой звук тоже можно загрузить — через Creator Hub. Но есть правило, о которое спотыкаются все: загруженный тобой звук по умолчанию доступен только тебе. Чтобы он играл в опыте, у этого опыта должно быть разрешение на использование звука. Если в тесте звук слышно, а у друзей тишина — почти всегда дело именно в этом.

Чужая музыка — прямой путь к бану

Залить в игру трек любимого исполнителя нельзя. Это чужая работа, и Roblox снимает такие загрузки по жалобе правообладателя — вместе с последствиями для аккаунта. Бери музыку из библиотеки платформы, из бесплатных наборов с явной лицензией или пиши свою. Скучно звучит? Лучше скучно, чем без аккаунта.

Громкость по группам#

Как только звуков становится больше десяти, появляется задача: сделать отдельные ползунки для музыки и для эффектов. Для этого есть SoundGroup — общий регулятор. Создаёшь две группы в SoundService, у каждого звука выставляешь свойство SoundGroup, и дальше меняешь громкость одной строкой.

Две группы и общий ползунок · Luau
-- LocalScript: настройки звука у каждого игрока свои.
local SoundService = game:GetService("SoundService")

local music = SoundService:FindFirstChild("Music")
local effects = SoundService:FindFirstChild("Effects")

-- Ползунок в меню настроек передаёт значение от 0 до 1.
local function setMusicVolume(value)
    if music then
        music.Volume = math.clamp(value, 0, 1)
    end
end

local function setEffectsVolume(value)
    if effects then
        effects.Volume = math.clamp(value, 0, 1)
    end
end

setMusicVolume(0.4)
setEffectsVolume(0.8)

math.clamp здесь не для красоты: ползунок в интерфейсе можно случайно увести за границы, а громкость выше единицы даёт хрип вместо музыки.

Звук по событию#

Чаще всего звук нужен не постоянно, а в момент: подобрал монету, открыл сундук, промахнулся. Схема простая — заранее положить Sound туда, где он должен звучать, и вызывать Play().

Монета звенит там, где её подобрали · Luau
-- Script внутри детали-монеты.
local coin = script.Parent
local pickup = coin:WaitForChild("Pickup") -- объект Sound внутри монеты

local taken = false

coin.Touched:Connect(function(hit)
    if taken then
        return
    end

    local character = hit.Parent
    local humanoid = character and character:FindFirstChildOfClass("Humanoid")

    if humanoid == nil then
        return
    end

    taken = true

    -- Звук должен доиграть, поэтому монету не удаляем сразу:
    -- прячем её и убираем после того, как звук закончился.
    coin.Transparency = 1
    coin.CanCollide = false
    pickup:Play()

    pickup.Ended:Wait()
    coin:Destroy()
end)

Удалил деталь — оборвал звук

Самая частая ошибка со звуком: Destroy() сразу после Play(). Звук живёт внутри детали и умирает вместе с ней, поэтому игрок слышит щелчок вместо звона. Либо жди Ended, как в примере выше, либо включи PlayOnRemove и удаляй спокойно.

Чтобы игру не выключили из-за звука#

  • Фоновая музыка не должна быть громче эффектов: игрок пришёл играть, а не слушать
  • Один и тот же звук подряд утомляет — держи два-три варианта или чуть меняй PlaybackSpeed
  • Дай выключить музыку в настройках. Это делают чаще, чем кажется, и лучше пусть выключат её, а не игру
  • Резкие громкие звуки при входе отпугивают: первые секунды должны быть тихими
  • Проверь игру в наушниках и на телефонном динамике — это два разных мира
  • Не ставь звук на событие, которое срабатывает каждый кадр: получится треск

Когда звук на месте, стоит убедиться, что игра не начала тормозить: разбор причин — в гайде «Почему игра лагает». А проверить всё это на разных устройствах поможет гайд про тестирование.

Обсуждение

Пиши по делу и без личных данных. Ссылки на сторонние сайты, обмен и «бесплатные робуксы» мы скрываем — почему.

Комментарии пишут те, кто вошёл — так спокойнее всем.

Войти

Пока никто ничего не написал. Будь первым.