ТЗ - central-university-dev/TinkoffEduEvents GitHub Wiki
? - на подумать ??? - сильно на подумать (требуется ли такой функционал вообще)
Стек
- Макет Figma: WIP link
- Вёрстка с UIKit / SwiftUI
- Swift 5
Фичи
Платформа для игр
! Необходимо подумать как выполнять первый пункт !
- Платформа должна позволять добавлять новые мини-игры и функционал
- Сами мини-игры
- Система очков
- Рейтинговая таблица для текущего мероприятия
- На бэке хранится вся статистика, очки пользователей, настройки игр
Мини-игры
(будут в макете)
По сути через бэк у нас идет коммуникация по настройкам для игр. Т.е. организатор выставляет какие-то настройки, по которым уже на пользовательских устройствах генерируются игры / либо создаются из компонентов полученных с бэка
Организатор выставляет настройки просто через некую админку, не в приложении. Приложение только для участников
- Квиз:
- Содержит вопрос на любую тематику (настраиваемо)
- Содержит 4 варианта ответ на вопрос (настраиваемо)
- Только один вариант ответа правильный
- За правильный ответ пользователь получает какое-то количество очков (настраиваемо)
- Настройки организатора - вопросы, варианты ответов, количество очков за ответ
- (математический) квиз на скорость:
- Содержит всю предыдущую логику квиза (п. 1)
- (опционально) множитель очков в зависимости от скорости ответа (1й игрок получит больше 2го и т.д.) (настраиваемо)
- (опционально) Возможный режим игры - математический квиз - где числа и ответы генерируются сами (настраиваемо)
- (к бэку (?)) Генерация должна быть одинаковой для всех пользователей
- Настройки организатора - режим игры, вопросы, ответы, очки, множитель, сложность генерации мат. примеров
- Match two:
- Генерируется поле с парами картинок одним из следующих способов:
- Генерация на устройстве по заданным настройкам
- Загруженные картинки с серверной части
- Вид картинок может быть следующим:
- Либо генерируются простые геометрические фигуры
- Либо загружаются картинки организатором
- Количество пар настраивается организатором
- Картинки показываются на какое-то время, а затем скрываются (настраиваемо)
- Пользователь должен отгадать пары
- Настройки организатора - количество пар, время до скрытия картинок, количество очков за правильную пару
- Генерируется поле с парами картинок одним из следующих способов:
- Рисовашки:
- Генерируется / выставляется организатором тема для рисунка
- Пользователи выполняют рисунок за отведённое время (настраиваемо)
- Победитель определяется либо голосованием (нельзя голосовать за себя), либо организатором (настраиваемо)
- Голосование:
- Лист из рисунков участников
- Свой рисунок не отображается
- Нужно проголосовать за рисунок
- Очки начисляются игроку с наибольшим количеством голосов (при нескольких победителях, делятся на всех)
- Настройки организатора - тема для рисунка, время для рисунка, выбор победителя
Игра на удачу (pegs game):Игрок может поставить определенное количество из своих очковИгрок бросает фишку в любую из заданных позицийФишка падает вниз отскакивая от препятствий с шансом 50/50 отлететь либо влево, либо вправоВнизу поля есть несколько зон множителей, по умолчанию от 0.25x до 3x (настраиваемо)Игрок получает количество очков с множителем, в зависимости от того, в какую зону упадет фишка(к бэку (?)) Поле должно быть у всех одинаковое
- Пинг понг
- Игра заканчивается при выполнении каких-либо из этих условий:
- Вышло отведённое для игры время (настраиваемо)
- Забито требуемое количество голов (настраиваемо)
- Разбивается по парам, как турнир, если кому-то не нашлось пары он ждёт следующего раунда
- На бэке - жеребьевка игроков, статы
- Игра заканчивается при выполнении каких-либо из этих условий:
- (?) Трейдинг на новостях (подумать, не сильно тяжело ли реализовывать):
- ремарка: я не мегаинвестор, поэтому могу неправильные слова использовать
- У участника есть какой-то начальный баланс (настраиваемо)
- Есть несколько компаний у которых можно покупать акции:
- Можно купить/продать 1, 10, 100 акций
- Имеют разные стоимости акций (могут различаться на порядки)
- Имеют разный множитель от новости (волатильность ?), т.е. некоторые компании не сильно значительно теряют/прибавляют стоимость, а какие-то очень значительно
- Пассивно каждые 10 секунд что-то (рандомное) происходит с их стоимостью, чуть-чуть влияя на стоимость
- Есть лента новостей, периодически прилетают новые новости, которые влияют на стоимость акций каких-то определенных компаний:
- У компаний и новостей могут быть теги, чтобы понимать кому прибавляем, а кому убавляем стоимость
- У новости есть краткий заголовок, и небольшое описание 1-2 предложения
- Новости выходят раз в какой-то промежуток времени
- Выигрывает тот кто накопил наибольший баланс
- Соответственно на бэке - пул новостей, компаний с тэгами, стоимостью, волатильностью, которое обновляется каждые 10 секунд (?), либо по выпуску новости
Аккаунт
Аккаунт пользователя
- Накопленные баллы с мероприятия
- Магазин мерча и всяких плюшек для конкретного мероприятия (?)
- При участии в мероприятии без регистрации, информация о баллах хранится у организатора (?)
- Статистика пользователя (например всякие поощрения для очень активных посетителей мероприятий)
Аккаунт организатора
Возможность управлять настройками мини-игрПросмотр информации об участниках мероприятияВозможность управлять участниками мероприятия (в т.ч. выгонять)Статистика по мероприятию (напр. leaderboard)
Авторизация / Регистрация / Быстрый вход в игру
- Вход в мероприятие:
- Возможность входить по QR коду мероприятия
- Возможность входить по ID мероприятия
- При первом входе регистрация по номеру телефона
- Участие в мероприятии без регистрации (?)
Требования к дизайну
Наверное просто по макету можно будет расписать Корпоративные цвета...?