343 lines
11 KiB
Markdown
343 lines
11 KiB
Markdown
# 🃏 Texas Hold'em No-Limit Poker
|
||
|
||
Полнофункциональная онлайн-игра в покер с поддержкой мультиплеера, ИИ-ботами и интеграцией LLM для реалистичного общения.
|
||
|
||
## ✨ Особенности
|
||
|
||
- 🎮 **Мультиплеер**: 2-6 игроков в режиме реального времени
|
||
- 🤖 **ИИ-боты**: 8 уникальных личностей с разными стилями игры
|
||
- 💬 **LLM-чат**: Реалистичное общение ботов через Ollama/LM Studio/OpenAI
|
||
- 👤 **Система авторизации**: Регистрация, вход, гостевой режим
|
||
- 👑 **Админ-панель**: Управление ботами, пользователями и настройками
|
||
- 🎨 **Современный UI**: Glassmorphism дизайн с анимациями
|
||
- 🐳 **Docker**: Готов к развертыванию в один клик
|
||
|
||
## 🚀 Быстрый старт
|
||
|
||
### Вариант 1: Docker (Рекомендуется)
|
||
|
||
**Windows (PowerShell):**
|
||
```powershell
|
||
.\deploy.ps1
|
||
```
|
||
|
||
**Linux/Mac:**
|
||
```bash
|
||
chmod +x deploy.sh
|
||
./deploy.sh
|
||
```
|
||
|
||
**Или вручную:**
|
||
```bash
|
||
docker-compose up -d
|
||
```
|
||
|
||
Приложение будет доступно: **http://localhost:3336**
|
||
|
||
### Вариант 2: Локальный запуск
|
||
|
||
```bash
|
||
# Установка зависимостей
|
||
npm install
|
||
|
||
# Запуск сервера
|
||
npm start
|
||
```
|
||
|
||
Приложение будет доступно: **http://localhost:3000**
|
||
|
||
## 📋 Требования
|
||
|
||
### Docker (рекомендуется)
|
||
- Docker 20.10+
|
||
- Docker Compose 1.29+
|
||
|
||
### Локальный запуск
|
||
- Node.js 16+
|
||
- npm 8+
|
||
|
||
## 🎮 Игровые режимы
|
||
|
||
### 🎯 Одиночная игра
|
||
- Игра против 1-5 ИИ-ботов
|
||
- 3 уровня сложности ИИ
|
||
- 8 уникальных личностей ботов
|
||
- Настраиваемые системные промпты
|
||
|
||
### 🌐 Мультиплеер
|
||
- Создание приватных комнат
|
||
- Поделиться ссылкой для присоединения
|
||
- Чат в реальном времени
|
||
- До 6 игроков одновременно
|
||
|
||
### 🤖 ИИ-боты с личностями
|
||
|
||
1. **Виктор "Акула"** - Агрессивный профессионал
|
||
2. **Анна "Блефер"** - Мастер обмана
|
||
3. **Сергей "Математик"** - Аналитик-стратег
|
||
4. **Мария "Рок"** - Консервативный игрок
|
||
5. **Дмитрий "Маньяк"** - Непредсказуемый агрессор
|
||
6. **Елена "Читательница"** - Психолог за столом
|
||
7. **Игорь "Новичок"** - Неопытный оптимист
|
||
8. **Ольга "Тильт"** - Эмоциональный игрок
|
||
|
||
## 👑 Админ-панель
|
||
|
||
### Функции администратора:
|
||
|
||
- **⚙️ Настройки LLM**: Подключение Ollama/LM Studio/OpenAI
|
||
- **🤖 Промпты ботов**: Настройка личностей и поведения
|
||
- **📋 Логи действий**: Мониторинг активности пользователей
|
||
- **👥 Управление пользователями**:
|
||
- Просмотр всех пользователей
|
||
- Статистика (IP, последняя игра)
|
||
- Изменение ролей (admin/user)
|
||
- Блокировка пользователей
|
||
- Удаление аккаунтов
|
||
|
||
### Первый администратор
|
||
|
||
При первом запуске создайте админа:
|
||
```sql
|
||
-- Используйте любой SQLite клиент для изменения БД
|
||
UPDATE users SET role = 'admin' WHERE username = 'ваш_логин';
|
||
```
|
||
|
||
## 🐳 Docker развертывание
|
||
|
||
### Структура проекта
|
||
|
||
```
|
||
onlinepocker/
|
||
├── 📄 Dockerfile # Docker образ
|
||
├── 📄 docker-compose.yml # Docker Compose конфигурация
|
||
├── 📄 .dockerignore # Исключения для Docker
|
||
├── 📄 apache-config.conf # Настройка Apache
|
||
├── 📄 deploy.sh # Скрипт развертывания (Linux/Mac)
|
||
├── 📄 deploy.ps1 # Скрипт развертывания (Windows)
|
||
├── 📚 DEPLOYMENT.md # Полная документация
|
||
└── 📚 DOCKER_README.md # Краткая инструкция Docker
|
||
```
|
||
|
||
### Основные команды
|
||
|
||
```bash
|
||
# Запуск
|
||
docker-compose up -d
|
||
|
||
# Остановка
|
||
docker-compose down
|
||
|
||
# Просмотр логов
|
||
docker-compose logs -f
|
||
|
||
# Перезапуск
|
||
docker-compose restart
|
||
|
||
# Пересборка
|
||
docker-compose up -d --build
|
||
```
|
||
|
||
### NPM скрипты
|
||
|
||
```bash
|
||
npm run docker:build # Сборка образа
|
||
npm run docker:up # Запуск контейнера
|
||
npm run docker:down # Остановка контейнера
|
||
npm run docker:logs # Просмотр логов
|
||
npm run docker:restart # Перезапуск
|
||
```
|
||
|
||
## 🌐 Настройка Apache
|
||
|
||
Для проксирования через Apache (порт 80/443 → 3336):
|
||
|
||
```bash
|
||
# Включение модулей
|
||
sudo a2enmod proxy proxy_http proxy_wstunnel rewrite headers ssl
|
||
|
||
# Копирование конфигурации
|
||
sudo cp apache-config.conf /etc/apache2/sites-available/poker.conf
|
||
|
||
# Включение сайта
|
||
sudo a2ensite poker.conf
|
||
|
||
# Перезагрузка Apache
|
||
sudo systemctl reload apache2
|
||
```
|
||
|
||
Подробнее: `DEPLOYMENT.md`
|
||
|
||
## 🔧 Конфигурация
|
||
|
||
### Переменные окружения
|
||
|
||
| Переменная | По умолчанию | Описание |
|
||
|------------|--------------|----------|
|
||
| `PORT` | 3336 | Порт сервера |
|
||
| `NODE_ENV` | production | Режим работы |
|
||
|
||
### Настройка LLM (в админ-панели)
|
||
|
||
1. Выберите провайдера: Ollama / LM Studio / OpenAI
|
||
2. Укажите API URL (например, `http://localhost:11434`)
|
||
3. Выберите модель (например, `llama3.2`)
|
||
4. Сохраните настройки
|
||
|
||
### Настройка промптов ботов
|
||
|
||
1. Войдите как администратор
|
||
2. Откройте "🤖 Промпты ботов"
|
||
3. Выберите бота
|
||
4. Отредактируйте системный промпт
|
||
5. Сохраните изменения
|
||
|
||
## 📦 Технологии
|
||
|
||
### Backend
|
||
- **Node.js** - Серверная платформа
|
||
- **Express.js** - REST API
|
||
- **WebSocket (ws)** - Реальное время
|
||
- **SQLite (sql.js)** - База данных
|
||
- **bcryptjs** - Хеширование паролей
|
||
- **jsonwebtoken** - JWT авторизация
|
||
|
||
### Frontend
|
||
- **Vanilla JavaScript** - Без фреймворков
|
||
- **CSS3** - Glassmorphism дизайн
|
||
- **HTML5** - Семантическая разметка
|
||
|
||
### DevOps
|
||
- **Docker** - Контейнеризация
|
||
- **Docker Compose** - Оркестрация
|
||
- **Apache** - Reverse proxy
|
||
|
||
## 📁 Структура проекта
|
||
|
||
```
|
||
onlinepocker/
|
||
├── 📂 public/ # Фронтенд
|
||
│ ├── index.html # Главная страница
|
||
│ ├── main.js # Основная логика
|
||
│ ├── game.js # Игровая логика
|
||
│ ├── ai.js # ИИ и личности ботов
|
||
│ ├── auth.js # Авторизация
|
||
│ └── styles.css # Стили
|
||
├── 📂 data/ # База данных (создается автоматически)
|
||
│ └── poker.db
|
||
├── server.js # WebSocket сервер
|
||
├── database.js # Работа с БД
|
||
├── package.json # Зависимости
|
||
├── Dockerfile # Docker образ
|
||
├── docker-compose.yml # Docker Compose
|
||
└── 📚 Документация
|
||
├── DEPLOYMENT.md # Развертывание
|
||
├── DOCKER_README.md # Docker инструкции
|
||
├── BOT_PERSONALITIES_CONFIG.md
|
||
└── ADMIN_USER_MANAGEMENT.md
|
||
```
|
||
|
||
## 🔐 Безопасность
|
||
|
||
- ✅ JWT токены с истечением
|
||
- ✅ Bcrypt хеширование паролей
|
||
- ✅ Middleware авторизации
|
||
- ✅ Проверка прав администратора
|
||
- ✅ Логирование действий
|
||
- ✅ Блокировка пользователей
|
||
- ✅ IP tracking
|
||
|
||
## 💾 Backup базы данных
|
||
|
||
### Ручной backup
|
||
|
||
```bash
|
||
# Docker
|
||
docker cp texas-holdem-poker:/app/data/poker.db ./backup-$(date +%Y%m%d).db
|
||
|
||
# Локально
|
||
cp data/poker.db data/poker.db.backup
|
||
```
|
||
|
||
### Автоматический backup (cron)
|
||
|
||
```bash
|
||
# Каждый день в 3:00
|
||
0 3 * * * /opt/poker-backup.sh
|
||
```
|
||
|
||
Подробнее: `DEPLOYMENT.md`
|
||
|
||
## 📖 Документация
|
||
|
||
- **[DEPLOYMENT.md](DEPLOYMENT.md)** - Полное руководство по развертыванию
|
||
- **[DOCKER_README.md](DOCKER_README.md)** - Быстрый старт с Docker
|
||
- **[BOT_PERSONALITIES_CONFIG.md](BOT_PERSONALITIES_CONFIG.md)** - Настройка ботов
|
||
- **[ADMIN_USER_MANAGEMENT.md](ADMIN_USER_MANAGEMENT.md)** - Управление пользователями
|
||
|
||
## 🐛 Troubleshooting
|
||
|
||
### Порт занят
|
||
```bash
|
||
# Проверка
|
||
netstat -ano | findstr :3336 # Windows
|
||
lsof -i :3336 # Linux/Mac
|
||
|
||
# Решение
|
||
docker-compose down
|
||
```
|
||
|
||
### Проблемы с WebSocket
|
||
```bash
|
||
# Проверка модулей Apache
|
||
apache2ctl -M | grep proxy
|
||
```
|
||
|
||
### Права доступа (Linux)
|
||
```bash
|
||
sudo chown -R $USER:$USER data/
|
||
sudo chmod 755 data/
|
||
```
|
||
|
||
## 📞 Поддержка
|
||
|
||
1. Проверьте логи: `docker-compose logs -f`
|
||
2. Проверьте статус: `docker-compose ps`
|
||
3. Прочитайте документацию: `DEPLOYMENT.md`
|
||
|
||
## 📝 Лицензия
|
||
|
||
MIT License - свободно для личного использования
|
||
|
||
---
|
||
|
||
## 🎯 Краткая инструкция
|
||
|
||
### Для локальной разработки
|
||
```bash
|
||
npm install
|
||
npm start
|
||
# Откройте http://localhost:3000
|
||
```
|
||
|
||
### Для production (Docker)
|
||
```bash
|
||
docker-compose up -d
|
||
# Откройте http://localhost:3336
|
||
```
|
||
|
||
### Создание администратора
|
||
```bash
|
||
# 1. Зарегистрируйтесь через интерфейс
|
||
# 2. Подключитесь к БД и выполните:
|
||
UPDATE users SET role = 'admin' WHERE username = 'ваш_логин';
|
||
```
|
||
|
||
---
|
||
|
||
**Версия:** 1.0.0
|
||
**Дата:** 2026-02-01
|
||
**Статус:** ✅ Готов к production
|
||
|
||
🃏 **Хорошей игры!**
|