Project Overview

Цели и назначение проекта

Данный проект представляет собой веб-приложение — игру жанра "элементальная битва" с коллекционированием, развитием и сражениями персонажей-элементалей. Цель проекта — создать интерактивное, визуально привлекательное и технически устойчивое игровое пространство, в котором пользователь может:

Основные функциональные возможности реализованы через React-компоненты, обеспечивающие UI/UX, и бизнес-логику, сосредоточенную в модуле gameLogic.ts. Архитектура построена с упором на удобство расширения и поддержку различных фаз игры: от меню и выбора до анимаций и отображения результатов.

Пример рабочих сценариев и use cases

Сценарий битвы

  1. Игрок выбирает локацию для битвы через интерфейс выбора (BattleComponent).

  2. Затем выбирает элемент (земля, вода, огонь) и конкретного элементаля из своей коллекции.

  3. После подтверждения начинается анимация битвы (BattleAnimationPixi), где визуально демонстрируются фазы боя.

  4. Результаты битвы отображаются в компоненте BattleResultPage с подробной статистикой и изменениями в ресурсах.

  5. Игрок получает опыт, ману, возможно, новые элементали или достижения.

Прокачка коллекции

Обучение пользователя

Стек и используемые технологии

Выбор React обусловлен модульностью, широким сообществом и удобством создания интерактивных SPA. PixiJS применяется для высокопроизводительной графики, недоступной стандартными средствами React. TypeScript обеспечивает надежность и удобство разработки.

Высокоуровневая архитектура

Архитектура приложения разделена на несколько ключевых слоев и модулей:

Взаимодействия между компонентами организованы через пропсы и состояние React, бизнес-логика вызывается из компонентов по мере необходимости.

graph TB
    Browser[Browser React App]
    subgraph Frontend
        App["App.tsx (корневой компонент)"]
        Navigation["Navigation"]
        ProfileTab["ProfileTab"]
        CollectionTab["CollectionTab"]
        BattleComponent["BattleComponent"]
        BattleAnimationPixi["BattleAnimationPixi (PixiJS Анимация)"]
        SettingsTab["SettingsTab"]
        AchievementNotification["AchievementNotification"]
        TutorialTooltip["TutorialTooltip"]
        Modal["Modal"]
        AudioPlayer["AudioPlayer"]
    end
    subgraph Backend Logic
        GameLogic["gameLogic.ts (игровая логика)"]
        Types["types.ts (типизация)"]
    end
    subgraph Styling
        CssFiles["App.css, index.css"]
    end

    Browser --> App
    App --> Navigation
    App --> ProfileTab
    App --> CollectionTab
    App --> BattleComponent
    BattleComponent --> BattleAnimationPixi
    BattleAnimationPixi --> BattleEffects["BattleEffects (PixiJS эффекты)"]
    App --> SettingsTab
    App --> AchievementNotification
    App --> TutorialTooltip
    App --> Modal
    App --> AudioPlayer

    App --> GameLogic
    BattleComponent --> GameLogic
    CollectionTab --> GameLogic
    BattleAnimationPixi --> GameLogic

    App --> CssFiles

Навигация для разработчиков

Для Frontend-разработчиков

Для Backend / Логики игры

Для тестирования и качества кода

Диаграмма ключевого рабочего процесса (пример: бой)

flowchart TD
    Start[Начало боя]
    SelectLocation[Выбор локации]
    SelectElement[Выбор элемента]
    SelectElemental[Выбор элементаля]
    BattleAnimation[Анимация боя (PixiJS)]
    BattleResult[Отображение результата]
    UpdateStats[Обновление статистики и достижений]
    End[Конец]

    Start --> SelectLocation --> SelectElement --> SelectElemental --> BattleAnimation --> BattleResult --> UpdateStats --> End

Данный обзор позволит разработчикам быстро получить понимание структуры, ключевых компонентов и рабочих процессов проекта, а также эффективно ориентироваться для внесения изменений и расширений.