Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Регистрируясь, я даю согласие на обработку данных и условия почтовых рассылок.
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр Битва Героев: RPG - увлекательная игра в жанре РПГ, позволяющая окунуться в невероятный фэнтезийный мир, полный приключений и захватывающих сражений.

Битва Героев: RPG

Приключения, Фэнтези, 2D

Играть

Топ прошлой недели

  • Oskanov Oskanov 9 постов
  • Animalrescueed Animalrescueed 46 постов
  • AlexKud AlexKud 33 поста
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая «Подписаться», я даю согласие на обработку данных и условия почтовых рассылок.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Маркет Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
0 просмотренных постов скрыто
3107
LoliWaifu
LoliWaifu
7 лет назад
Лига Геймеров

Ритм игра для HTC vive⁠⁠

Htc Vive Ритм-игра Круто Видео
392
30
EvilCoGames
EvilCoGames
7 лет назад
Лига Разработчиков Видеоигр

Разработка ритм-игры TERRORHYTHM. "Под капотом", или заметки программиста.⁠⁠

Первый вопрос, который задает себе разработчик, планирующий сделать ритм игру - “А будет ли реально ритм влиять на геймплей?”. Если ответ утвердительный, и разработчику мало простого визуального отклика пары эффектов на сцене, то в самое ближайшее время возникает второй вопрос - “Хочу ли я давать игроку загружать свою собственную музыку?”. Конечно, этот вопрос может возникать, даже если вы делаете просто интерактивную музыкальную сцену, но по-настоящему критичным он становится только для тех, кто привязывает геймплей к музыке. Ведь дать пользователю возможность загружать желаемые трэки - значит вложиться в разработку анализатора и генератора игрового уровня именно по этому трэку, а также проводить объемное тестирование на большом количестве различной музыки, сопровождаемое всесторонней отладкой. А переложить создание уровней на самих игроков и пользователей через Steam Workshop - идея сомнительная, если не имеешь устоявшегося сообщества.

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


Ритм - вот центр нашего геймплея. Тот самый пресловутый BPM (beats per minute), с частотой которого вы качаете головой, или барабаните пальцами по столу под драйвовый трэк. Но чтобы строить игру вокруг ритма, его сначала нужно добыть. Музыка для игрового движка - это по сути всего лишь пачка сэмплов, которые этот движок умеет воспроизводить своими силами, плюс немного информации о них.


Задача извлечения из музыки BPM не новая, даже если игнорировать сегмент ритм-игр, производители DJ-оборудования и программных секвенсеров музыки проделали огромную работу в этом направлении. И даже после всех этих исследований производители часто доверяют определение темпа человеку.

-  стучим по кнопочке CUE в ритм песни, чтобы “вертушка” поймала его


Мы изучили множество публикаций и материалов, прежде чем пришли к какому-то промежуточному решению, которое сработало для нас.


Музыка - сложная звуковая волна, колебания воздуха в вашей комнате, в клубе, или же между мембраной ваших наушников и барабанной перепонкой. Преобразование этих колебаний в нечто мелодичное и ритмичное (то, что наш мозг делает автоматически), требует определенных вычислений. В большинстве своем эти вычисления - быстрое преобразование Фурье, которое представляет комплексный звуковой сигнал в виде суммы синусоид определеных частот и громкостей. Для тех, кому сложно с ходу понять, как кривая связана со звуком, поясним: звуковая волна синусоидальной формы - это простейший музыкальный тембр, знакомый каждому, например, по телефонным гудкам. Частота этой синусоиды - это высота звука, а амплитуда - его громкость. Для наглядности приведем разложение на синусоиды простейших форм звуковой волны:

Конечно, для музыки спектр получаемых частот выглядит куда сложнее, практически по всему спектру есть частоты разной громкости. Хотя, если вы вспомните любой музыкальный спектроанализатор (люди часто ошибочно называют это “эквалайзер”), объяснения не потребуются - это наглядная картина того, во что превращается звук после быстрого преобразования Фурье :)

- громкости звучания частот от низких к высоким слева направо


Так вот благодаря игровому движку, который сделал это преобразование за нас, мы можем работать с музыкой, как с массивом сэмплов (количество которых на секунду зависит от качества и сжатия записи), из которых в каждый момент времени мы можем понять - какие частоты сейчас звучат и с какой амплитудой.


Используя эти данные нам нужно решить несколько задач.

Задача первая и главная - определение BPM песни. К ритму композиции привязаны почти все внутриигровые параметры - от скорости движения и спавна монстров до скорости проигрывания отдельных анимаций и роста комбо-счетчика.


Чтобы определить BPM, нужно сначала понять, что такое бит. Обычно под битом мы понимаем начало короткого повторяющегося музыкального отрезка, зацикливание которого (с небольшими изменениями) задает основной темп песни. Классической основой ритм-секции является сочетание ударных и баса (будь то рок, металл, джаз или электронная музыка). Знание об этом дает нам примерное представление, пики громкости каких частоты мы будем искать в нашей музыке. Наша цель основная цель - диапазон до 120Гц, однако помимо него мы проанализируем еще небольшую полосу в районе 1кГц, где часто “сидят”, например, электро-гитары, поддерживающие ритм секцию.


