Skip to content

pukeeee/python-text-rpg

Repository files navigation

Текстова RPG у стилі Path of Exile

Це репозиторій для розробки текстової рольової гри на Python, натхненної глибокими ігровими механіками Path of Exile. Проект фокусується на створенні масштабованої основи, яка дозволить легко додавати новий контент: предмети, ворогів, навички та ігрові події.

🚀 Про проект

Гра є текстовою RPG, де гравець досліджує світ, бореться з ворогами, збирає екіпірування та прокачує свого персонажа. В основі лежить гнучка система розрахунку характеристик та бойова система, що враховує безліч параметрів.

Ключові особливості

  • Чиста архітектура: Проект побудований на принципах Clean Architecture, що забезпечує повне розділення бізнес-логіки (ядра гри) від інфраструктурних деталей (бази даних, інтерфейсу). Це робить код гнучким, тестованим та легким для розширення.
  • Зберігання даних в PostgreSQL: Динамічні дані гри (персонажі, їхній прогрес, інвентар) зберігаються в базі даних PostgreSQL, що забезпечує надійність та швидкість.
  • Конфігурація через JSON: Статичні ігрові дані — базові предмети, типи ворогів, локації — зберігаються у зовнішніх JSON-файлах. Це дозволяє змінювати та додавати контент без втручання в код.
  • Глибока система характеристик: Розрахунок параметрів персонажа (здоров'я, броня, ухилення, урон, критичні удари) базується на формулах, натхненних Path of Exile.
  • Готовність до Docker: Проект налаштований для запуску в Docker-контейнерах, що спрощує розгортання та розробку.

🏛️ Архітектура

Проект використовує 4-шарову модель Чистої архітектури для максимальної гнучкості та підтримки.

┌─────────────────────────────────────────────────────────┐
│                 Presentation Layer                      │
│  (CLI / Telegram Bot / REST API)                        │
└────────────────────┬────────────────────────────────────┘
                     │
┌────────────────────▼────────────────────────────────────┐
│              Application Layer (Use Cases)              │
│  (Сценарії використання: створити персонажа, атакувати) │
└────────────────────┬────────────────────────────────────┘
                     │
┌────────────────────▼────────────────────────────────────┐
│                  Domain Layer                           │
│  (Ядро гри: сутності, бізнес-правила, логіка)           │
└────────────────────┬────────────────────────────────────┘
                     │
┌────────────────────▼────────────────────────────────────┐
│              Infrastructure Layer                       │
│  (Робота з PostgreSQL, завантаження конфігурацій)       │
└─────────────────────────────────────────────────────────┘
  • Domain Layer: Не залежить ні від чого. Тут живе вся основна логіка гри.
  • Application Layer: Координує Domain та залежить тільки від нього.
  • Infrastructure & Presentation Layers: Зовнішні шари, які залежать від внутрішніх, але їх реалізація може бути легко замінена.

🛠 Технологічний стек

  • Мова: Python 3.12
  • База даних: PostgreSQL
  • Взаємодія з БД: SQLAlchemy, Alembic
  • Формат конфігурацій: JSON
  • Контейнеризація: Docker, Docker Compose

🚀 Як запустити

1. Запуск через Docker (рекомендовано)

Цей спосіб запустить гру та базу даних в ізольованих контейнерах. Зберіть та запустіть контейнери: bash docker-compose up --build

2. Локальний запуск

  1. Встановіть та запустіть PostgreSQL.

  2. Створіть базу даних та користувача для гри.

  3. Налаштуйте змінні середовища: Створіть файл .env та вкажіть DATABASE_URL:

    DATABASE_URL=postgresql://user:password@localhost:5432/rpg_game
    
  4. Встановіть залежності:

    pip install -r requirements.txt
  5. Застосуйте міграції бази даних:

    alembic upgrade head
  6. Запустіть гру:

    python main.py

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages