Skip to content

Spirzen/AutoBattler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Тени Шпиля

Восходи. Сражайся. Покори вершину.

Карточный roguelike на Python + Pygame: процедурная карта путей, глубокий бой с несколькими врагами, реликвии, магазин и встроенный редактор карт. Вдохновлено Slay the Spire, но с темпом боя ближе к Hearthstone — добор карт, энергия каждый ход, выбор цели атаки.

Python Pygame License


Содержание


Быстрый старт

Требования: Python 3.10+, Windows / macOS / Linux

# Перейти в папку проекта
cd AutoBattler

# (Рекомендуется) виртуальное окружение
python -m venv .venv
.venv\Scripts\activate        # Windows
# source .venv/bin/activate   # macOS / Linux

# Зависимости и запуск
pip install -r requirements.txt
python main.py

Игра открывается в окне 1280×720, 60 FPS. Шрифты с кириллицей подбираются автоматически (Segoe UI, Arial и др.).


Управление

Действие Управление
Выбор карт, врагов, узлов, кнопок Мышь
Завершить ход в бою E
Вернуться в меню (из боя) Esc
Выйти из редактора карт Esc

Как проходит забег

flowchart LR
    A[Главное меню] --> B[Карта путей]
    B --> C{Узел}
    C -->|Бой / Элита| D[Сражение]
    C -->|Костёр| E[Лечение / Кузница]
    C -->|Лавка| F[Покупки]
    C -->|Сундук| G[Реликвия]
    C -->|Событие| H[Случайный исход]
    D --> I[Награда: карта]
    I --> B
    E --> B
    F --> B
    G --> B
    H --> B
    C -->|Босс| J[Финальный бой]
    J -->|Победа| K[Триумф!]
    J -->|Поражение| L[Падение...]
Loading

Каждый забег — это 15 этажей процедурной карты. Вы выбираете путь между узлами, собираете колоду, находите реликвии и готовитесь к финальному боссу. Мета-прогресс (статистика, открытые карты и реликвии) сохраняется между забегами.


Боевая система

Бой сочетает deckbuilder-логику с темпом коллекционных карточных игр:

Механика Описание
Стартовая рука 5 карт + бонусы реликвий
Добор +5 карт каждый ход (лимит руки — 10)
Энергия Полностью восполняется каждый ход (старт: 3)
Несколько врагов Атакующие карты требуют выбора цели
Намерения Видно, что враг сделает на следующем ходу
Журнал боя Все события боя в реальном времени

Типы карт

  • Атака — урон по выбранной цели (или AOE)
  • Защита — броня на текущий ход
  • Усиление / Ослабление — баффы и дебаффы
  • Добор — дополнительные карты в руку
  • Существо — атака + здоровье на поле боя

Статус-эффекты

Более 40 уникальных механик на картах: Уязвимость, Слабость, Сила, Яд, Кровотечение, Оглушение, Пронзающий удар, Execute, Lifesteal, Echo и другие. Комбинируйте эффекты, чтобы превратить скромную колоду в машину уничтожения.

Реликвии

Пассивные артефакты меняют стиль игры: Горящая кровь лечит после боя, Кольцо змеи даёт карты в начале, Философский камень — +1 энергия (но враги тоже сильнее). Стартовая реликвия выдаётся каждому забегу.


Карта и узлы

Узел Что происходит
Бой Обычное сражение, награда — золото и карта на выбор
💀 Элита Сильный враг, повышенная награда
👑 Босс Финал акта — победа = триумф
🔥 Костёр Отдых (+30% HP) или кузница (улучшение карты)
🛒 Лавка Карты (50 з.), реликвии (150 з.), удаление карты (75 з.)
📦 Сундук Бесплатная реликвия на выбор
Событие Случайный исход: здоровье, золото, риск

Карта генерируется заново каждый забег: 7 колонок, 3 ряда, ветвления и недоступные пути создают уникальные маршруты.


Контент

Категория Количество
Уникальные карты 66+
Враги 9 (от вошей до боссов)
Реликвии 15
Этажей на карте 15
Статус-эффектов ~40

Данные лежат в JSON — легко добавлять новых врагов, карты и реликвии без правки кода.


Редактор карт

В главном меню — «Редактор карт». Создавайте собственные заклинания и существ:

  • название, описание, стоимость, урон / здоровье
  • тип: заклинание или существо
  • эффект: урон, защита, усиление, ослабление, добор
  • живой предпросмотр карты

Кастомные карты сохраняются в data/custom_cards.json и автоматически попадают в пул наград, магазина и стартовых колод.


Структура проекта

AutoBattler/
├── main.py                 # Главный цикл игры, экраны, ввод
├── settings.py             # Баланс, цвета, константы
├── locale.py               # Русская локализация
├── requirements.txt
│
├── classes/
│   ├── combat.py           # Боевая логика
│   ├── card.py             # Модель карты
│   ├── card_catalog.py     # Загрузка и CRUD карт
│   ├── card_effects.py     # ~40 эффектов карт
│   ├── card_editor.py      # Редактор карт
│   ├── player.py           # Игрок, колода, рука
│   ├── enemy.py            # Враги и энкаунтеры
│   ├── relic.py            # Реликвии
│   ├── map.py              # Процедурная карта
│   ├── game_state.py       # Забег и сохранения
│   ├── ui.py               # Отрисовка интерфейса
│   ├── effects.py          # Визуальные эффекты боя
│   ├── audio.py            # Процедурные звуки (без файлов)
│   ├── transitions.py      # Переходы и баннеры
│   ├── hover_anim.py       # Анимации наведения
│   └── widgets.py          # UI-виджеты (инпуты, пикеры)
│
├── data/
│   ├── cards.json          # Встроенные карты
│   ├── enemies.json        # Враги и паттерны атак
│   ├── relics.json         # Реликвии
│   └── custom_cards.json   # Ваши карты (создаётся редактором)
│
└── assets/                 # Место для будущих спрайтов и звуков

Настройка и моддинг

Баланс

Основные параметры — в settings.py:

STARTING_HP = 85
STARTING_ENERGY = 3
STARTING_GOLD = 99
DRAW_PER_TURN = 5

Новая карта (JSON)

{
  "id": "my_strike",
  "name": "Мощный удар",
  "type": "attack",
  "cost": 2,
  "value": 12,
  "description": "Больно и по делу.",
  "rarity": "common"
}

Новый враг

Добавьте запись в data/enemies.json с полями hp, intent_pattern, attack_damage и описанием. Паттерн намерений определяет поведение в бою.


Сохранения

Файл Назначение В git
save_data.json Статистика, открытый контент между забегами ❌ игнорируется
data/custom_cards.json Кастомные карты из редактора ❌ игнорируется

Чтобы сбросить прогресс — удалите save_data.json.


Лицензия

MIT © 2026 Spirzen


Сделано с Pygame · Без движка · Без ассетов · Только код и JSON

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages