# 3D Hommie RPG — Выживание в большом городе

Браузерная 3D RPG о выживании бездомного в большом городе. Управляй персонажем от первого лица, зарабатывай деньги, строй укрытие, прокачивай навыки и борись с опасностями улицы.

---

## Скриншот

> Запустите игру через браузер — Three.js рендерит сцену прямо в `<canvas>`.

---

## Технологии

| Технология | Версия | Назначение |
|---|---|---|
| [Three.js](https://threejs.org/) | 0.160.0 | 3D-графика и рендеринг |
| Vanilla JavaScript | ES6+ модули | Игровая логика |
| HTML5 / CSS3 | — | UI и стили |
| Node.js / Serve | — | Локальный dev-сервер |

Зависимости от сторонних фреймворков (React, Vue и т.п.) отсутствуют. Three.js подключается через CDN (jsDelivr) с Import Maps.

---

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

```bash
# Клонировать репозиторий
git clone https://git.dolgolyov-family.by/maxim.dolgolyov/Hommie_RPG_Game.git
cd Hommie_RPG_Game

# Установить зависимости
npm install

# Запустить локальный сервер
npm start
```

Откройте в браузере: `http://localhost:3000`

> **Важно:** игра требует HTTP-сервер (не открывать `index.html` напрямую через `file://` из-за ES6-модулей).

---

## Управление

| Клавиша | Действие |
|---|---|
| `W A S D` | Движение |
| `Мышь` | Обзор камеры |
| `E` | Взаимодействие |
| `I` | Инвентарь |
| `Q` | Квесты |
| `K` | Навыки |
| `Tab` | Карта / компас |
| `B` | Попрошайничать |
| `G` | Играть на улице (музыка) |
| `H` | Построить укрытие |
| `Space` | Атака / отбиться |
| `F` | Взять предмет |
| `M` | Меню |
| `Esc` | Пауза |

---

## Игровые системы

### Выживание
- **6 характеристик:** Здоровье, Голод, Тепло, Настроение, Гигиена, Деньги (₽)
- Характеристики убывают со временем в зависимости от погоды и сезона
- Расходуемые предметы восстанавливают параметры

### Экономика
- Попрошайничество и уличная музыка — случайные пожертвования
- Доска объявлений — 7 видов подработок (мыть машины, раздавать листовки, разгружать товары и др.)
- Сбор и сдача бутылок
- Крафт и продажа предметов
- Репутация влияет на цены в магазинах и размер оплаты труда

### Строительство укрытия
Постройте и улучшайте лагерь из 5 модулей:

| Модуль | Эффект |
|---|---|
| Крыша | Защита от осадков |
| Кровать | Восстановление при сне |
| Печка | Обогрев |
| Дверь | Защита от врагов |
| Склад | Расширенное хранение |

### Прокачка персонажа
- **4 ветки навыков:** Собирательство, Попрошайничество, Выживание, Торговля
- XP-система с экспоненциальным ростом требований к уровню
- Навыки меняют игровые модификаторы (шанс сбора, размер пожертвований и т.д.)

### Репутация
- Шкала от −100 до +100
- Влияет на диалоги с NPC, цены, опасность и возможности подработки

### Опасности
- 4 типа врагов: бандиты, воры, пьяные, члены банды
- Ночью и при низкой репутации враги появляются чаще
- Укрытие с дверью — безопасная зона

### Погода и сезоны
- Динамическая погода: ясно, дождь, снег, туман
- 4 сезона по 7 игровых дней
- Температура влияет на скорость потери тепла и голода

### Квесты и достижения
- Система квестов с отслеживанием прогресса и наградами
- 25+ достижений в 5 категориях: выживание, социальное, экономика, бой, исследование

### Компаньон
- Можно найти и приручить собаку, которая следует за игроком

### Сохранение
- Локальное сохранение/загрузка прогресса
- Пункт «Продолжить» в главном меню

---

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

```
3D_Hommie_Rpg/
├── index.html              # Точка входа
├── editor.html             # Редактор карты
├── css/
│   └── style.css
├── js/
│   ├── main.js             # Инициализация
│   ├── game/
│   │   ├── Game.js         # Главный контроллер и игровой цикл
│   │   ├── Player.js       # Персонаж и характеристики
│   │   ├── Camera.js       # Камера от первого лица
│   │   ├── World.js        # Генерация мира и освещение
│   │   ├── UI.js           # HUD, меню, диалоги
│   │   ├── Inventory.js    # Инвентарь и предметы
│   │   ├── Equipment.js    # Экипировка (4 слота)
│   │   ├── Housing.js      # Строительство укрытия
│   │   ├── Skills.js       # Навыки и прокачка
│   │   ├── Reputation.js   # Репутация
│   │   ├── QuestSystem.js  # Квесты
│   │   ├── Achievements.js # Достижения
│   │   ├── Events.js       # Событийная система
│   │   ├── NPC.js          # Неигровые персонажи
│   │   ├── Dog.js          # Компаньон-собака
│   │   ├── Dangers.js      # Враги и ИИ угроз
│   │   ├── Police.js       # Полицейские патрули
│   │   ├── Weather.js      # Погода
│   │   ├── Seasons.js      # Сезоны
│   │   ├── Particles.js    # Частицы (огонь, дождь, снег)
│   │   ├── SoundManager.js # Аудио
│   │   ├── SaveSystem.js   # Сохранение
│   │   ├── JobSystem.js    # Подработки
│   │   └── Interiors.js    # Интерьеры локаций
│   └── editor/
│       └── MapEditor.js    # Редактор уровней
├── data/
│   └── map-config.json     # Конфигурация карты
├── textures/               # 3D-модели и текстуры
└── package.json
```

---

## Лицензия

MIT License — свободное использование, изменение и распространение.

---

## Автор

Maxim Dolgolyov — [git.dolgolyov-family.by](https://git.dolgolyov-family.by/maxim.dolgolyov)
