Тактическая карточная дуэль в реальном времени с системой готовых карт и наблюдателями.
- Режим 1 на 1 - Два игрока, остальные наблюдают
- Готовые карты - 12 сбалансированных карт в конфигурации
- Автоматический матчмейкинг - Очередь для поиска противника
- Полноэкранный интерфейс - Адаптивный дизайн без скроллинга
- Встроенные звуки - Звуковые эффекты действий
- Чат и лог боя - Общение и история событий
- Авто-атака - Умный алгоритм выбора целей
- Способности карт - 10 уникальных способностей
- Node.js 16.0 или выше
- Современный браузер с поддержкой WebSocket
- Доступ в интернет (для WebSocket соединения)
# Клонируйте проект
git clone <repository-url>
cd battlescript
# Установите зависимости
npm install# Способ 1: Через скрипт (Windows)
start-server.bat
# Способ 2: Через Node.js
node server.js
# Способ 3: Через npm
npm start- Откройте браузер и перейдите по адресу:
http://localhost:3000 - Введите имя игрока
- Нажмите "Быстрый старт" для поиска противника
- Игра начнется автоматически при нахождении соперника
- Здоровье: У каждого игрока 30 очков здоровья
- Мана: Начинается с 3, увеличивается на 1 каждый ход
- Колода: 30 карт, 3 карты в начальной руке
- Ход: 2 минуты на ход
- Победа: Уничтожить героя противника
- Существа - Остаются на поле, могут атаковать
- Заклинания - Разовые эффекты
| Способность | Описание | Стоимость |
|---|---|---|
| Провокация | Приоритетная цель для атак | +1 к стоимости |
| Прорыв | Атакует дважды | +1 к стоимости |
| Скрытность | Неуязвим до атаки | +1 к стоимости |
| Полет | Атакует летающих/героя | +1 к стоимости |
| Стрелок | Атакует героя/летающих | +1 к стоимости |
| Площадной урон | Атакует 3 цели | +2 к стоимости |
| Целитель | Лечит союзников | +2 к стоимости |
| Щит | Снижает получаемый урон | +1 к стоимости |
| Яд | Наносит урон каждый ход | +2 к стоимости |
| Возрождение | Возвращается в руку после смерти | +3 к стоимости |
battlescript/
├── index.html # Основной HTML файл
├── styles.css # Стили игры
├── client.js # Клиентская логика
├── server.js # Серверная логика
├── config.js # Конфигурация игры
├── start-server.bat # Скрипт запуска (Windows)
├── package.json # Зависимости Node.js
├── README.md # Документация
└── .gitignore # Игнорируемые файлы
{
game: {
maxPlayers: 2, // Максимум игроков
maxSpectators: 20, // Максимум наблюдателей
turnDuration: 120, // Длительность хода (сек)
startingHealth: 30, // Начальное здоровье
startingMana: 3, // Начальная мана
maxMana: 10, // Максимальная мана
deckSize: 30, // Размер колоды
initialHandSize: 3, // Начальные карты
cardsPerTurn: 1, // Карт добавляется каждый ход
drawCardCost: 1 // Стоимость взятия карты
}
}// В файле config.js в массиве cards
{
id: 'card_id',
name: 'Название карты',
type: 'creature', // или 'spell'
cost: 3,
attack: 2,
health: 4,
rarity: 'common', // common, rare, epic, legendary
abilities: ['taunt', 'shield'],
description: 'Описание карты',
image: '👨⚖️' // Эмодзи или путь к изображению
}- 🎯 Атаковать - Выбрать существо и цель для атаки
▶️ Играть карту - Разыграть выбранную карту из руки- 🤖 Авто-атака - Автоматическая атака всех существ
- ⏭️ Завершить ход - Передать ход противнику
- 🔄 Взять карту - Взять карту из колоды (стоимость: 1 мана)
- Верхняя панель: Информация о противнике (здоровье, мана, рука)
- Центр: Игровое поле с существами
- Нижняя панель: Ваша информация и управление
- Правая панель: Журнал боя и чат
Клиент (Browser) <--WebSocket--> Сервер (Node.js)
│ │
├── HTML/CSS/JS ├── Game Logic
├── UI Rendering ├── Matchmaking
└── User Input └── State Management
# Запуск в режиме разработки
npm start
# Проверка кода
# (добавить ESLint если нужно)
# Тестирование
# (добавить тесты в будущих версиях)// От клиента к серверу
{
type: 'set_name', // Установить имя
type: 'join_queue', // Встать в очередь
type: 'play_card', // Разыграть карту
type: 'attack', // Атаковать
type: 'end_turn', // Завершить ход
type: 'chat_message' // Отправить сообщение
}
// От сервера к клиенту
{
type: 'game_state', // Обновление состояния
type: 'game_started', // Начало игры
type: 'game_ended', // Конец игры
type: 'chat_message', // Сообщение чата
type: 'error' // Ошибка
}// В консоли браузера (F12)
gameClient.sendToServer({ type: 'debug_state' }) // Статус игры
console.log(gameClient) // Все данные клиента🎮 BattleScript Server v2.0
📊 Конфиг загружен: 12 карт
⚙️ Режим: 1 на 1, наблюдатели: 20
🔌 Подключение: client_123... (::1)
👤 client_123 установил имя: Игрок
⏳ Игрок встал в очередь
🎮 Создана игра game_123: Игрок1 vs Игрок2
🔄 Ход 1 в игре game_123: Игрок1
- Базовая архитектура клиент-сервер
- Система карт через конфиг
- Матчмейкинг 1 на 1
- Полноэкранный адаптивный интерфейс
- Механика боя и способностей
- Чат и система логов
- Звуковые эффекты
- Авто-атака
- Балансировка карт
- Оптимизация производительности
- Документация API
-
Используйте формат коммитов:
[тип]: описаниеfeat:Новая функциональностьfix:Исправление ошибокdocs:Документацияstyle:Форматирование кодаrefactor:Рефакторингtest:Тестыchore:Вспомогательные задачи
-
Перед отправкой PR:
- Проверьте код на ошибки
- Обновите документацию
- Протестируйте изменения
MIT License - смотрите файл LICENSE для подробностей.
- Разработчик: [Ваше имя/команда]
- Дизайн: BattleScript Team
- Тестирование: Сообщество игроков
BattleScript © 2025 - Тактическая карточная дуэль
- ✅ Рабочий прототип - Игра полностью функционирует
- ✅ Сбалансированные карты - 12 карт с 10 способностями
- ✅ Сетевой мультиплеер - Стабильные WebSocket соединения
- ✅ Адаптивный интерфейс - Работает на всех устройствах
- ✅ Базовая документация - Полное описание проекта
- Переходите к версии 0.0.2 для новых функций
- Собирайте фидбек от игроков
- Улучшайте баланс на основе статистики
- Планируйте масштабирование