poker/README.md

343 lines
11 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🃏 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
🃏 **Хорошей игры!**