Визуальное направление и дорожная карта

Что игрок видит и чувствует — и как мы к этому идём. Двухслойный документ: сверху дизайн-намерение (какой опыт), под каждым треком — идеи и тех-эскиз для совместной продумки. Затвердевшие тех-решения (шейдеры, стек, порядок реализации) отражаются в тех-вике (Тех: Roadmap реализации), чтобы док не разошёлся с кодом — это ловит контур tech-scribe. Здесь — где визуал рождается.


Визуальный столп (наполняем)

Одна-две фразы: что игрок должен почувствовать от картинки. Фильтр для всех визуальных решений — «служит этому ощущению? нет → режем». Пишет Макс, я оформляю.

(черновик — заполнить)


Стилевое решение: пиксель-арт отменён, у каждого слоя свой язык

Прежнее решение — «стилизованный пиксель-арт» (принято 2026-07-18) — снято целиком.

Отмена шла слоями, четырьмя отдельными решениями, и ни один слой пикселя не сохранил. Разбирая старые тексты, держи в голове: снят термин, а не технические правила под ним — см. «Что остаётся в силе» ниже.

Единого имени у визуального стиля нет намеренно: слои решают разные задачи и говорят разными языками. Термин каждого слоя — ниже; полное обоснование — в Decision Journal по указанным решениям.

СлойЯзыкРешение
Персонажиплоский «сторибук» бумажной куклой2026-08-01/14
Боевые VFXгладкий параметрический «SAO-стиль»2026-07-31/53
Интерфейслатунно-пергаментные «табак и патина», стекло2026-08-03/6, 2026-08-04/1
Окружение, арена, картатот же сторибук своим языком2026-08-02/43/45

Персонажи — плоский сторибук. Solid-цвета без нарисованных теней (объём и свет отдаёт движок), толстый лайнарт, полу-пропорции 5-6 голов. Референс-триада Wildermyth / Wildfrost / Cult of the Lamb, планка упрощения Reigns и South Park. Модель модульной головы — 2026-08-01/15, /16. Причина отказа дословно: пиксель-арт «не к селу не в городу» рядом с гладкими светящимися эффектами — форму подтянули к той же гладкости, что и свет.

VFX — гладкие и параметрические, шейдерами, без спрайтовых текстур. Дословно: «Как и весь VFX, порезы НЕ в писксель арте, а в нашем SAO стиле». Подробно — VFX Language.

Интерфейс ушёл от пикселя раньше всех (июль 2026) и с тех пор нарастил свой язык: палитра, стекло, минимализм. Пикселя в экранах не осталось.

Окружение2026-08-02/44, дословно: «зачем нам вообще пиксель арт? Мы же от него уходим. В эом и суть, у нас процедурка есть!!!» Практическое следствие важнее эстетического: в пикселе фактуру делает ручная работа, и процедура там соревнуется с художником, а в сторибуке стиль состоит из формы, контура и света — и все три считаются. Язык арены: тёмный цветной контур (не чёрный — чёрный душит цветной свет боя), приглушённая природная гамма, скупая плотность с пустым центром, живописная плоскость с зерном и направленным светом.

Что остаётся в силе

Эти правила к пикселю не были привязаны и переживают отмену термина без изменений:

  • Не идём в pixel-perfect рендер (низкое разрешение + целочисленный апскейл, PixelPerfectCamera). Рендерим в экранном разрешении.
  • Спрайты масштабируются нецелочисленно — целочисленный скейл нам и недоступен: боевая камера ведёт зум непрерывно, в ровное кратное на экране не попасть.
  • Экранный bloom/vignette/grading допустимы. Оговорка живёт только в threshold bloom — светит магия/emissive, а не весь кадр.

Почему так изначально: стиль и настроение важнее пуризма; приоритет — картинка, а не техническая чистота. Этот принцип отмену пережил — он и привёл к ней.

«Визуальный столп» выше ждёт наполнения Максом под новый язык.


Треки

Каждый трек: намерение (опыт) → идеи → статус. Порядок реализации — в «Дорожной карте» ниже.

1. Пост-обработка

Намерение: контраст, фокус на арене, лёгкое настроение через грейдинг — без «мыла».

  • Статус: база собрана (2026-07-18) — профиль Assets/Settings/PostFX/BattlePostFX_Base.asset (Tonemapping Neutral + Color Adjustments + Vignette + консервативный Bloom), Global Post FX Volume в BattleScene, Post Processing включён на боевой камере. Ждёт визуал-приёмки в play.
  • Идеи дальше: per-biome грейдинг (свап VolumeProfile по зоне акта — склеп синий, пустыня тёплая; data-driven BiomeData → профиль); точечная аберрация/дисторшн на удар/финишер; film grain для атмосферы.

2. Атмосфера и погода

Намерение: арена живая, у зоны есть характер; погода как тихий телеграф зоны.

  • Статус: не начато.
  • Идеи: parallax-фон (2–3 слоя); ambient-партиклы под биом (пыль/пепел/споры/светлячки — расширить существующий impact-dust-пресет); погода дождь/снег/туман спрайтами в партиклах; god-rays. Погода = визуальный телеграф зоны акта (стык с зонами/биомами).

3. 2D-свет

Намерение: свет как главный множитель настроения; факелы/ауры/вспышки как акценты.

  • Статус: планируется, кода нет. Тех-план — Тех: 2D-свет (URP 2D Renderer + Light2D, normal через Laigter).
  • Связь: погода без света — декорация; погода + свет = атмосфера. Стыкуется с боевым фидбэком (вспышки/VFX/death как источники света).

4. Переходы между аренами

Намерение: переход между боями — не чёрный фейд, а момент; «загрузка мира» как впечатление.

  • Статус: идея (обсуждение 2026-07-18). Началось с фейда тест-сцена → бой.
  • Идеи: кастомный fullscreen-шейдер перехода в духе SAO — dissolve по гекс-сетке / растворение в частицы (fullscreen ScriptableRendererFeature Blit или overlay-quad с dissolve-маской). Развязан от нарратива — чистый джус, можно прототипировать отдельно.
  • Тонкий бонус: «виртуальная» эстетика перехода — естественный тихий носитель мета-настроения «мир — конструкт» (см. связь с нарративом ниже), без единого явного слова.

5. Gamefeel-докрутки