Во-первых нам нужно понять, в каком диапазоне громкости звучат данные чистоты на протяжении песни, чтобы делать какие-то относительные выводы. Получив значения минимальной и максимальной громкостей, можно приступать к анализу. Если говорить коротко, анализ представляет собой последовательный проход по сэмплам от начала песни к ее концу, сравнивая значения частот на выбранном диапазоне с минимальными\максимальными значениями и между собой. Составив своеобразную “карту перепадов громкости низких частот”, мы стараемся выявить периодические последовательности - пики, повторяющиеся через равные промежутки времени (к счастью для меломанов и к сожалению для анализирующих звук, басовые и ударные партии могут быть сложными и разнообразными). Наиболее часто встречающееся значение такого промежутка мы берем в качестве длительности бита, от которого уже вычисляем BPM.

Анализатор реагирует по-разному на разные песни - разумеется, хаус-музыка, где бас-бочка отбивает четкий постоянный ритм, проще всего поддается анализу. С агрессивными жанрами металла, где барабанщики вытворяют невиданной быстроты и сложности финты, ситуация обратная. Тут как раз нам помогает дополнительная полоса частот, в которой сидят гитары и “рабочий барабан” (самый пронзительный и звонкий из барабанов установки). К тому же не стоит забывать про музыкальные жанры с плавающей размерностью, где музыкальные фразы могут быть разного размера и длины - джаз, матрок и другие.


Еще одним препятствием анализу является компрессия звука. Этот прием пост-обработки музыки сейчас применяется многими продюсерами в различных жанрах. Суть его такова, что разницу между самыми тихими и самыми громкими звуками (т.н. динамический диапазон) в песне намеренно сокращают с целью без потери качества и “перегрузки” оборудования на пиках увеличить конечную громкость записи. Очевидно, что экстремальная компрессия (которой иногда грешат поп и электро продюсеры) может значительно усложнить составление “карты перепадов громкости” и сделать конечный результат анализа слишком неточным.

Для того, чтобы создать еще одну опору алгоритму определения BPM, нами была добавлена синхронизация в процессе проигрывания музыки. Предварительный анализ трэка давал нам усредненные значения, которые мы брали за основу. В соответствии с этими значениями мы устанавливали время бита и запускали главный таймер игры. В процессе воспроизведения музыки мы периодически синхронизируем этот таймер с составленной ранее “карты перепадов”. Если отклонение большое - следующая синхронизация назначается через короткое время и в геймплей вводятся некоторые послабления, чтобы игрок не получал штрафы из-за технической ошибки анализа, если отклонение небольшое - значит все идет хорошо и следующую синхронизацию можно провести позже.


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


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


Ранние посты по разработке игры:

https://pikabu.ru/story/proekt_igryi_terrorhythm_animation_a...

https://pikabu.ru/story/razrabotka_terrorhythm_animatsiya_pr...

https://pikabu.ru/story/razrabotka_igryi_terrorhythm__music_...

https://pikabu.ru/story/komiks_po_igre_terrorhythm_5526003

https://pikabu.ru/story/terrorhythm__vtoraya_igra_ot_evilcog...


Страница игры в Steam: http://store.steampowered.com/app/752380


С уважением,

EvilCoGames Team

evilcogames@gmail.com

Показать полностью 6
[моё] Инди игра Инди-разработка Terrorhythm Steam Ритм-игра Gamedev Длиннопост
1
60
nbvehbectw
nbvehbectw
8 лет назад
Лига Геймеров

Автор сделал битву с боссом из Faster Than Light в Stepmania⁠⁠

И это, черт возьми, выглядит сложнее босса в оригинальной игре.

Faster Than Light Stepmania Ритм-игра Игры Видео
12
nikobraz
nikobraz
9 лет назад

OSU! - Cascada - Bad Boy (Nightcore Mix)⁠⁠

Под настроение скилл прокнул. 2 месяца игры, Logitech G710+, Bloody R7.
[моё] Osu! Музыка Ритм-игра Плохой парень Видео
15
Genebris
Genebris
10 лет назад

Создание ритм-игры на Unity3d, часть 2⁠⁠

Первая часть: http://pikabu.ru/story/_3682203
Создание ритм-игры на Unity3d, часть 2
Показать полностью 1
[моё] Unity Unity3D Rhythmgame Gamedev Ритм-игра Разработка игр Программирование Длиннопост
22
21
Genebris
Genebris
10 лет назад

Создание ритм-игры на Unity3d⁠⁠

Создание ритм-игры на Unity3d
Показать полностью 1
[моё] Unity Unity3D Rhythmgame Gamedev Ритм-игра Разработка игр Программирование Длиннопост
23
37
PsiHamster
PsiHamster
10 лет назад

Что такое OSU?⁠⁠

Что такое OSU?
Показать полностью 1
[моё] Osu! Длиннопост Osu Игры Ритм-игра
37
10
AIIEJIbCUHKA
AIIEJIbCUHKA
11 лет назад

Как у него только пальцы не устают тыкать на клавиши?⁠⁠

Лично у меня уже на второй минуте жутко устают и я сливаю :c
Osu! Ритм-игра Топ Польши Видео
34
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Маркет Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии