«Живая авиабаза» — набросок статичного прототипа-концепта (AD-699, Ф0)
Цель Ф0: дешёвый статичный кликабельный прототип изометрической авиабазы с подписанными
зонами → показать людям → провалидировать (хотят ли, понятно ли «где что», не медленно ли).
Никакого кода продукта. Это раскладка для прототипа, а не спецификация реализации. Обоснование —
living-airbase-uiux.md; арт —living-airbase-art-prompts.md.
1. Принцип
Один изометрический ключ-арт (SVG/растр, разд. 2 ресёрча) + прозрачный слой хотспотов сверху:
каждая зона — настоящий фокусируемый элемент (<a>/<button>) с видимой подписью, иконкой,
aria-label и индикатором «вы здесь». Клик по зоне = переход в раздел. Всё, что делает game-режим,
достижимо и через сайдбар (canonical всегда рядом).
2. Раскладка зон (ASCII-эскиз, вид ~35°)
☁ ☁ ★ ★ ★ (звёздное небо #0B1220)
🌲🌲🌲 🌲🌲🌲
┌───────────┐ ╔════════════╗ ┌──────────────┐
│ АКАДЕМИЯ │ ║ БАШНЯ ║ │ МУЗЕЙ │
│ (знания) │ ║ управления ║ │ за забором │
└───────────┘ ╚════════════╝ │ ▟ ▟ ⚑ │
│ ЦУП └──────────────┘
┌───────────┐ ┌───────────────────┐ ┌──────────────┐
│ МАСТЕРСКАЯ│ │ А Н Г А Р Ы │ │ СКЛАДЫ │
│ ✎ 🖨 ⚙ │ │ ✈ ✈ [ ][ ][ ] │ │ ▦ ▦ (ящики) │
└───────────┘ └───────────────────┘ └──────────────┘
~~~~~~~~~~~~~~ В П П (огни #2D7BFF) ~~~~~~~~~~~~~~~~~
┌───────────┐ ┌──────────────┐
│ ПОЛИГОН │ 🛫 (лётное поле / │ ИСПЫТАТЕЛЬНЫЙ │
│ (разборы) │ мероприятия) │ полигон │
└───────────┘ └──────────────┘
🌲🌲🌲 🌲🌲🌲
[ Диспетчерская — лента активности идёт полосой понизу/сбоку ]
Зоны пространственно разнесены, между ними «пустая земля» — чтобы включать наполнение по данным
(Ф1) без перерисовки арта.
3. Зоны → хотспоты → разделы платформы
| Зона (game-имя) | Раздел (canonical) | Хотспот ведёт в | Иконка/образ |
|---|---|---|---|
| Ангар | Ангар / борта | список бортов (Модель→Борт) | ворота ангара + RC-борта |
| Мастерская | Проекты / Aero Designer / инструменты / печать | конструктор и инструменты | верстак, 3D-принтер, чертёж |
| Полигон | Авиаинциденты (разборы/логи/телеметрия) | журнал инцидентов/разборов | площадка анализа (не «крэш») |
| Башня управления | ЦУП: уведомления/сообщения/приглашения/события (AD-662/665) | центр уведомлений | башня со светящейся вышкой |
| Академия | Вики: знания/курсы/мануалы/доки | документация/вики | здание с «книгой/знанием» |
| Музей / Архив | Снятые/завершённые проекты (AD-637) | архив бортов (достоинство) | борта на пьедесталах + флаг |
| Испытательный полигон | Прототипы/черновики/эксперименты | черновики/эксперименты | огороженная тест-площадка |
| ВПП / Лётное поле | Мероприятия/соревнования/фестивали | события/календарь | освещённая полоса, огни |
| Диспетчерская | Лента активности сообщества | community-фид | полоса/панель ленты |
Нейминг существующих разделов продукт-wide (SEO/привычность/ссылки) — отдельное IA/бренд-решение
(см. AD-590). В game-режиме — образные имена; canonical-меню трогать в Ф0 не нужно.
4. Состояния зон: пусто / мало / много (корзины)
Правило: данные (AD-692) → корзина → набор слоёв/плотность. Художник готовит 3–4 варианта плотности
на зону; точное число — бейджем. Это объём Ф1, но заложить в раскладку надо уже в Ф0.
| Зона | 🟤 Пусто (0) | 🟡 Мало (1–3 / 1–10) | 🟢 Много (>N) |
|---|---|---|---|
| Ангар | голое поле + грунтовка/разметка под ангар, CTA «завести борт» | 1 ангар, пара бортиков | несколько ангаров, «загруженный аэродром», бейдж кол-ва |
| Мастерская | пустой верстак / зачехлено | верстак с проектом | активная мастерская, 3D-принтер «печатает» |
| Склады | пустой склад / полки пусты | несколько ящиков | заполненные стеллажи |
| Музей | пусто, за забором пусто | 1–2 экспоната на пьедестале | полный музей + флаг |
| Полигон | ровная площадка | пара отметок разбора | активная лаборатория анализа |
| Академия | маленькое здание/фундамент | здание | расширенная Академия (много материалов) |
| Башня | всегда есть (ядро базы) | + мигают уведомления | + оживлённый ЦУП |
| ВПП | тёмная полоса | несколько огней | полностью освещённая полоса, активность |
Пустые состояния — не «сломано», а приглашение: пустая зона несёт CTA («здесь появится ваш
первый борт»), что заодно закрывает эвристику пустого состояния и онбординг.
5. Хотспот: анатомия (для a11y-корректного прототипа)
Каждый хотспот в прототипе — минимум:
- фокусируемый <a href="/раздел"> (реальная ссылка, работает без JS);
- видимая подпись зоны (не только образ) + иконка;
- aria-label («Ангар: 3 борта») ; состояние «вы здесь» (aria-current);
- достаточная область клика/тапа (мобилка), заметный фокус-ринг (клавиатура);
- badge со счётчиком (из корзины), без счётчика при 0.
6. Фолбэк на canonical-навигацию (обязательно)
- Сайдбар/меню всегда доступны — game-режим это надстройка, не замена. Ни одна функция не живёт
только в базе. - Переключатель «Моя база ↔ обычный вид» — выход в один клик; deep-link
/baseоткрывает режим. - Дефолт по контексту: новичок/«пришёл найти»/мобилка/
prefers-reduced-motion/слабое устройство
→ canonical/статик; кто сам включил базу → запоминаем выбор. - Прототип деградирует чисто: нет поддержки/выключено → пользователь видит обычную навигацию и
ничего не теряет. Анимации в Ф0 нет вовсе (только статичная сцена + hover/фокус).
7. Что валидируем на прототипе (критерии Ф0)
- Узнаваемость: понимают ли без обучения, что это их профиль-база и где какой раздел (подписи!).
- Findability/скорость: могут ли быстро попасть в нужный раздел; не медленнее ли, чем сайдбар
(если медленнее — режим остаётся опциональным «витринным»). - Эмоция/желание: возникает ли «хочу так», ощущение «зашёл домой» (главная гипотеза эпика).
- Понятность роста: считывается ли, что «больше активности → больше база» (без объяснений).
- Мобилка: приемлема ли статичная сцена / нужен ли сразу фолбэк на список.
8. Мини-схема конфигурации зоны (для сборки прототипа)
Ориентир структуры данных зоны (декларативно, чтобы арт и хотспоты не были захардкожены):
{
"id": "hangar",
"label": "Ангар",
"href": "/hangar", // реальный раздел (canonical)
"hotspot": { "x": 0.42, "y": 0.55, "w": 0.22, "h": 0.14 }, // доля от кадра
"icon": "hangar",
"layers": ["ground", "building", "fill", "lights"],
"state_source": "fleet.boards_count", // из AD-692
"buckets": [
{ "max": 0, "state": "empty", "layers": ["ground"], "cta": "Заведите первый борт" },
{ "max": 3, "state": "few", "layers": ["ground","building","fill:1"] },
{ "max": 999, "state": "many", "layers": ["ground","building","fill:many","lights"], "badge": true }
]
}
Это набросок для Ф0-прототипа, а не контракт API. Точные поля/эндпоинты — при реализации Ф1
на данных AD-692.
Sources
- Полный ресёрч и обоснования:
living-airbase-uiux.md. Промпты арта:living-airbase-art-prompts.md.
Данные состояний зон: тикет AD-692. Эпик и нейминг локаций: AD-698.