Открыть Электронные книги
Категории
Открыть Аудиокниги
Категории
Открыть Журналы
Категории
Открыть Документы
Категории
Введение]]
Вот примеры игр, которые анализируют аудио данные в режиме реального времени и
изменяют геймплей в зависимости от того, как сильно меняется звук с течением
времени. Одни из самых популярных игр такого жанра, это Beat Saber в стиме и Tiles
Hop на андроиде. Если быть точнее, во многих подобных играх расчет звука
производится предварительно, но принцип действия будет таким же, как то, о чем
будет рассказываться дальше.
[тут можно показать видео геймплея каких-нибудь из этих игр]
https://play.google.com/store/apps/details?id=com.amanotes.beathopper
https://play.google.com/store/apps/details?id=com.amanotes.pamarollingtiles2
https://play.google.com/store/apps/details?id=com.dropthebeat.beatblade
https://store.steampowered.com/app/620980/Beat_Saber/?snr=1_5_9__300_1
https://store.steampowered.com/app/235800/Audiosurf_2/
https://store.steampowered.com/app/977950/A_Dance_of_Fire_and_Ice/
[Как пользоваться плагином Runtime Audio Importer. Тут можно показать ноды, как они
работают и т.п.]
Для начала нужно создать объект для импортирования аудиофайлов используя функцию
"Create Runtime Audio Importer". После чего можно привязаться к делегатам
"OnProgress", который можно использовать для отслеживания процесса импортирования,
и "OnResult", который вызывается, когда звуковая дорожка была импортирована. Далее
нужно вызвать функцию "Import Audio From File", где указать путь к аудиофайлу для
импортирования. После чего нужно удостовериться, что звуковая дорожка была успешно
импортирована, используя "Switch" у параметра "Status" в делегате "OnResult",
который должен быть "Success Importing" в успешном случае. После чего можно
воспроизвести звуковую дорожку любым удобным способом. Например через
аудиокомпонент или сразу, через "Play Sound 2D" [в видео можно использовать Play
Sound 2D для простоты]. Очень важно, чтобы в функции для воспроизведения звуковой
дорожки, параметр "Start Time" был равен "0", иначе звуковая дорожка не
воспроизведется. Для перемотки звуковой дорожки в определенный промежуток времени
нужно использовать функцию "Rewind Playback Time". Для того, чтобы узнать, что
звуковая дорожка была полностью воспроизведена, можно привязаться к делегату
"OnAudioPlaybackFinished".
[Касательно предварительного импортирования файлов формата MP3 в редактор, можно
посмотреть эту статью, там некоторые вещи расписаны более подробно -
https://unreal.blog/pre-importing-audio-files]
Так же можно использовать этот плагин для импортирования файлов формата MP3
заранее, в редактор. Он более сжат по сравнению с WAV или OGG, который используется
движком по умолчанию во время импортирования аудиофайлов в редактор. Так же формат
MP3 по сравнению с WAV, который сжимается движком при запаковке проекта, имеет
намного лучшее качество звука.
Для того, чтобы импортировать аудиофайл формата MP3 в редактор, нужно просто
отключить все media player плагины (например Android Media Player) [Эти плагины
можно легко найти по ключевым словам "media player" в графе "Plugins"] и после
обычным drag&drop'ом перенести аудиофайл формата MP3 в редактор. Чтобы
удостовериться, что все импортировалось нормально, достаточно открыть
импортированный ассет и посмотреть указанные параметры, например "Sound duration"
отвечает за продолжительность звука. После чего в блупринтах достаточно создать
"Create Runtime Audio Importer" и вызвать ноду "Import Audio From Preimported
Sound", где выбрать импортированный ассет. Все дальнейшие действия аналогичны тому,
как работает импортирования аудиофайлов в режиме реального времени.
[Как пользоваться плагином Runtime Files Downloader. Тут можно показать ноды, как
они работают и т.п.]
Для начала нужно создать объект для скачивания файлов используя функцию "Create
Downloader". После чего можно привязаться к делегатам "OnProgress", который можно
использовать для отслеживания процесса скачивания. Для этого можно разделить "Bytes
Received" на "Content Length" и получить процент загрузки [Bytes Received и Content
Length нужно перевести по float, а только после делить]. Так же можно привязаться к
"OnResult", который вызывается, когда файл был скачен. Для начала скачивания файла
нужно использовать функцию "Download File", где указать прямую ссылку на файл для
скачивания и путь, куда сохранять скаченный файл. Далее нужно проверить в делегате
"OnResult", был ли файл успешно скачан, используя "Switch" у параметра "Result".