Как сделать игру в Construct 2? Добавление музыки и звуков
В первых четырёх статьях вы узнали, как создать проект, оформить уровни, сделать меню, сохранить прохождение. Но сейчас наша игра лишена звука. В этой пятой статье мы добавим в игру звуковые эффекты и фоновую музыку.
Поиск или создание звуков и музыки для игры
Музыкальное и звуковое оформление игр играет очень важную роль в восприятии пользователем игрового процесса. В игру важно добавить и фоновую музыку, и звуки, привязанные к тем или иных событиям происходящих в игровом процессе. Здесь есть два пути по добыче музыки и звуков: поиск готовых платных или бесплатных треков или их создание.
Купить готовые музыку и звуки можно, например, в магазине Scirra Store. Но есть и бесплатные места. Например, на сайте open.commonly.cc вы найдёте музыку, спрайты, исходные коды и другие материалы из нескольких популярных игр, которые отдаются в свободное использование любому желающему по лицензии Creative Commons Zero. Файлы, скачанные с этого сайта, можно копировать, изменять, распространять и использовать даже в коммерческих проектах не спрашивая разрешения. Чтобы это стало возможным, активисты проекта собрали 10000 долларов (все спонсоры указаны на главной странице).
А музыку и звуки с сайта www.freesfx.co.uk разрешается использовать в видеороликах, фильмах, играх, презентациях, на выставках или вебсайтах, но с условием, что вы упомяните этот сайт на своём веб-ресурсе, в игре или видеоролике. Ваш проект может быть некоммерческим или коммерческим, это не играет роли. Все подробности по лицензии можно найти на сайте. Для загрузки файлов нужна регистрация.
Ещё можно поискать звуки на сайте freesound.org. Здесь авторы сами выкладывают звуки. Но будьте внимательны и проверяйте, на каких условиях автор предоставляет свои работы.
Если вам нужен поиск сразу по большому количеству ресурсов, то можете воспользоваться поисковиком звуков FindSounds. Здесь можно не только искать звуки по ключевым словам, но и задать формат, количество каналов, разрядность квантования и частоту дискретизации. Для каждого найденного звука указан источник, поэтому вы можете узнать, на каких условиях можно использовать найденный файл.
Если у вас есть талант, можете создавать музыку самостоятельно или заказать изготовление музыкального оформления у звукозаписывающих студий или музыкантов одиночек.
Использование музыки и звуков в Construct 2
Поскольку производители браузеров не могут договориться о едином аудио формате, который должен использоваться в Интернете, все используемые звуки и музыка перед публикацией игры будут экспортированы в файлы двух форматов: Ogg Vorbis (.ogg) и MPEG-4 AAC (.m4a).
Прежде чем использовать звуки или музыку в проекте, аудио файлы нужно импортировать. Рекомендуется импортировать файлы форматов .wav, .flac, .ogg или .m4a, остальные форматы Construct 2 может просто не суметь конвертировать. Для импорта щёлкните правой кнопкой по папке «Sounds» или «Music» правой кнопкой мышки и выберите, соответственно, пункт меню «Import sounds» или «Import music». В качестве фоновой музыки я решил использовать три мелодии из пакета HalcyonicFalconX в формате .mp3, взятые с сайта open.commonly.cc. Я подсунул файлы конвертеру и получил предупреждения, говорящее о том, что MP3-файлы не могут быть конвертированы в OGG.
Поскольку у меня есть только файлы формата MP3, я воспользовался редактором аудиофайлов Audacity, чтобы преобразовать их в подходящий формат. И после повторной попытки предупреждения исчезли. Выберите здесь качество аудиофайла (я оставил 98 kbps) и нажмите на кнопку «Import».
После импорта вы увидите сообщение о результатах. У меня всё импортировалось успешно. Нажмите «ОК».
После этого посмотрите в папку «Music» и вы увидите, что каждый файл конвертировался в пару файлов форматов .ogg и .m4a.
Аналогичным образом импортируются звуки.
Чтобы после этого использовать импортированные звуки и музыку, нужно один раз добавить в проект объект «Audio». Для этого щёлкните по любому макету правой кнопкой мышки и выберите пункт меню «Insert new object», затем в диалоговом окне выберите «Audio» и нажмите «Insert».
Добавленный объект «Audio», позволит вам управлять воспроизведением звуков и музыки.
Папки «Sounds» и «Music»
Теперь поговорим о том, зачем нужны две папки «Sounds» и «Music». Звуки из папки «Sounds» полностью загружаются до начала проигрывания, а файлы из папки «Music» воспроизводятся в потоке. Это значит, что если вы поместите музыку в папку «Sounds», то прежде чем она начнёт играть может пройти несколько минут, пока она не загрузится. А если вы поместите музыку в папку «Music», то музыка начнёт воспроизводиться почти сразу без ожидания полной загрузки файла.
Кроме того на загрузку аудиофайлов папки «Sounds» влияет свойство проекта «Preload sounds». Если это свойство установлен в «Yes», то звуки будут загружены до запуска игры, пока отображается индикатор загрузки. В этом случае вы можете быть уверены, что во время игры звуки будут запускаться молниеносно без задержек. Если же свойство выставлено в «No», то игра стартует быстрее, ведь звуки загружать не нужно, но аудиофайлы будут загружаться по требованию во время игры. Другими словами, аудиофайл не будет загружен, пока вы не выполните действие Play. Если же вам нужно загрузить часть аудиофайлов сразу, вы можете вызвать действие «Preload» объекта «Audio», например, при старте макета, причём действие «Preload» умеет загружать не только аудиофайлы папки «Sounds», но аудиофайлы папки «Music».
Аудио метки
Во время проигрывания звуков вы конечно захотите менять некоторые параметры воспроизведения, например, громкость. Но одновременно в игре могут воспроизводиться сразу несколько звуков. Для того чтобы воздействовать только на определённые звуки или группы звуков используются метки. Метка – это произвольная строка идентифицирующая звук или группу звуков. Например, звукам оружия игрока присваивается метка «PlayerWeapon», а звукам оружия врагов - метка «EnemyWeapon». После этого вы сможете изменить громкость одной из групп звуков, используя метку. Метки не чувствительны к регистру.
Если в действиях со звуками в качестве метки используется пустая строка (""), то такие действия влияют только на последний воспроизведённый звуковой файл. Это удобно для установки громкости и других параметров воспроизведения только что запущенного аудио файла.
Добавляем фоновую музыку в меню игры
Чтобы запустить фоновую музыку после появления меню на экране, добавьте в событие «On start of layout» на странице событий меню действие «Play» объекта «Audio».
В окне настроек звука выберите нужный аудио файл в поле «Audio file», нужно ли зациклить воспроизведение в поле «Loop» (я пока выбрал «not looping», т.е. не зацикливать), громкость в поле «Volume» (здесь 0 означает максимальную громкость, а числа меньше нуля – насколько децибел нужно уменьшить звук, я пока оставил 0), название ярлыка для звука в поле «Tag» (я пока задам «menu»). Когда всё настроено, нажмите «Done».
Вот что должно у вас получиться.
Запустите игру и удостоверьтесь, что после появления меню на экране, сразу начинает играть музыка. Причём, когда вы переходите на уровень, музыка продолжает играть. Это нас не устраивает. Нам нужно, чтобы при выходе из меню музыка останавливалась, ведь для уровней мы будем использовать другую музыку. Чтобы остановить музыку есть действие «Stop» объекта «Audio». Добавим его в событие «On tap gesture on Level» для тэга «menu» и вот что у вас должно получиться.
Проверим, как это работает. После того как мы выбираем уровень в меню, происходит плавное затемнение, а затем резкая остановка воспроизведения. Это не очень приятно. Нам нужно сделать плавное затухание звука вместе с плавным затемнением экрана. К сожалению, официальных плагинов или эффектов для того, чтобы это сделать не существует. Для тех, кто хочет сделать попроще, есть неофициальный плагин rex_audio_helper. Но здесь мы сделаем всё с помощью стандартных средств.
Итак, после того как пользователь выбрал уровень будем по таймеру понижать громкость, пока меню не исчезнет полностью. После этого будем останавливать музыку. Для того чтобы это сделать, добавьте системное событие «Every X seconds».
При добавлении задайте интервал в 0.1 секунду.
В это событие добавьте действие «Set volume» объекта «Audio».
Это действие будет вызываться у нас несколько раз, и каждый раз будем чуть-чуть понижать громкость, например, на 5 децибел. Т.е. считываем текущее значение, уменьшаем его на 5 и записываем обратно.
Теперь, чтобы звук начинал затухать только когда идёт затемнение меню, нам нужно добавить к событию «Every X seconds» проверку, а есть ли на экране объект «CoverFadeIn», который как раз и делает исчезновение меню. Для проверки, добавим условие «Is on layer».
В следующем диалоге выбираем слой.
В итоге у вас должно получиться так:
Проверьте, как теперь останавливается звук. Запустите программу, подождите, пока начнёт играть музыка, выберите уровень. Вы услышите, что звук затухает плавно.
Теперь давайте справимся ещё с одной проблемой. Когда музыкальный трек проиграл до конца, наступает тишина. Поскольку воспроизведение у нас не закольцованное, то после некоторой паузы будем снова запускать воспроизведение. Для этого добавим на страницу событий «MenuEvents» событие «On ended» объекта «Audio».
В следующем окне укажем метку «menu».
Теперь при получении события о завершении трека, нам нужно сделать небольшую паузу, например, 10 секунд и запустить трек опять. Добавим действия «Wait» и «Play», чтобы получилось вот так:
После этого можете проверить и убедиться, что после того как музыка заканчивается, она начинается снова через 10 секунд. Отличный результат.
Ещё при выборе уровня нужно воспроизвести короткий звук, обозначающий переход на уровень. Для этого я импортировал в проект в папку «Sounds» заранее подготовленный файл «StartLevel.wav» и добавил действие «Play» объекта «Audio» перед тем как меню начнёт затемняться. Получилось вот так:
Теперь при выборе уровня пользователем, проиграет звук «StartLevel.wav», фоновая музыка затухнет и произойдёт переход к уровню.
Добавляем фоновую музыку в уровни
Для фона уровней будем использовать два трека по очереди. Метка у звуков будет «level». При переходе между уровнями музыку останавливать не будем. Также будем запоминать, какой в настоящий момент аудио файл проигрывается, чтобы при следующем запуске игры, начинать воспроизводить этот же трек. Чтобы сделать всё перечисленной, сначала решим, что хранить имя текущего аудиофайла будем в веб-хранилище в ключе «LevelMusic».
Итак, при старте уровня по событию «On start of layout» на странице событий «Event sheet 1» будем проверять, проигрывается ли фоновая музыка, т.е. музыка с меткой «level», и, если музыка не проигрывается, то будем запускать воспроизведение. Причём, перед воспроизведением будем проверять, есть ли в хранилище ключ «LevelMusic», и, если есть, то будем по значению для этого ключа определять, какую мелодию нужно воспроизвести. Выглядеть это будет так:
Теперь нужно сделать запуск другого трека, если текущий закончился. Для этого добавляем событие «On ended» объекта «Audio» на страницу событий «Event sheet 1», затем, если это событие происходит, то берём из хранилища имя аудиофайла и воспроизводим следующий файл. Выглядит это вот так:
И, конечно же, нужно остановить воспроизведение фоновой музыки уровней, если мы возвращаемся в меню. Делаем это аналогично, как и для меню. Но здесь нужно будет останавливать музыку, только, если мы возвращаемся в меню.
Для столкновений я буду использовать звуки металлофона, взятые здесь (звуки предоставляются по лицензии Creative Commons Zero). Импортируем семь звуков в папку «Sounds». Имена файлов будут от 1 до 7. Теперь при столкновениях будем воспроизводить один из семи звуков:
Переменная «LevelStat» здесь добавлена, чтобы сразу после старта уровня, звук не проигрывался. Подробно я здесь не буду останавливаться, смотрите проект. Аналогично будем проигрывать звуки при столкновениях синего и красного шариков друг с другом и при вылете шариков за пределы экрана.
При исчезновении препятствий будем выводить другой звук, взятый здесь и нарезанный на 4 звука с помощью Audacity (лицензия та же Creative Commons Zero):
Добавляем регуляторы громкости музыки и звука
Музыка и звуки воспроизводятся у нас в игре прекрасно, но пользователь может быть хочет сделать музыку потише или выключить музыку и звуки полностью. Я решил сделать раздельную регулировку громкости музыки и звуков в меню игры в виде кнопок. При нажатии на кнопки будем менять громкость следующим образом: выключена, -30, -20, -10, 0. Для каждого уровня громкости я нарисовал соответствующую картинку, таким же образом как рисовал кнопку меню (см. в статье «Как сделать игру в Construct 2? Добавляем меню и сохраняем прохождение игры»). Для каждого режима я сделал один кадр анимации. Объекты я назвал MusicVolumeButton и SoundsVolumeButton.
По событию «On start layout» нужно будет сразу остановить анимацию и выставить кадры, которые должны быть установлены при первом запуске игры на компьютере.
Чтобы хранить текущее состояние громкости я добавил две глобальные переменные MusicVolume и SoundsVolume.
Теперь, сделаем две функции для запуска аудио файлов из папки «Music» и «Sounds». Функции назовём «PlayMusic» и «PlaySounds». Все запуски аудио файлов будем делать через эти функции. В функциях будем проверять текущий уровень громкости и, если он меньше -30, то аудиофайл не будем воспроизводить. На странице «Event sheet 1» функции будут простые.
Если вы обратили внимание, то звук «StartLevel» я сделал тише на 12дб. Так мне показалось лучше.
А вот на странице событий меню «MenuEvents» функция «PlayMusic» будет сложнее. Она будет считывать сохранённые в локальном хранилище номера текущих кадров для картинок MusicVolumeButton и SoundsVolumeButton, если в первом параметре функции значение 1. После считывания номеров кадров она будет устанавливать нужные кадры и вычислять уровень громкости. Описывать переделку вызовов этих функция я описывать не буду. Вы можете посмотреть всё в проекте, скачать который вы можете по ссылке внизу статьи.
Теперь осталось по нажатию на картинки «MusicVolumeButton» и «SoundsVolumeButton» сделать изменение громкости. Этот процесс я здесь тоже не буду описывать подробно, скажу лишь, что здесь я буду циклично менять кадр анимации от 0 до 4-х и затем вызывать функцию ChangeMusicVolume, которая будет менять громкость или выключать звук полностью, в зависимости от уровня громкости. Вот обработка события от нажатия на картинку регулировки громкости музыки «MusicVolumeButton»:
А вот функция «ChangeMusicVolume»:
Аналогично нужно сделать для звуков.
Вот собственно и всё что хотелось написать. Теперь вы знаете, как работать со звуками в Construct 2. Кстати я добавил ещё один уровень в игру.
Проект для этого этапа можете скачать здесь
Проект игры Red and Blue (музыка и звуки) | |
Проект игры Red and Blue для статьи "Как сделать игру в Construct 2? Добавление музыки и звуков". |
|
26.11.2015 14.56 MB 1999 |
1 статья: "Как сделать игру в Construct 2? Создание проекта и первого уровня игры"
2 статья: "Как сделать игру в Construct 2? Оформляем уровень"
3 статья: "Как сделать игру в Construct 2? Добавляем уровни и делаем переходы между уровнями"
4 статья: "Как сделать игру в Construct 2? Добавляем меню и сохраняем прохождение игры"
Tags: Учебники по программированию Как сделать игру в Construct 2? Construct 2