Разработать игру на Unity в жанре runner для Telegram Mini Apps

200 000 руб. за проект
17 декабря 2024, 20:31 • 7 откликов • 49 просмотров
Требуется разработка небольшой игры на Unity для Telegram Mini Apps:

  • Жанр: runner (упрощенный вариант Subway Surfers)
  • Стиль: ретрофутуризм (референсы по стилю см. в приложенных файлах). Стиль нужен позитивный, без "классического" low-life киберпанка, где помереть хочется быстрее, чем застрелят))
  • Три игровых сцены: "Зарядка робота", "Бег с препятствиями", "Битва с Боссом"
  • Экспорт проекта: WebGL
  • Интеграция настраиваемой библиотеки объектов (изображения или текст), которые будут появляться на экране во второй сцене (препятствия для бега)
  • Требуется сбор и экспорт метрик действий пользователя на протяжении игровой сессии (скорость нажатия на экран и взаимодействие с некоторыми объектами: несложные цифровые данные)
Геймплей состоит из трех сцен:

Сцена 1 из 3: Выбор и зарядка персонажа-робота

  1. Игрок выбирает одного из двух персонажей (голубой или розовый робот: мужской и женский персонажи). После нажатия на аватар робота на экране появляется «аккумулятор» с мерцающим индикатором почти нулевого заряда, а выбранный робот при этом "разряжен" и лежит или сидит на полу без признаков жизни. На экране появляется инструкция (“TAP TO CHARGE!”): теперь игрок должен своими нажатиями на кнопку "заряда" поднять заряд аккумулятора до полного. Делать он это должен как можно быстрее, т.к. батарея быстро разряжается, если не достигла максимального заряда, а игрок тапает на экран недостаточно быстро.
  2. Длительность сцены с зарядом аккумулятора - от 15 секунд, если игрок делает не менее 40 нажатий за этот период (темп не медленнее ~2.6 нажатий в секунду), но не более 25 секунд. Если игрок нажимает в более высоком темпе (более 2.6 нажатий в секунду), то шкала заряда должна искусственно заполняться с такой скоростью, чтобы удержать пользователя как минимум 15 секунд. Если по истечении 25 секунд сделано менее 60 нажатий, то попытка считается неудачной: робот отключается и сегмент начинается сначала. Если игрок не делает никаких действий в течение 5 секунд, сцена возвращается в исходное состояние (выбор робота).
  3. При каждом нажатии на батарейку возникает «вспышка» (что это такое, описано после задания ко всем сценам).
  4. Чтобы сделать процесс менее затянутым, добавляем анимацию «пробуждения» выбранному роботу – свечении глаз, движение механизмов, поднимается с пола и т.д.
  5. Если игрок успешно зарядил аккумулятор, то осуществляется переход ко 2 сегменту.
Сцена 2 из 3: Бег с препятствиями и борьба с врагами

  1. Это упрощенный геймплей Subway Surfers.
  2. На сцене - 3 линии (дорожки), между которыми игрок может перемещаться свайпом.
  3. На дорожках препятствия двух видов: через которые можно и нельзя перепрыгнуть (прыжок – свайп вверх). При столкновении с препятствием игрок теряет заряд батареи и увеличивает время бега на 5 секунд.
  4. Враги – это отдельные персонажи, которые прилетают из случайной области экрана. Если игрок вовремя не нажмет на такого летающего врага (в течение 3 секунд с момента его появления), то этот враг бьет игрока молнией или каким-то разрядом, отбирая у робота игрока энергию и увеличивая время бега на 5 секунд. Каждый враг появляется на экране в уменьшенном виде (как бы в отдалении) и в течение 3 секунд с момента появления увеличивается в размерах (как бы «приближаясь»). В случае атаки врагом возникает «вспышка» на экране. При успешном нажатии на врага (уничтожении его) также происходит «вспышка».
  5. Также на сцене появляются баннеры – летающие "рекламные щиты", текст или изображение на которых должны подгружаться из игровых ресурсов (настраиваемая библиотека, упомянутая в требованиях к проекту). Каждые 3 секунды с момента появления баннер также даёт эффект «вспышки», если не будет сбит игроком посредством нажатия на него (при ликвидации баннера также происходит «вспышка»).
  6. Баннеры и враги могут появляться одновременно, но число их одновременных появлений на сцене должно настраиваться параметрами приложения (константа hard code). По умолчанию это значение равно 1: то есть, одновременно может появляться только один такой объект (любой).
  7. Цель игрока – продержаться 30 секунд без столкновений и получения урона от врагов, баннеров и препятствий. За ошибки игрок получает штраф в качестве дополнительного времени (5 секунд) и снижения заряда батареи. Если заряд опускается до нуля, то попытка считается неудачной и игрок должен вернуться к Сцене 1.
Сцена 3 из 3: Битва с Боссом

  1. Аватар игрока и босс расположены на одном экране. Игрок атакует Босса нажатием на него, забирая у Босса энергию (или здоровье). Босс делает то же самое, поэтому если игрок не будет ничего делать (или тапать на экран слишком медленно), то заряд аккумулятора робота игрока закончится очень быстро. У Босса отображается полоса здоровья (или заряд аккумулятора), которая быстро восстанавливается. Требования по темпам нажатия точно такие же, как в Сцене 1. На каждое нажатие игрока босс реагирует «вспышкой».
  2. При поражении игрока также идёт возвращение к Сцене 1.
  3. После победы над Боссом вместо него появляется сундук, который открывается свайпом вверх (имеется текстовая подсказка – «SWIPE UP!»). При открытии сундука из него появляются три карты с изображенной на них геометрией и текстом (изображения, которые также берутся из игровых ресурсов): игрок должен выбрать один из них, после чего игра считается завершенной.
Что такое «вспышка»

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

Для каждого отдельного события (нажатие-зарядка, нажатие на врага или баннер, атака врага и т.д.), вызывающего вспышку, должна быть возможность настраивать эту вспышку отдельно в формате трех параметров:

1. RGB Alpha object* time_ms
2. RGB Alpha object* time_ms
3. RGB Alpha object* time_ms

...И т.д., где RGB – цветовая кодировка, Alpha – прозрачность от 0 до 100, object* - ссылка на отображаемый ресурс (изображение), либо пустой фон, если не указан, и time_ms – время отображения.

Например, конфигурационная запись для вспышки:

255 0 0 75 60
0 0 0 50 picture.png 12
0 255 0 75 60

...означает, что сначала будет показан красный фон с прозрачностью 75% в течении 60 миллисекунд, затем полупрозрачное изображение «picture.png» без цветокоррекции в течении 12 миллисекунд, а затем - зелёный фон с прозрачностью 75% в течении 60 миллисекунд.

Важные условия:

  1. Срок сдачи игры в полном объеме: не позднее 20.12.2024 включительно. Если до конца этой даты проект не будет сдан, заказ аннулируется и оплата работы исполнителю не производится.
  2. Конкретных требований к оформлению персонажей и сцен, за исключением соответствия визуальному стилю позитивного ретрофутуризма и примерного соответствия референсам во вложении, нет. Исполнитель сам выбирает персонажей, после чего заказчик их согласовывает.
  3. Исполнитель должен быть на связи и ежедневно предоставлять результаты своей работы, чтобы был виден и понятен прогресс.
Файлы