docs: add README with full project description
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
177
README.md
Normal file
177
README.md
Normal file
@@ -0,0 +1,177 @@
|
|||||||
|
# 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)
|
||||||
Reference in New Issue
Block a user