Намерение: читаемость и драма боя (жанр — real-time-with-pause: игрок наблюдает).

  • Статус: ядро уже богатое (hitstop, kill-slowmo + финишер, screen shake с roll, squash/flash, боевые цифры, pixel-burst, death-shatter) — контур gamefeel-vfx, конфиг CombatFeelConfig. Это докрутка, не стройка.
  • Идеи — значимость: крит/оверкилл как отдельный tier значимости (сейчас «момент» = только килл); телеграф замаха тяжёлой способности (важно для паузного боя); camera punch на добивании; motion trails на снарядах/рывках.
  • Идеи — импакт (per-hit, не записаны): anticipation-замах на автоатаке (микро-оттяг спрайта назад перед ударом — сейчас только post-hit squash); attacker lunge (визуальный микро-рывок атакующего к цели в момент импакта, LitMotion-возврат — даёт вес); impact-frame (на 1–2 кадра подмена момента удара белым силуэтом цели, аниме-приём); directional hit-nudge (цель на хитстопе чуть уезжает от удара и возвращается, sim не трогается); HP-бар juice («призрачный» убывающий след урона à la Slay the Spire + heal-наплыв зелёной волной снизу; бар дёргается на хит).
  • Открытый вопрос — язык периодического урона (решение 2026-07-26). Направленный фидбэк (искры, отброс, выпад) принадлежит только прямому попаданию: у тика яда и у ответки шипов нет ни автора в моменте, ни стороны, и удар, которого не было, не должен читаться как удар. Сейчас дотам оставлены цифра и вспышка. Чем их показывать по-настоящему — не решено: кандидаты — постоянная аура/дымок на отравленном вместо события на тик, пульсация силуэта в такт урону, капли-споры у ног. Решать, когда дойдём до статусов как визуального слоя.
  • Идеи — темп времени (не записаны): hitstop, растущий с уроном (tiered по значимости); first-blood breath (первый килл боя замедляется заметнее обычного kill-slowmo); last-enemy time-ramp (плавный slowmo к добиванию последнего врага арены + мягкий возврат).
  • Идеи — микро-жизнь юнита (idle не мёртвый, не записаны): idle-дыхание (пульс масштаба/ качание, LitMotion loop — для спрайтов без своей idle-анимации); weight-shift на ожидании; facing-flip squash (разворот через сплющивание по X, не мгновенный flipX); target-acquire tell (микро-вздрог при смене цели); death-anticipation (за ~0.1с до смерти белеет/дрожит перед shatter — телеграф + усиление импакта); contact-dust под ногами (FeetPoint) на старте/ остановке движения (переиспользовать impact-dust-пресет).
  • Идеи — UI-микроанимации (app-shell уже живой, не записаны): damage-number по дуге с гравитацией (крит — крупнее, тряска, цвет); combo/streak-каунтер серии убийств; icon-pop на срабатывании мементо/статуса; screen-flash на ключевом событии (первая ульта, смерть Сосуда — стык с авто-паузой C3).
  • Идея — trauma-based screen shake (ПРОВЕРИТЬ текущий ScreenShake): тряска как trauma² с нелинейным затуханием и Perlin-смещением (модель Squirrel Eiserloh) вместо линейной. Если ScreenShake ещё не такой — дешёвый апгрейд «драмы без болтанки». Сначала сверить реализацию.
  • Идея — boss-intro title card (не записано): при старте боя с боссом — полноэкранная карточка представления в духе The King is Watching: диагональная цветная лента через кадр, крупное имя босса декоративным шрифтом + эпитет («Sir Mortifax — The Scholarly Slaughterer»), портрет справа; геймплей за ней притушен, короткая анимация въезда ленты + проявления имени. Джус + читаемость «это важный бой». Стык с треком 4 (переходы) и авто-паузой (C3). Требует контента: портрет + эпитет босса (data-authoring: поле у EnemyData босса).

6. Death-джус и спрайт-шейдеры («язык SAO»)

Намерение: смерть и статусы читаются и «звучат» на языке распадающихся данных; спрайт реагирует шейдером (свечение, растворение, иней), а не только твином. Это узнаваемая сигнатура игры и тихий носитель мета-настроения «мир — конструкт» (стык с треком 4 и мета-нарративом).

  • Цвет эффектов — по правилу, а не на глаз: Vision - VFX Color (яркость щедро, насыщенность как валюта; два поля на юните — главный цвет и палитра разброса).
  • Статус: идея (запрос Макса 2026-07-18). Площадка уже естьDeathShatter + шейдер Guildmaster/Sprite/Shatter; правки шейдера/конфига, не стройка с нуля. Bloom-база (трек 1) уже стоит и подхватит emissive.
  • SAO-смерть (главное):
    1. Псевдо-3D кувыркание. Сейчас _Spin крутит осколки в плоскости — дать каждому чанку вращение вокруг собственной случайной оси в вершинном шейдере (синусоида по «толщине» имитирует переворот). Дёшево — без реальной геометрии.
    2. Три цветовые фазы (сейчас осколки белые весь полёт). impact-вспышка в белый (есть) → короткий возврат исходного цвета юнита на старте разлёта → выцветание в emissive-бирюзу и гашение, которое подхватывает bloom.
    3. Сигнатура движения. Микро-hold (осколки замирают ~0.05с «кристаллизуясь») → вспышка → брызг преимущественно вверх-и-наружу (не радиально-симметрично) → растворение в emissive-точки. Опц. 1-кадровый glitch-джиттер — посев мета-нарратива.
    4. Связки задаром: emissive-осколки = будущие источники 2D-света (трек 3); death-стингер звука — шов в аудио-каталоге уже есть.
  • Идеи-соседи (не записаны): dissolve-смерть (альтернатива shatter для «магических» врагов — нойз-растворение с горящим emissive-краем, тот же SAO-язык); rim-light/outline на юните (читаемость на фоне + подсветка фокуса/наведения — дёшево, сильно); hit-flash по школе урона (тинт вспышки: огонь оранжевый, лёд голубой — вместо единого белого); frozen-иней / burn-угли overlay на статусах (CombatStatusOverlay уже есть placeholder — есть куда лечь).
  • Afterimage / echo (не записано, приоритет Макса): на рывках/blink/телепортах — цепочка полупрозрачных копий спрайта, гаснущих следом. Отличается от motion-trails снаряда (трек 5) — это эхо самого юнита. Сильный «вес скорости» для ассасина/рывковых способностей.
  • Vertex wobble / jelly (не записано): желейное дрожание меша спрайта в вершинном шейдере — микро-характер для слизь/желе-врагов. Дёшево, узнаваемо.

