Сочетание классической мафии и пошаговой стратегии.
Выведите свою страну на вершину мира — дипломатией, экономикой или ядерным арсеналом.
Мировое господство — многопользовательская настолка для голосовой конференции. Один игрок ведёт партию с панели ведущего и выводит статистику на экран/проектор, остальные управляют странами со своих телефонов.
Игра идёт 6 раундов, каждый состоит из двух фаз:
- Дебаты — игроки прокачивают экономику, покупают вооружение, вводят санкции, ведут переговоры и наносят удары.
- Обсуждение — ведущий подводит итоги раунда, показывает статистику мира и разрешает переговоры вживую.
Побеждает страна с наивысшим уровнем жизни к концу 6-го раунда — или единственная уцелевшая на карте.
- 🌍 8 стран (Россия, США, Китай, Германия, Франция, Япония, Северная Корея, Израиль), у каждой 4 города со своим генеративным силуэтом
- 📊 Панель ведущего — карточки всех стран, график экологии мира по раундам, диаграмма уровня жизни, подробный журнал событий с фильтром
- ☢️ Ядерное оружие — реакторы, боеголовки, удары по городам, ПВО-перехват
- 💹 Экономика — прокачка городов, доход, вклады в экологию
- ⚖️ Дипломатия — санкции, денежные переводы и система переговоров (запрос → принятие/отклонение → ведущий сводит игроков)
- ⏱️ Реальное время — лобби, ходы и события синхронизируются через long-polling
- 🎨 Тёмный интерфейс в стиле «ситуационной комнаты», SVG-графика, адаптивная вёрстка
| Слой | Технологии |
|---|---|
| Backend | Python 3.10+, FastAPI, Pydantic, Uvicorn |
| Frontend | React 18, Vite, React Router, CSS Modules |
| Инфраструктура | nginx (статика + reverse-proxy), systemd, Let's Encrypt |
flowchart LR
P["🎮 Игроки<br/>(браузер)"] -->|HTTPS| N[nginx]
H["🎙️ Ведущий<br/>(проектор)"] -->|HTTPS| N
N -->|статика SPA| S["React / dist"]
N -->|/api| U["Uvicorn : FastAPI"]
U --> G["Игровое состояние<br/>(в памяти)"]
Требования: Python 3.10+, Node.js 18+
cd backend
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
uvicorn main:app --reloadAPI поднимется на http://127.0.0.1:8000, Swagger-документация — на /docs.
cd frontend
npm install
npm run devИгра откроется на http://localhost:5173. Адрес API берётся из frontend/.env.development (по умолчанию http://127.0.0.1:8000).
Чтобы включить отладочные эндпоинты и запуск игры в одиночку, задайте
WD_DEBUG=1перед стартом backend.
cd frontend && npm run build # соберёт статику в frontend/distВ продакшене:
nginxраздаётfrontend/distи проксирует/api/на Uvicorn;- backend запускается как systemd-сервис с
WD_DEBUG=0(отладочные эндпоинты выключены); - HTTPS через Let's Encrypt (
certbot --nginx) с авто-продлением.
Живая версия: world-domination.ru
world-domination/
├── backend/ # FastAPI-приложение
│ ├── api/ # роутеры: room, user, game, events, debug
│ ├── modules/db/ # игровая модель (комнаты, страны, города)
│ ├── config.py # цены, страны, города, баланс
│ └── main.py
└── frontend/ # React-приложение (Vite)
└── src/
├── components/
│ ├── screens/ # экраны: home, lobby, game (country / owner / meeting)
│ └── ui/ # переиспользуемые: charts, icons, modal, city-skyline
└── services/ # API-клиент и long-polling
Оригинальная концепция и первая версия — Александр Замараев (backend/frontend) и Рамир Воробьёв (UI/UX).
Полная переработка (редизайн, статистика ведущего, система переговоров, деплой) — @shalynishka.