Блог

четверг, 18 января 2018 г.

Звук и музыка в GameMaker, как добавить?

Привет. Сегодня в блоге Econ Dude я продолжаю покрывать базовые функции движка для создания игр GameMaker Studio. В этой статье расскажу про звук и музыку.

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

В качестве примера я могу посоветовать вам открыть исходник моей игры Lonley Dude, там в принципе всё уже есть и показано. Звуки стрельбы, фоновая музыка и т.д.

Но если вы хотите сделать всё с нуля - читайте.

Итак, давайте добавим звук выстрела, это самый простой пример.

Как сделать стрельбу я уже рассказывал, вот давайте теперь определимся, мы проигрываем звук в момент создания пули, либо в какой момент? Это нюансы на самом деле и я обычно делаю звук выстрела в момент создания пули, у неё в create (event).

Как-то так тупо:

Звук и музыка в GameMaker, как добавить?

Картинка кликабельна
Это если делать через drug and drop и конструктор

Мы выбираем какой звук проигрывать, луп или нет, вот и всё.

Луп (loop) - означает повторение. Если это истина (true), то звук будет проигрываться постоянно. Как только он заканчивается, он начинает играть опять.

Может быть полезно для фоновой музыки.

Но прежде чем выбрать звук, который мы будет проигрывать, нужно этот звук создать. Вот тут есть нюансы и некоторые проблемы.

Загружать звуки нужно вот тут, специальная папка в GM - sounds:

Звук и музыка в GameMaker, как добавить?

Создаём новый звук и выбираем звуковой файл

Я ставлю всегда Uncompressed (не сжатый), так-как сжатый у меня почему-то не работает. Тут какие-то глюки с GameMaker Studio 1.4.1760 и более ранними версиями.

Так-же у меня бывают проблемы если я использую новую звуковую систему.

Это переключается в настойках:

Звук и музыка в GameMaker, как добавить?

Лично я галочку тут не ставлю (use new audio engine)

Честно вам скажу, я не знаю, чем отличается старая звуковая система ГМ, от новой, и какая там конкретно механика работы.

Я просто знаю, что в старой системе глюков у меня нет, а в новой они бывают. Как чинить глюки не знаю, просто говорю метод, который у меня работает.

Вы можете поиграться с настройками звука, изменить частоту, еще что-то, можно менять громкость, если у вас новый звуковой движок.

У меня раньше работал он, но потом почему-то крякнулся.

Однако, есть код, который вам позволит добавить функциональности звукам в игре, про это я тоже расскажу в этой статье.

Так-же звук можно добавить (проиграть) с помощью кода:

Звук и музыка в GameMaker, как добавить?

Функция: sound_play()

Вообще, код, синтаксис и функции такие:

  • sound_exists
  • sound_get_name
  • sound_play
  • sound_loop
  • sound_stop
  • sound_stop_all
  • sound_isplaying
  • sound_volume
  • sound_fade
  • sound_global_volume

Это функции старой звуковой системы (Legacy Sound), которая таки работает и сейчас, и которую я использую до сих пор. 

Новых функций куча, но я, к сожалению, их не знаю. Хотя беглое чтение справки говорит мне о том, что новые функции довольно простые (логика та-же, к примеру: audio_play_sound()), только там дают менять приоритетность, можно запускать трек в определённый момент (вот это крутая функция...), и есть еще куча фич.

Я вам вот так скажу, если у вас какие-то дополнительные вопросы по звуку, вам нужно продвинутое его использование и продвинутые функции, напиши мне в паблике, задайте вопрос в специальном обсуждении:


Или просто в комментах под этой статьёй. 

Я постараюсь ответить и разобраться в вашей проблеме.

Ок, вернёмся к базовым функциям.

Вам может понадобиться кнопка и функция отключения звуков в игре вообще, это есть у меня почти в любой игре, которую я делал (список моих игр).

Изучите как делать кнопки и элементы меню, а потом просто вешайте на них функцию включения и выключения звука. Я это делаю с помощью уменьшения общей громкости до нуля, это и будет выключением звуков в игре.

Звук и музыка в GameMaker, как добавить?

В данном случае всё немного через жопу и китайский код, как мы любим, но суть в функции: sound_global_volume(0)

Обычно я ставлю общую громкость изначально 0.5, а нет звука = 0.

Так-же не забывайте при выключении звука все остановить, сколдовав:

sound_stop_all()

Это вам нужно чтобы заткнуть уже играющую фоновую музыку.

Я думаю логика вам уже понятна. К примеру если нужен звук смерти врага, добавляете его, потом в событии смерти врага добавляете этот звук, всё очень просто.

Очень давно делал я видео про звуки, но оно крайне старое и не очень хорошее, тем не менее можете глянуть, там я те-же сами вещи по сути рассказываю:



В целом вот и всё руководство.

Другие статьи про созданию игр и геймдев вот тут: