Вы можете быть знакомы с играми ryhtm, такими как Dancing Line , Geometry Dash или даже Guitar Hero . У них есть что-то общее: каждое действие в игре синхронизировано с музыкой. Моя цель - создать игру типа Geometry Dash, в которой игрок должен выполнять некоторые действия в ритме, пока персонаж автоматически прокручивает уровень. У меня есть несколько вопросов об этом типе игры:
- Должен ли я поддерживать постоянный FPS, так как он всегда должен синхронизироваться с музыкой?
- Как я могу строить свои уровни с учетом музыки, чтобы обеспечить ее синхронизацию?
Я работаю над Unity с использованием C #.
источник
В качестве альтернативы, если у вас все в порядке с не работать с нуля.
Уже есть готовые ресурсы (в разделе «Расширения редактора / Аудио», например https://www.assetstore.unity3d.com/en/#!/content/54639 (платно) или https://www.assetstore.unity3d.com/en. / #! / content / 39835 (бесплатно)), где вы можете синхронизировать музыкальные треки с событием. В этом примере оружие стреляет в такт музыки.
Если вы хотите узнать, как они работают, попробуйте 1-2 бесплатных и посмотрите на источник.
источник
Unity уже отделяет игровой процесс от частоты кадров. Если вы не забываете всегда использовать
Time.deltaTime
в своих функциях обновления, фактическая частота кадров графики не должна влиять на скорость игрового процесса. Поэтому, когда вы запускаете игру и звуковую дорожку одновременно, они должны оставаться синхронизированными.Что касается проектирования уровней вокруг музыки, есть два подхода:
Процедурный подход. Используйте алгоритмы аудио анализа для автоматической генерации уровней вокруг звуковых дорожек. Самое простое - просто посмотреть на объемные пики. Это уже должно позволить вам идентифицировать удары барабанов во многих песнях и создавать препятствия соответственно. Следующим шагом является обнаружение сдвигов объема отдельно в разных частотных спектрах. Это делает обнаружение ударов более надежным и позволяет создавать различные препятствия для разных полей. Но это все еще только царапает поверхность. Аудиоанализ - очень широкая и интересная область. Люди написали много научной литературы об этом.
Насколько глубоко вам нужно погрузиться в это поле, зависит от ваших амбиций. В некоторых играх достаточно просто определять удары и генерировать случайным образом все остальные элементы дизайна уровней ( Crypt of the Necrodancer ). Другие пытаются поставить как можно больше аспектов дизайна уровней под контроль звука ( Audiosurf ).
Многие ритм-игры используют гибридный подход. Вы создаете первый черновик уровня, используя генератор, а затем настраиваете его вручную, чтобы сделать его более играбельным.
источник
Time.time
вместо этого.Очень распространенным является подход к созданию «карты ударов». Любые данные, которые представляют ритмы в песне. Это может быть текстура, файл данных или что-то еще, что содержит эту информацию. Большую часть времени он создается вручную для создания различных ударов и комбинаций, версий скоростей для звуковой карты.
Однако он может быть сгенерирован процедурно из данных аудиофайла.
Как получить скорость, соответствующую «точке удара»? Когда порождать объект?
Speed = Distance / Time
,Distance =
Расстояние между точками создания GameObject и «точки удара».Time =
Длина звука и построенная карта битов должно быть достаточно. С помощью этой информации вы можете анализировать данные аудио / карты, чтобы предсказать, когда объект должен быть создан для достижения точной точки. Теперь все зависит от того, когда вы хотите порождать этот объект, если вы хотите, чтобы он был очень быстрым после появления, тогда вы вызываете его позже с большой скоростью. Если вы хотите, чтобы он работал с нормальной скоростью - тогда ему понадобится время, чтобы дойти до плеера, а для воспроизведения звука нужно время.Вы даже можете создать новую карту с метками времени для появления объектов битов для конкретной звуковой карты. Вы должны сделать некоторые прогнозы в какой-то момент, чтобы иметь возможность соответствовать ритму, для самого популярного стиля, я бы сказал, чтобы предсказать
when
появление объекта, чтобы он перемещался с определенной вероятностьюspeed
. Они могут быть сделаны во время выполнения, или считаны из некоторого файла, рассчитанного ранее, или сохранены в RAM ...Я полагаю, что в играх
Osu
этого нетDistance
, просто время сокращения кругов, ударов в минуту ... Карты обычно создаются на заказ. Таким образом, подход к вычислению визуальных эффектов зависит также от стиля игры, которую вы делаете.Таким образом, чтобы подвести итог всего, значения являются взаимозависимыми. Зависит от того, сколько ударов у вас есть, на расстоянии между точкой возрождения и игроком, а иногда зависит от предоставленных данных [в некоторых играх скорость каждого удара и его внешний вид закодированы в некотором файле данных, который создается вручную]. Если вы делаете это процедурным способом, то вы можете вычислить все в основном, используя аудиоданные.
источник