Skip to content

YL-Djangists/YorAce

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

ТЗ на проект «Онлайн/Оффлайн игра Дурак с социальной системой»

Автор: Yorshik


1. Общие сведения

  • Основная цель — сделать многопользовательскую игру «Дурак» с онлайн и оффлайн режимами, с поддержкой мобильных устройств и ПК.
  • Акцент на весёлое общение, рейтинги, кланы и расширенный социальный функционал.
  • Легко расширяемый и поддерживаемый стек.

2. Технологический стек

  • Backend: Django + Django Rest Framework (DRF) для API
  • Frontend Web: HTML/CSS/JavaScript (друг - фронтендер, чистый CSS и JS)
  • Анимации на вебе: выбор простого и плавного 2D решения (например, GreenSock GSAP, Anime.js, или CSS анимации)
  • Desktop: Flet (Python) для кроссплатформенного GUI
  • Мобильное приложение: Kotlin (Android)
  • Сервер для оффлайн: копия основного Django-сервера (упрощённая, без базы и защиты от читов)
  • База данных: PostgreSQL (опыт использования и подходит по производительности)
  • Реальное время: WebSocket (Django Channels)
  • Формат обмена данными: JSON
  • CI/CD: GitHub Actions/GitLab CI, Docker, автоматический деплой на VPS (DigitalOcean, AWS, Yandex Cloud)

3. Архитектура проекта

  • Монолитный сервер на Django, отвечающий за логику игры, управление пользователями, кланы, чаты и рейтинги.
  • REST API для работы с данными и WebSocket для игр в реальном времени и чатов.
  • Мобильное приложение и десктоп клиент обращаются к серверу по API и WebSocket.
  • Локальный сервер на телефоне для оффлайн партий с друзьями (логика игры локальная, без защиты от читов и базы данных).

4. Сущности и модели

Пользователь (User)

  • username (логин/никнейм)
  • email
  • password (хешированный)
  • статус аккаунта - зарегистрирован, подтвержден, заблокирован
  • роли: обычный, админ, владелец
  • OAuth-связи (Google, Yandex, GitHub, VK, Telegram)
  • соцсети в профиле (для стримеров/ютуберов)
  • флаги выполнения условий для наград (например, подписка на канал)

Игрок (Player) — профиль пользователя в игре

  • количество игр, побед, поражений
  • клан и роль в клане (дурак-вождь, проказник, младший дурак, участник)
  • онлайн-статус
  • список друзей
  • звание (строка)
  • рейтинг (число)
  • ачивки
  • внутриигровая валюта
  • предметы (скины, фон, карты, эмодзи)
  • значки (за сезон и прочее)

Клан (Clan)

  • название
  • участники и их роли
  • чат (последние 100 сообщений)
  • рейтинг клана
  • приглашения (по ссылке или через личные сообщения в игре)
  • приватность вступления (по приглашению и одобрению)

Партия (GameSession)

  • временная сущность, хранит состояние текущей игры
  • игроки, текущие ходы, время на ход
  • логика игры, боты (на сервере)
  • оффлайн партии — логика на клиенте, минимум проверки

Чат и сообщения (Chat & Message)

  • групповые и личные чаты
  • хранение истории сообщений
  • чаты кланов, личные и групповые

Ачивки (Achievements)

  • достижения и награды для игроков
  • условия получения и отображение в профиле

5. Функциональные требования

  • Регистрация/авторизация (пароль, OAuth)
  • Профиль с настройками и статистикой
  • Добавление и управление друзьями
  • Кланы с ролями и приглашениями
  • Групповой чат в клане, личные и публичные чаты
  • Игры онлайн (с рейтингом, логикой на сервере) и оффлайн (локальный сервер на телефоне, нерейтинговые)
  • Игра с ботами
  • Анимации карт и ходов (плавные, 2D)
  • Рейтинговая система и звания
  • Система достижений и наград
  • Логирование действий и возможность админского мониторинга и вмешательства
  • Восстановление соединения при разрыве связи в онлайн-играх (с ограничениями)

6. Безопасность

  • Хранение паролей и данных пользователей в зашифрованном виде
  • Проверка и валидация данных на сервере
  • Защита логики онлайн-игры от читерства (основная игра на сервере)
  • Минимальная защита в оффлайн режиме
  • Логирование подозрительных действий и возможности просмотра логов админами
  • Админская консоль с контролем партий

7. Тестирование и поддержка

  • Юнит-тесты для серверной логики и API
  • Интеграционные тесты для ключевых сценариев
  • Автоматические тесты UI (по мере возможности)
  • CI/CD для быстрой сборки и деплоя
  • Система баг-репортов и мониторинга

8. Особенности и пожелания

  • Адаптивный дизайн для ПК и мобильных устройств
  • Простота использования и удобство интерфейса
  • Возможность расширения функционала и новых режимов
  • Возможность добавления доната и премиум аккаунтов в будущем
  • Оптимизация для слабых устройств
  • Поддержка голосовых сообщений и эмодзи в чатах (план)

9. Минимум по Kotlin-приложению (мобильному клиенту)

  • Авторизация через OAuth и регистрация по email
  • Профиль с настройками (скины, эмодзи, достижения)
  • Просмотр статистики и достижений
  • Игровая логика оффлайн (локальная, без рейтинга и защиты)
  • Подключение к серверу через API и WebSocket для онлайн-игр
  • Анимации карт и ходов (2D, плавные)
  • Поддержка восстановления соединения

10. TODO

  • Расширенные настройки приватности
  • Режимы турниров и пати с друзьями
  • Система доната и премиум-аккаунтов
  • Голосовые сообщения в чатах
  • Мини-игры и расширенные анимации
  • Аналитика для улучшения UX

11. Пример запуска и деплой

  • Сервер Django с DRF + Channels, докеризированный для простоты деплоя
  • Мобильное приложение на Kotlin с модулем локального сервера (упрощённый Django или FastAPI-подобный микросервер на Python, если возможно)
  • Desktop клиент на Flet (Python) для ПК и кроссплатформы
  • CI/CD — GitHub Actions с автоматическим тестированием и деплоем на VPS

Если нужен файл в другом формате — скажи.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors