🇺🇦 Домой

Делаю клон Guitar Hero, Часть 1 из ???

Во времена, когда все игрались в рок-звёзд с пластиковыми инструментам, игры в которых не одна лишь гитара была (а целый бэнд) - в своих чартах обычно забивали партии ударки, вокальчик, бас и гитарку (А в RB3 еще и PRO-гитарку, клавиши, PRO-клавиши, PRO-ударку и вокальные гармонии).

Со всей этой информацией можно не одну, а сразу несколько игр играть. Кто имел счастье поиграть rock band blitz или rock band unplugged для psp (лего для nintendo ds) - знает о чём я. Вместо одного note highway-я - 4, по одному на каждый инструмент, и ты между дорожками постоянно переключаешься, постукивая то за ударника, то за певца. В Clone Hero, самом популярном сегодня клоне Guitar Hero, этого режима из blitz попросту нет, да и в phase shift не было, вот я и подумал покопаться-попробовать.

Сам note highway сделать, управление и коллизии с нотами при нажатии - easy.

Реальный вопрос был - парсинг чартов существующих. Есть много форматов чартов для таких игр. Вот несколько навскидку:

  • Phase Shift играл midi-файлики из Rock Band-а + ogg файлы для стемов песни
  • Guitar Hero 3 PC использовал .chart
  • Есть .con для rock band-ов, который наверняка очень похож на Phase Shift-овый
  • Есть 6-lane чарты для GH:Live, клон хиро их поддерживает, чё внутри - не знаю.
  • В теории можно и чарты для Stepmania какие-то адаптировать, было бы желание.

Со всеми этими раскладами, раз игру я хочу делать с несколькими инструментами, я решил читать чарты для phase shift, скачал песню All Star группы Smash Mouth, и понеслась!

song folder structure

В ch.dat да и song.ini - ничего шибко полезного не будет, ogg-файлы - это стемы, изолированные треки инструментов чтоб в случае "не попадания" - не играть выбранный инструмент какое-то время (ну и чтоб ремиксы с пацанами пилить потом в эйблтоне!)

Весь основной замес - в notes.mid!

Потанцевал я вокруг него часик, со словами "куда ж тебя" и "откуда ты это сказал" и решил, что для начала - нарисую все НОТЫ из файлы с таймкодами. Мол на какой секунде какая нота играет. И здесь первый "шок" случился.

В формате миди любые события (note on, note off, мета-события всякие итд) - время хранят как дельту ТИКОВ между текущей нотой и предыдущей. Тики - определенная дробная доля от одной четвертушки в 4/4, ну или любогой размерности тащемта, в зависимости от песни.

Чтоб это преобразовать во ВРЕМЯ нужно знать BPM песни, ТЕМП (в миди темп - это длительность одной четвертушки в микросекундах) и нужно следить за tempo maps, так как в песне bpm, темп и размерность могут меняться по-ходу, соответствующим миди-событием которое темп этот установит.

Я так посмотрел на это всё дело, попробовал чёт поумножать и в файл попечатать - выглядело крайне бредово, даже если правильно. Нот было чёт ОЧЕНЬ МНОГО, хотя в гитар хиро всего 5 лейнов, как понять где ноты чтоб играть В БАРАБАНЩИКА, а где ноты чтоб играть В ПЕВЦА - тоже было нифига не ясно.

Проблему со временем я решил путём добавления в проект c# библиотеки drywetmidi - таи все этим преобразования со временем есть, велосипед изобретать в 2020 не надо, радостно.

Всем кто свой велосипед изобретает сам и байты перемножает - приветик.

Разобраться как в 1 файле хранятся все ноты - помогла старая вики для Rock Band Network. Когда-то Harmonix разрешали самому чартить песни СВОЕЙ ГРУППЫ условной и отправлять им на рассмотрение, вдруг в игру добавят. Вики эту сохранили, и доступна она вот здесь:

http://docs.c3universe.com/rbndocs/index.php?title=Main_Page

Если совсем в-кратце, то в миди файлике есть каналы

У каждого есть мета-ивент Track Name, у каналов которые в игре можно ИГРАТЬ эти Track Name стреляют как

  • PART GUITAR
  • PART BASS
  • PART VOCAL
  • PART DRUMS

итд, плюс есть дополнительные дорожки с информацией о том, что по-ходу песни происходит на сцене с 3д человечками, и как им под-песню танцевать (ноты тригерят анимации разные)

Если взять условный PART GUITAR и сдампить его в текстовый файл - нот разных в нём будет не 5, а 20+. Связано это с тем, что в игре есть уровни сложности. Скажем 5 нот от 96 (C6) до 100 (E6) - это сложность EXPERT, а то же на октаву ниже 84 (C5) до 88 (E5) - это HARD итд. Ко всему этому в самой дорожке PART GUITAR есть ноты, которые показывают В КАКОМ МЕСТЕ 3д-модельке твоего гитариста держать гриф (аж 12 позиций).

Вот до чего я дошёл: можно играть песенку!

  • Cложность и инструмент пока захардкожены
  • путь к песенке захардкожен
  • ПОПАДАНИЕ в ритм - я сделал с окном +-200мс, это очень много, понятно, грэйдинг нужно сделать

Планы на части 2 и 3 этой статьи:

  • управление с джойстика
  • састейны (все ноты сейчас игнорят note off, для тех ноток где надо "тянуть" састейн)
  • 4 хайвея вместо 1го
  • менюшечки
  • ну и полиш всякий

Всем спасибо кто читал, пишите комменты хоть куда-нибудь.

25-08-2020, videogame, rhythm game, guitar hero, rock band, unity, gh, rb