7. Анимация персонажей (скелетная)

Намерение: узнаваемый язык движения по цене соло-разработчика — скелетка вместо покадровки, а уникальность не из инструмента, а из отдельного слоя движения над ригом.

  • Статус: архитектура принята 2026-07-26, реализация отложена. Полный документ — Vision - Character Animation.
  • Суть: два слоя (скучный переиспользуемый риг + «глаголы движения» кодом на корневом трансформе); три оси переиспользования (скелет / архетип оружия / спрайты); инструмент — текущая связка Transform + SpriteRenderer + Animator за $0, пересмотр после третьего юнита.
  • Стык с треком 5: «глаголы движения» (карточный поворот в 3D, дуга выпада, отскок) — это тот же gamefeel-слой на LitMotion, просто применённый к корню юнита. Идеи трека 5 про микро-жизнь юнита и anticipation-замах ложатся сюда же.

Связь с мета-нарративом

Визуал несёт нарративные посевы мета-идеи «игра, которая знает, что она игра» (Meta - Open Questions § Мета-нарратив): переходы-«загрузки», малые детали и аномалии в картинке — это семена slow-burn раскрытия. Посев проектируется заранее (foreshadowing нельзя доклеить потом), поэтому визуальные «странности» стоит держать в поле зрения этого дока по мере их появления. Слой не принят — но швы под него дешевле заложить рано.


Дорожная карта (черновая)

Порядок — предмет совместной продумки; статусы двигаем по ходу.

#ТрекСтатусБлижайший шаг
1Пост-обработкабаза собранавизуал-приёмка в play → крутить значения
2Переходы (SAO-dissolve)идеяпрототип fullscreen-шейдера (развязан)
3Атмосфера / погодане начатоparallax + ambient-партиклы под биом
42D-светпланируетсяпроба Light2D на одном юните end-to-end
5Gamefeel-докруткиядро естькрит-tier, телеграф замаха, impact-frame/lunge
6Death-джус / спрайт-шейдеры (SAO-death, rim, dissolve)идеяSAO-смерть: правки shatter-шейдера (3D-спин + цвет-фазы)
7Анимация персонажей (скелетка)архитектура принята, отложеноаватар + маски + слой Block на первом юните

Ограничение: визуальный опыт защищён от урезания (см. tech-роадмап «НЕ режем: ощущение кор-петли»). Для фестиваля-среза (окт. 2026) — приоритет читаемости и «первого впечатления».


Детальные каталоги приёмов (ресёрч 2026-07-18)

Этот док — зонтик (намерение + дорожная карта). Полные каталоги конкретных приёмов с инструментом, стоимостью и источниками (собраны deep-research 2026-07-18, статус proposed):

  • VFX Graph — боевые эффекты в мире (shockwave-дисторсия, GPU-импакты, щиты, dissolve).
  • UI-juice — HUD, damage numbers, HP-бары, экраны, boss-intro card.
  • Gamefeel — тактильно-временной слой (hitstop/shake/slowmo/ramps) + принципы.
  • Свет + пост + атмосфера + переходы — URP 2D свет, экранный пост, погода, SAO-переходы.
  • SFX — impact-слои, FMOD voices, sidechain, адаптивная музыка, звуковой телеграф.

Связь: concept (дух вечеринки, запоминаемость), difficulty-skill (честность/читаемость), Vision - Character Animation (скелетка, слои движения, инструмент), Meta - Open Forks (мета-нарратив, посевы).