Ревью отметило устаревшие тексты после перехода на загрузку PNG: - assets.ts: заголовок описывал «процедурно, без внешних файлов» — теперь PNG из src/assets/<ключ>.png с процедурным фолбэком. - HOWTO §8: убран совет «заменить тело drawX() на TextureLoader» (уже сделано); актуальный путь — положить PNG с нужным именем в src/assets/. - README/ARCHITECTURE/ASSET_BRIEF: статус «подключено», корректный механизм (рантайм- загрузка по пути, не импорт-бандлинг). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
106 lines
8.9 KiB
Markdown
106 lines
8.9 KiB
Markdown
# Бриф на ассеты — «Биндим Фигняшку»
|
||
|
||
Документ для генерации/догенерации графики (через Claude/дизайн-ИИ или художника).
|
||
Ниже — **готовый промпт** (можно копировать целиком) и **таблица ассетов**.
|
||
|
||
> ✅ **Статус: набор уже подключён.** 21 PNG лежат в `src/assets/` и автоматически
|
||
> грузятся `src/render/assets.ts` по имени файла (`assets/<ключ>.png`); если какого-то
|
||
> файла нет — рисуется процедурный фолбэк. Этот бриф нужен, чтобы **догенерировать или
|
||
> заменить** ассеты: достаточно положить PNG с тем же именем в `src/assets/`.
|
||
|
||
---
|
||
|
||
## Готовый промпт (копировать целиком)
|
||
|
||
> Ты — художник 2D-игр. Сделай ПОЛНЫЙ набор ассетов для рогалика «Биндим Фигняшку»
|
||
> в духе The Binding of Isaac.
|
||
>
|
||
> **Игра и ракурс.** Вид сверху под наклоном (псевдо-3D): пол лежит плашмя и виден под
|
||
> углом ≈50° (камера приподнята и смотрит вниз-вперёд), а персонажи и враги — это
|
||
> ВЕРТИКАЛЬНЫЕ спрайты-биллборды, стоящие на полу и обращённые к камере (фронтальный
|
||
> вид, чуть сверху). Стены — невысокий бортик по периметру комнаты. Комната — прямоугольник
|
||
> 15×11 тайлов.
|
||
>
|
||
> **Стиль.** Мрачное подземелье, мультяшно-гротескный, читаемые силуэты, плотные тёмные
|
||
> контуры, без мелкой суеты — всё должно читаться на маленьком размере. Допустимы пиксель-арт
|
||
> ИЛИ чистый векторно-мультяшный стиль — но ЕДИНЫЙ для всего набора.
|
||
>
|
||
> **Палитра.** Пол — светлый серо-песочный камень (≈#6b6657), стены — холодный сине-серый
|
||
> кирпич (≈#47475a). Поэтому персонажи/враги должны быть НАСЫЩЕННЫМИ и контрастными, чтобы
|
||
> выделяться на светлом полу. Игрок дальнего боя — синий, ближнего — красный. Враги: «обычный» —
|
||
> тёплый терракот, «быстрый» — ярко-красный, «босс» — тёмно-багровый с рогами.
|
||
>
|
||
> **Технические требования (обязательно):**
|
||
> - PNG с прозрачным фоном (alpha), без подложки и без «приваренной» тени/пола.
|
||
> - Спрайты персонажей/врагов/дверей — ВЕРТИКАЛЬНЫЕ, соотношение 3:4 (ширина:высота),
|
||
> персонаж по центру, СТУПНИ у самого нижнего края кадра (мы «ставим» спрайт на пол по низу).
|
||
> - Текстуры пола и стен — БЕСШОВНЫЕ (tileable), повторяются по сетке.
|
||
> - Эффекты (вспышка/искра/дымок) — на прозрачном фоне, со светлым (почти белым) центром,
|
||
> чтобы их можно было тонировать цветом в движке; рассчитаны на аддитивное смешивание.
|
||
> - Никаких теней под персонажем внутри спрайта — тень рисуется отдельным ассетом.
|
||
> - Единая «толщина пикселя»/уровень детализации во всём наборе.
|
||
>
|
||
> **Что нарисовать** — см. список ниже (каждый пункт = отдельный файл с указанным именем
|
||
> и размером). Пришли файлы по этим именам (или один атлас + JSON-карта координат).
|
||
|
||
(Дальше вставь таблицу ассетов из этого файла.)
|
||
|
||
---
|
||
|
||
## Таблица ассетов
|
||
|
||
Имена файлов соответствуют ключам в `src/render/assets.ts` — присылай ровно с такими именами.
|
||
|
||
### Персонажи и враги (вертикальные спрайты 3:4, прозрачный фон, ступни у нижнего края)
|
||
|
||
| Файл | Что | Рекоменд. размер | Заметки |
|
||
|---|---|---|---|
|
||
| `player-ranged.png` | Игрок, режим «дальний» (с пистолетом) | 192×256 | синий; большая голова в духе Isaac |
|
||
| `player-melee.png` | Игрок, режим «ближний» (с ножом) | 192×256 | красный; та же база, другое оружие/цвет |
|
||
| `enemy-normal.png` | Обычный враг | 192×256 | терракот, медлительный, «толстенький» |
|
||
| `enemy-fast.png` | Быстрый враг | 160×213 | ярко-красный, мельче, «дёрганый» |
|
||
| `enemy-boss.png` | Босс | 288×384 | тёмно-багровый, рога, крупный и злой |
|
||
|
||
> Опционально (на будущее, не обязательно сейчас): по 4 ракурса на персонажа
|
||
> (вверх/вниз/влево/вправо) — тогда добавь суффиксы `-up/-down/-left/-right`.
|
||
|
||
### Окружение
|
||
|
||
| Файл | Что | Рекоменд. размер | Заметки |
|
||
|---|---|---|---|
|
||
| `floor.png` | Текстура пола | 256×256 | **бесшовная**, светлый серо-песочный камень, без сильных направленных деталей (виден под углом) |
|
||
| `wall.png` | Текстура стены | 256×256 | **бесшовная**, сине-серый кирпич |
|
||
| `door-closed.png` | Закрытая дверь (засов) | 192×256, 3:4 | стоит в проёме стены; видна во время боя |
|
||
| `door-open.png` | Открытая дверь (тёмный проём/арка) | 192×256, 3:4 | после зачистки комнаты |
|
||
|
||
### Снаряды и эффекты (прозрачный фон, светлый центр, под аддитивное смешивание)
|
||
|
||
| Файл | Что | Рекоменд. размер | Заметки |
|
||
|---|---|---|---|
|
||
| `tear.png` | Снаряд-«слеза» игрока | 64×64 | голубая светящаяся капля |
|
||
| `muzzle.png` | Вспышка из дула при выстреле | 128×128 | радиальная жёлто-белая |
|
||
| `spark.png` | Искра попадания по врагу | 128×128 | бело-жёлтая, короткая |
|
||
| `puff.png` | Облачко при гибели врага | 128×128 | серо-белое, рассеивается |
|
||
| `shadow.png` | Мягкая тень-«пятно» под сущностью | 128×64 | чёрный радиальный градиент, эллипс |
|
||
|
||
### Интерфейс и меню (опционально, но желательно)
|
||
|
||
| Файл | Что | Рекоменд. размер | Заметки |
|
||
|---|---|---|---|
|
||
| `logo.png` | Логотип «Биндим Фигняшку» | 900×220 | прозрачный фон, для стартового меню |
|
||
| `menu-bg.png` | Фон стартового меню | 880×660 | тёмное подземелье, не пёстрый (поверх — текст) |
|
||
| `heart-full.png` / `heart-half.png` / `heart-empty.png` | Сердечки HP | 48×48 | замена полоске HP на сердечки (как в Isaac) |
|
||
| `icon-ranged.png` / `icon-melee.png` | Иконки режимов (пистолет/нож) | 48×48 | для индикатора оружия в HUD |
|
||
|
||
---
|
||
|
||
## Как это подключено (уже работает)
|
||
|
||
1. PNG лежат в `src/assets/` с именами-ключами (`floor.png`, `player-ranged.png`, …).
|
||
2. `src/render/assets.ts` грузит их в рантайме через `THREE.TextureLoader` по пути
|
||
`assets/<ключ>.png` (НЕ импорт-бандлингом). Нет файла → процедурный фолбэк `drawX()`.
|
||
3. Dev-сервер отдаёт `/assets/*` из `src/assets/`; прод-сборка копирует их в `dist/assets/`.
|
||
4. HUD-ассеты (`heart-*`, `icon-*`) грузит `HudOverlay`, меню (`logo`, `menu-bg`) — `index.html`.
|
||
|
||
**Заменить/добавить:** просто положи PNG с тем же именем в `src/assets/` — подхватится само.
|