# Game Marathon — Концепция ## Общее описание **Game Marathon** — закрытая платформа для проведения игровых марафонов среди друзей (~10 человек), где за месяц нужно набрать максимум очков, выполняя случайные челленджи в случайных играх. ### Ключевые особенности - Колесо рандома (игра → челлендж) - Игры добавляют сами участники + ссылки на скачивание - Челленджи генерирует нейросеть (интегрированное API) - Пруфы обязательны (скриншоты/видео/Steam ачивки) — загружаются на сервер - Социальные механики (вызовы, ставки, события) - Уведомления через Telegram-бота - Авторизация по логину/паролю --- ## Жизненный цикл марафона ### Фаза 1: Подготовка (3-7 дней до старта) **Действия участников:** 1. Присоединяются к марафону (по ссылке-приглашению) 2. Добавляют игры (название + ссылка на скачивание + обложка) 3. Когда все готовы — организатор "закрывает" список игр 4. Система (нейросеть) генерирует челленджи для каждой игры 5. Участники могут посмотреть/предложить правки к челленджам 6. Организатор запускает марафон **Добавление игры включает:** - Название игры - Ссылка на скачивание (для платных игр — сторонние ресурсы) - Обложка (загрузка или URL) - Жанр (опционально) ### Фаза 2: Генерация челленджей После закрытия списка игр — автоматический запрос к API нейросети. **Для каждой игры генерируется 5-7 челленджей:** - 2 лёгких (15-30 минут) - 2-3 средних (1-2 часа) - 1-2 сложных (3+ часов) **Каждый челлендж содержит:** - Название - Описание - Тип (completion/no-death/speedrun/collection/achievement/etc) - Примерное время выполнения - Способ проверки (скриншот/видео/Steam ачивка) - Количество очков После генерации участники могут предложить правки или добавить свои челленджи. ### Фаза 3: Активный марафон (1 месяц) **Процесс выполнения:** ``` 1. Крутишь колесо игр ↓ Выпадает случайная игра ↓ 2. Крутишь колесо челленджей (для этой игры) ↓ Выпадает случайный челлендж ↓ 3. Выбор: • Принять → идёшь выполнять • Дроп → штраф, крутишь заново ↓ 4. Выполняешь задание ↓ 5. Загружаешь пруф (скрин/видео/ссылка на Steam профиль) ↓ 6. Получаешь очки + streak продолжается ↓ 7. Можешь крутить снова ``` --- ## Система очков ### Базовые очки Зависят от сложности челленджа (определяет нейросеть при генерации): | Сложность | Очки | |-----------|------| | Лёгкий | 30-50 | | Средний | 60-100 | | Сложный | 120-200 | ### Streak бонус Последовательное выполнение заданий без дропов: | Streak | Бонус | |--------|-------| | 1 | +0% | | 2 | +10% | | 3 | +20% | | 4 | +30% | | 5+ | +40% (максимум) | ### Дроп штрафы Прогрессивная система штрафов: | Дроп # | Штраф | |--------|-------| | 1 | Бесплатно (streak сбрасывается) | | 2 | -10 очков | | 3 | -25 очков | | 4 | -50 очков | | 5+ | -50 очков + кулдаун 2 часа | Штрафы сбрасываются после успешного выполнения задания. --- ## Подтверждение выполнения ### Типы пруфов - **Скриншот** — загружается на сервер - **Видео** — загружается на сервер или ссылка (YouTube) - **Steam Achievement** — ссылка на профиль Steam с ачивкой ### Процесс верификации 1. Участник загружает пруф + опциональный комментарий 2. Пруф виден всем участникам в ленте активности 3. Любой участник может "оспорить" пруф (если считает невалидным) 4. Если нет споров за 24 часа — автоматически засчитывается 5. При споре — голосование участников или решение организатора --- ## Социальные механики ### Лента активности Отображает в реальном времени: - Выполненные челленджи (с пруфами) - Дропы - Кто крутит колесо и что выпало - События марафона - Вызовы между участниками ### Вызов (Challenge) Когда участник выполнил челлендж, другие могут "вызвать" себя на тот же: - Вызов заменяет текущее активное задание - Награда: стандартные очки за челлендж - Бонус: +30 очков если выполнить быстрее оригинального исполнителя ### Ставка (Bet) Перед началом выполнения участник может поставить часть своих очков: - **Выполнил:** награда + ставка x2 - **Дропнул/провалил:** теряет ставку Варианты ставок: 0 / 25 / 50 / 100 очков --- ## Система событий Случайные события во время марафона (1-2 раза в неделю). Могут запускаться автоматически или вручную организатором. | Событие | Описание | Длительность | |---------|----------|--------------| | **Золотой час** | Все очки x1.5 | 30-60 минут | | **Общий враг** | Все получают одинаковое задание, топ-3 = бонус | До выполнения | | **Двойной риск** | Дропы бесплатны, но очки x0.5 | 2 часа | | **Джекпот** | Следующему кто крутит — гарантированно сложный челлендж с x3 очками | 1 спин | | **Обмен** | Можно поменяться заданием с другим участником | 1 час | | **Реванш** | Можно переделать любой свой проваленный челлендж за 50% очков | 4 часа | --- ## Таблица лидеров Отображает для каждого участника: - Место в рейтинге - Общее количество очков - Текущий streak - Количество выполненных челленджей - Количество дропов --- ## Модель данных ### User (Пользователь) ``` - id - login - password_hash - nickname - avatar - telegram_id (для уведомлений) - created_at ``` ### Marathon (Марафон) ``` - id - title - description - organizer_id (User) - start_date - end_date - status: preparing | active | finished - invite_code - settings (JSON: события вкл/выкл, etc) - created_at ``` ### Participant (Участник марафона) ``` - id - user_id - marathon_id - total_points - current_streak - drop_count (текущий счётчик для штрафов) - joined_at ``` ### Game (Игра) ``` - id - marathon_id - title - cover_image (путь к файлу на сервере) - download_link - genre - added_by (User) - created_at ``` ### Challenge (Челлендж) ``` - id - game_id - title - description - type: completion | no_death | speedrun | collection | achievement | challenge_run | score_attack | time_trial - difficulty: easy | medium | hard - points - estimated_time (в минутах) - proof_type: screenshot | video | steam_achievement - is_generated (boolean — создан AI или вручную) - created_at ``` ### Assignment (Задание — выпавшее участнику) ``` - id - participant_id - challenge_id - status: active | completed | dropped - proof_file (путь к файлу на сервере) - proof_url (опционально — ссылка) - proof_comment - points_earned - bet_amount - started_at - completed_at ``` ### Event (Событие) ``` - id - marathon_id - type: golden_hour | common_enemy | double_risk | jackpot | swap | rematch - start_time - end_time - is_active - data (JSON — доп. данные события) ``` ### Dispute (Оспаривание пруфа) ``` - id - assignment_id - raised_by (User) - reason - status: open | resolved_valid | resolved_invalid - resolved_by (User — организатор или голосование) - created_at - resolved_at ``` --- ## Уведомления (Telegram-бот) ### Типы уведомлений - Марафон скоро начнётся - Кто-то выполнил челлендж - Тебя вызвали на челлендж - Твой пруф оспорен - Началось событие (Золотой час и т.д.) - Напоминание: у тебя нет активного задания - Марафон завершён — итоги ### Настройки Пользователь может включить/выключить отдельные типы уведомлений. --- ## Технические решения | Аспект | Решение | |--------|---------| | Авторизация | Логин/пароль | | Хранение пруфов | Загрузка на сервер | | Уведомления | Telegram-бот | | Генерация челленджей | Интегрированное API нейросети | | Формат марафона | 1 месяц (с перспективой других режимов) | --- ## Перспективы развития ### Дополнительные режимы марафонов - **Sprint** (4-12 часов) — интенсивный формат - **Daily Challenge** (1 неделя) — по 1-3 задания в день - **Tournament** — несколько раундов, выбывание ### Дополнительные механики - Колесо модификаторов (без звука, одной рукой, и т.д.) - Командные марафоны (2v2, 3v3) - Глобальная статистика и достижения пользователя - Рейтинговая система игроков --- ## UI/UX — Основные экраны 1. **Главная** — список марафонов (активные, завершённые) 2. **Авторизация** — вход/регистрация 3. **Создание марафона** — форма с настройками 4. **Лобби марафона** — подготовка, добавление игр 5. **Колесо** — основной геймплей (спин игры → спин челленджа) 6. **Текущее задание** — детали + загрузка пруфа 7. **Лента активности** — действия всех участников 8. **Таблица лидеров** — рейтинг участников 9. **История заданий** — все выполненные/дропнутые 10. **Профиль** — настройки, статистика