Требования: docs.google.com/document/... Копипаста: Описание Мы с тобой разрабатываем музыкальную ритм-игру в дополненной реальности. Задача пользователя – вживую наносить удары “по воздуху”, попадая в ритм музыки. Чем точнее он попадает в ритм, тем больше очков зарабатывает. Если несколько раз подряд ошибается, то проигрывает. Игроку не обязательно постоянно смотреть в экран телефона или находиться на одном месте – можно произвольно перемещаться в пространстве, главное – оставаться в поле зрения камеры и слушать ритм, нанося удары. Идея взята из тренировок латиноамериканских боксёров, которые отрабатывают ударные комбинации, занимаясь “боем с тенью” под музыку. Платформа Mobile AR, Desktop AR (опционально, обсудить отдельно). Функциональные требования Это требования относятся к раннему прототипу игры, где нужно сфокусироваться только на главной механике, максимально упростив визуальную и контентную части. Перед стартом игры Пользователь должен видеть, под какой музыкальный трек ему предстоит играть: название, исполнитель, длительность, сложность, BPM. Пользователь должен иметь возможность начать игру, нажав на кнопку. Во время игровой сессии Звук Музыкальный трек должен включаться сразу при запуске сессии, так чтобы пользователю не нужно было лишний раз нажимать кнопки во время игры. Каждый удар игрока (успешный и неуспешный) должен сопровождаться звуком, чтобы не приходилось отвлекаться на экран во время игры, и полностью ориентироваться на слух. Пользовательский интерфейс Пользователь должен видеть на экране в процессе игры: Себя (видеопоток с камеры) Визуализацию играющего трека (анимация в стиле пульсирующего эквалайзера) Визуализацию своих успешных и неуспешных ударов (анимация, привязанная к кулакам, появляющаяся в момент удара) Оставшееся здоровье (прогресс-бар, по аналогии с оставшимися HP в файтингах) Счёт (числовое поле, обновляющееся в реальном времени) Логика HP – изначально у пользователя 100 пунктов здоровья (HP). За каждый удар “не в ритм” или пропуск удара у него снимается 4 HP. Если шкала HP игрока доходит до нуля, он проигрывает. Очки – за каждый удар “в ритм” игроку просто прибавляется одно очко. Для прототипа достаточно простейшей логики начисления очков. Обработка ошибок В любой момент, когда камера “не видит” тело игрока в достаточной для распознавания степени, на экране должно быть выведено соответствующее сообщение. Результаты Игрок должен видеть по окончании сессии: Итог – победа / поражение Количество очков, набранных за сессию Длительность сессии Остаток HP Игрок должен иметь возможность, нажав на кнопку: Начать сначала Присоединиться к каналу в Discord Контент В прототипе будет доступно 1-3 музыкальных трека. Каждый трек будет “размечен” вручную на стадии разработки приложения. То есть, вместе с аудиофайлом должен существовать некий файл разметки, содержащий: BPM трека; его длительность; тайм код первого бита; тайм коды отрезков тишины, и пр. Подобный подход к разметке позаимствован у игры osu!, с тем отличием, что в osu! любой пользователь может размечать треки, а в нашем случае это делают разработчики игры. Особенности реализации Для регистрации и подсчёта ударов я предлагаю использовать коллизии трёхмерных объектов: к распознанному “скелету” игрока в районе кистей “привязать” сферы, а строго перед игроком (в направлении его взгляда) расположить невидимую мишень, движущуюся вместе с ним. Каждое пересечение сфер с мишенью считать ударом. Если удар игрока совпадает с таймкодом бита (с учётом заданной разработчиком погрешности), он успешно засчитывается. Если пропускается или наносится вне временного диапазона погрешности, считается неуспешным.