HLFX.Ru Forum
Показать все 14 сообщений этой темы на одной странице

HLFX.Ru Forum (http://hlfx.ru/forum/index.php)
- Технические вопросы (http://hlfx.ru/forum/forumdisplay.php?forumid=20)
-- [gamedev] Генерация объектов на основе ритмов из музыки. (http://hlfx.ru/forum/showthread.php?threadid=5136)


Отправлено FiEctro 02-10-2018 в 11:26:

Хитрота [gamedev] Генерация объектов на основе ритмов из музыки.

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

Интересно ваше мнение, о том как это можно реализовать.

Вот какие у меня мысли на этот счет:
1. Естественно первое что мы делаем это раскладываем нашу музыку на спектр частот.

2. В дальнейшем у нас ставится вопрос, каким же образом на основе этих данных нам генерировать объекты в игре? Допустим у нас будет классический платформер скроллер, где игрок может перемещаться только вверх/вниз, а сама карта прокручиваться справа налево. На этой локации у нас генерируются объекты на основе данных со спектрограммы, которые мы должны в такт с музыкой подбирать или наоборот облетать.

3. Естественно мы не можем спавнить объекты под носом у игрока, поэтому возможно придётся дублировать канал, и пускать его раньше чем реально слышимая музыка, тогда у нас появится и время на анализ, и игрок будет в такт с музыкой взаимодействовать с объектами.

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

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

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

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

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

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

Поэтому решено выло ввести "веса" для каждой из частот персонально, путём банального суммирования их амплитудных значений за каждое изменение.

Однако это все равно не решает проблемы громких кратковременных пиков, т.к. нам понадобится время для того чтобы вес актуальных частот, перегнал этот высер.

7. В дальнейшем есть идеи так же применить фильтры на саму музыку, для средних, низких и высоких частот, в результате чего мы уже получим для каждой из них свою спектрограмму, что несомненно должно повысить точность.

Пока на этом всё, появятся еще соображения, буду писать сюда. Появятся у вас, пишите тоже сюда

__________________
Для организации коллектива надо уметь ссать в уши виртуозно (с) Raid


Отправлено nemyax 02-10-2018 в 14:52:

Цитата:
FiEctro писал:
возникла мысль о создании игрушки способной генерировать игровые объекты в соответствии с ритмом музыки

Какого рода объекты?


Отправлено FiEctro 02-10-2018 в 14:58:

Да любые, либо плюшки которые надо собирать и получать очки, либо наоборот всякие мины которые надо облетать

__________________
Для организации коллектива надо уметь ссать в уши виртуозно (с) Raid


Отправлено ncuxonaT 02-10-2018 в 19:02:

https://store.steampowered.com/app/12900/AudioSurf/
https://store.steampowered.com/app/...rf_2/?l=russian

__________________
...А еще нельзя ли стопку,
Потому как молодец?


Отправлено a1batross 02-10-2018 в 21:01:

Когда-то я писал генератор карт Osu! из звуковых данных. Можешь сыграть(лол, удачи): https://osu.ppy.sh/beatmapsets/632798/#osu

Я не шарю в терминологии, но тебе нужны алгоритмы детектирования beat и onset. Первый я использовал чтоюы считать примерный BPM, второй чтобы искать как раз эти переходы.

Ковырял вот энту библиотеку: http://essentia.upf.edu/documentati...mentation.html. Там есть раздел Rhythm detection, вот один из полезнейших для тебя.


Отправлено XaeroX 03-10-2018 в 00:54:

FiEctro а в чем смысл делать новый Audiosurf? Игрушке же уже лет 10 или даже больше?

__________________
So she began again: 'Où est ma chatte?' which was the first sentence in her French lesson-book. The Mouse gave a sudden leap out of the water, and seemed to quiver all over with fright. 'Oh, I beg your pardon!' cried Alice hastily, afraid that she had hurt the poor animal's feelings. 'I quite forgot you didn't like cats.'


Отправлено a1batross 03-10-2018 в 02:47:

XaeroX притом, сейчас новым аудиосёрфом никого не удивишь. Даже так, скорее всего это будет неинтересно. Потому что алгоритмы не сгенерируют то, что может сделать человек.

Аудиосёрф собственно тем же и страдал. Да, идея на тот момент была новая, но генерируемые карты были просто скучные.


Отправлено XF-Alien 03-10-2018 в 06:21:

FiEctro Играл в Melody's Escape (в стиме есть). По-моему там неплохо так игра анализирует звуковую волну. Хотя я особо не увлекался музыкальными играми, т.е. сравнить особо не с чем. Можешь попробовать связаться с разработчиками и поинтересоваться как и что они там реализовали, но не уверен, что это удачная идея.

Цитата:
XaeroX писал:
а в чем смысл делать новый Audiosurf?

Затем же, зачем и мы делаем PW, который похож на кваку, которой уже 20+ лет. Я бы сказал, оригинальность – не предпосылка винрарности.

__________________
Некоторые вещи требуют больше времени.


Отправлено FiEctro 03-10-2018 в 11:04:

Цитата:
XaeroX писал:
FiEctro а в чем смысл делать новый Audiosurf? Игрушке же уже лет 10 или даже больше?


А где я писал что хочу делать новый Audiosurf? Мне интересно разобраться как это работает, а не филосовствовать "надо оно кому то или нет".

__________________
Для организации коллектива надо уметь ссать в уши виртуозно (с) Raid


Отправлено XaeroX 03-10-2018 в 11:33:

Цитата:
XF-Alien писал:
Затем же, зачем и мы делаем PW, который похож на кваку, которой уже 20+ лет.

В таком широком смысле все 3д-экшены похожи на Кваку, даже четвертый Фоллаут.
Здесь же игра была построена целиком вокруг идеи алгоритма генерации уровней по музыке. Это было забавно первые 10 минут, а потом скучно. И дело было не в игре, а в самой идее, имхо.
Но мне интересно, как FiEctro хочет эту идею развить. Если это будет не Audiosurf - то весьма любопытно, что именно.

__________________
So she began again: 'Où est ma chatte?' which was the first sentence in her French lesson-book. The Mouse gave a sudden leap out of the water, and seemed to quiver all over with fright. 'Oh, I beg your pardon!' cried Alice hastily, afraid that she had hurt the poor animal's feelings. 'I quite forgot you didn't like cats.'


Отправлено FiEctro 03-10-2018 в 13:10:

Цитата:
XaeroX писал:
Но мне интересно, как FiEctro хочет эту идею развить. Если это будет не Audiosurf - то весьма любопытно, что именно.


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

Конечно можно изобрести велосипед самому, но будет ли он лучше тех решений, о которых я пока не знаю - большой вопрос. Пока всё что я нашел, не годится даже для созданий игр уровня аудиосерфа.

Цитата:
XaeroX писал:
Это было забавно первые 10 минут, а потом скучно. И дело было не в игре, а в самой идее, имхо.


Потому что аудиосерф это механника без игры, там не ставится перед игроком особо никаких задач.

__________________
Для организации коллектива надо уметь ссать в уши виртуозно (с) Raid


Отправлено qishmish 31-10-2018 в 11:20:

Не "аудиосерф", а "экстаз"

__________________
Dr. Bowman: "So what was it?"
Sly: "Anachronox! Man, you guys are dumb."
Dr. Bowman: "But... You said it started with a 'U'."
Sly: "Yeah I know."


Отправлено AntiPlayer 31-10-2018 в 18:18:

Мне в Beat Hazard нравилось играть. Намного интереснее, чем Audiosurf, но тоже на пару вечеров.

__________________
I tell you to enjoy life


Отправлено qishmish 31-10-2018 в 21:24:

Хотя стоп, я промахнулся очень сильно.

Тред про влияние игрового звука/музыки на процесс или контент (как в Аудиосерф).

А я же больше про противоположность - чтобы действия игрока больше влияли на звук и музыку. Допустим, ритм стрельбы нашей чтоб задавал BPM, или скорость нашего бега меняла частоту LFO у басов в треке, а может что-то еще можно замутить...

__________________
Dr. Bowman: "So what was it?"
Sly: "Anachronox! Man, you guys are dumb."
Dr. Bowman: "But... You said it started with a 'U'."
Sly: "Yeah I know."


Временная зона GMT. Текущее время 16:50.
Показать все 14 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Chain Studios © 2005-2018