Files
game-marathon/CONCEPT.md
2025-12-14 02:42:32 +07:00

376 lines
13 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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. **Профиль** — настройки, статистика