Пол арены: плита, висящая в пустоте. Что решено, из чего собирается, чего не хватает. Решения — Decision Journal 2026-08-02/40/45. Стенд, на котором выбиралось: Лаборатория, раздел #/floor.


Что арена говорит игроку

Она не место, а полигон. Под плитой пустота, окружения нет, край несёт цифру. Игра не притворяется, что бой идёт «в лесу»: она показывает сконструированную площадку, и потому анимация создания из ArenaSwapShape перестаёт быть эффектом на входе — она объясняет то, что видно весь бой.

Отсюда же экономия, которая делает подход посильным для соло-разработки: окружение вокруг арены не рисуется вообще. Нет горизонта, нет фона, нет деревьев по краям кадра.

Из чего собирается

СлойЧем делаетсяПолоса правила
Основа плитыодна плоская заливка биомасчитаем
Тональные массынесколько крупных плоскостей разной светлотысчитаем
Тропалента по 3-4 точкам прохождения, иногда с развилкой, иногда её нетсчитаем
Породаугловатые плиты группами, с освещённой верхней граньюсчитаем
Крупный акцентодин валун у края — якорь композициисчитаем
Предметы биомабревно · трещина · столб (см. ниже)считаем
Цветовое пятноодин чужой тон, ~5% площадисчитаем
Растительностьсилуэты дугами, скупо и по краямсчитаем
Зерношум двух масштабов поверх всех заливок, режим overlayсчитаем
Светнаправленный градиент слева-сверху, холодная тень справа-снизусчитаем
Бортсемь слоёв «края конструкта» (ниже)считаем

Биом — это конфиг, а не набор картинок: цвета и тип силуэта. Поляна, лес, пещера, пепелище нарисованы одним кодом.

Архетипы предметов (решено 2026-08-02, выбор Макса)

Каждый — ОДНА форма, меняющая смысл вместе с цветом биома. Так и делают переиспользуемые пропсы: общая геометрия плюс параметр материала вместо отдельного набора картинок на биом.

АрхетипПоляна · ЛесПещераПепелищеЗачем он в кадре
Бревноупавший стволсломанная колоннаобугленная балкаединственная длинная горизонталь
Трещинасухой разломсветящийся разломтлеющий шовединственное, что светится из земли
Столбпеньсталагмитобломокединственная вертикаль с тенью

Ставятся не в центр — там дерутся, и это та же причина, по которой скупа растительность. Влияния на бой у них нет (решение Макса): юниты ходят сквозь, слой остаётся чисто визуальным и потому не трогает детерминизм симуляции. К вопросу вернёмся, когда будет решено позиционирование.

Лужа сперва была отвергнута, но вернулась в разговор: Макс взял её при условии, что сначала появится водный шейдер. Эскиз — ниже.

Вода и отражения — эскиз (обсуждение 2026-08-02, реализации нет)

Отражать нужно всё: небо, юнитов, растительность, эффекты. Из-за этого рекомендация сменилась на ходу — дубли спрайтов хороши для трёх-пяти фигур, а для «всего» честнее один проход отражения в RenderTexture: камера-дубль рисует помеченное «отражается», результат кладётся под воду с искажением и тинтом. Одно правило вместо десятка ручных дублей.

Из «полного» водного ассета нам нужны четыре слоя из десяти. Не нужны: planar reflections через вторую камеру, рефракция (под водой ничего нет), каустика (фотореализм), волны Герстнера (это трёхмерная поверхность). Нужны: искажение по шуму со сдвигом во времени, кромка, бегущие блики, само отражение.

Отражение — условность, а не физика. Сверху вода отражает небо, а не стоящего рядом. Работает именно как условность: силуэт опрокинут от точки касания, сплющен, обрезан маской лужи. Рябь важнее самого отражения — без горизонтальных разрывов силуэт читается второй фигурой, лежащей в воде, а не отражением.

Что до пост-обработки:

СлойПридёт ли самЧто делать
Bloom, виньетка, грейдинг, зернодаполноэкранные, применяются к готовому кадру — вода к тому моменту обычные пиксели
Light2Dнетотражение лежит ниже оригинала, свет ляжет с другой стороны. Делать Unlit и красить от цвета оригинала
Отражение боевых VFXнетони аддитивные и поверх всего; нужен явный проход

HARD-тонкость, о которой узнают поздно: чем гасить отражение. Альфой — яркая вспышка опустится ниже порога bloom и не засветится, отражение выйдет мёртвым. Множителем цвета в HDR — вспышка останется выше порога и отражение засветится слабее оригинала, но живо. Второе, потому что отражённый взрыв, который тоже светится, и есть причина всё это затевать.

Открыто: вода чисто визуальная или получает игровой смысл (замедляет, проводит молнию, тушит горение)? Во втором случае она уходит в симуляцию, и расстановка луж становится сим-рандомом, обязанным совпасть у всех клиентов коопа (Code Standards §8). Дешевле решить до реализации, чем переносить генерацию потом.

Небо и погода (в работе, вердикта нет)

Небо — задний фон ЗА сценой, а не слой поверх неё, и облака живут только выше линии горизонта: ниже начинается бездна, а провал — не воздух (поправка Макса 02.08.2026).

Время суток — Утро · День · Закат · Сумерки; каждое несёт цвет неба у кромки, цвет бездны, цвет света и тени, силу прямого света, длину теней, слабую покраску земли, экспозицию и направление света на облака. Последнее не косметика: днём солнце выше облаков и светится их верх, на закате оно ниже — и подсвечено дно. Без этого вечер читается просто оранжевым днём.

Облачность — Малооблачно · Обычно · Многооблачно · Гроза; тремя числами (плотность, прозрачность, флаг грозы). Гроза добавляет вспышку, но едва: боевые вспышки несут информацию, спорить с ними погода права не имеет.

Чем построено облако — развилка без вердикта (Open Forks): доли, потолок из поля, кучевая гряда. Разбор способов и что в каждом провалилось — журнал 03.08.

Край плиты

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

HARD: борт не режется на клетки. Первая версия разлиновывала его ячейками по мировой единице — и это та же ошибка, что «заменить тайлмап шумом», только на краю: клетка навязывает предмету ритм, которого в нём нет. Пластина одна, секций у неё не существует. Поэтому свечение — плавное поле, волна просчёта — растушёванное пятно, а лучи ставятся сидом свободно, а не по шагу сетки. Дословно (Макс, 02.08.2026): «Почему ты опрять делаешь платисны по квадратикам, а не как основную зону?… Зачем тут квадраты!»

Четыре правила живописной плоскости

Добыты разбором референсов, на которые опирался Wildermyth (фоны Samurai Jack, работы Cartoon Saloon, старый концепт-арт Disney). Отличают живопись от аппликации; нарушение любого возвращает «детский» вид, и это проверено на себе трижды.

  1. У земли нет обводки. Границу держит контраст тона. Обводку получают только предметы, и толщина у неё разная. Равномерный толстый контур по каждому пятну — язык детской книжки.
  2. Форма читается объектом. Тропа — лента вдоль движения, порода — углы и группами. Клякса не сообщает ничего.
  3. Поверх заливки лежит зерно. Идеально ровный цвет читается как заливка в редакторе.
  4. Свет направленный. Виньетка по кругу — не свет, а затемнение. Нужны прижатые тени под формами и холодный рефлекс в тени.

Чего не хватает — очередь развития

Порядок по отношению «что даст / чего стоит». Ничего из этого пока не сделано.

1. Генерация должна читать игровые данные арены

Сейчас формы живут сами по себе. Тропа обязана соединять зоны расстановки (DeploymentZone), порода — стоять там, где не ходят, растительность — редеть в боевом коридоре. Тогда пол перестаёт быть фоном и начинает объяснять поле боя: игрок видит, где будет свалка, ещё до старта.

Это самый крупный пункт списка и единственный, который меняет не картинку, а смысл.

2. Арена копит следы боя

Огонь оставляет выжженное пятно, кровь — тёмное, тяжёлый удар — вмятину. Всё это те же слои, что уже есть, только дописываемые по ходу боя. Даёт то, чего не даёт ни один статичный визуал: к концу боя площадка рассказывает, что здесь было, а повтор-скриншот становится историей.

Стоимость честная: нужен слой decal-ов поверх земли и правило, что он не спорит с телеграфами.

3. Иерархия объектов

Сейчас вся россыпь одного размера, и потому читается как шум. Нужны три тира: один-два крупных акцента на арену (валун, пень, обломок колонны), средние, мелкие. Крупное задаёт композицию, мелкое её поддерживает — без этого поле остаётся равномерным.

4. Живая кромка плиты

У края земля обязана осыпаться, а растительность редеть. Одна строка правил, а плита перестаёт выглядеть вырезанной ножницами.

5. Движение

Трава качается (синус по вершинам в шейдере), пыль под плитой дрейфует, полоса просчёта на борту бежит вдоль края. Ничего из этого не требует новых ассетов, и всё вместе снимает ощущение картинки.

6. Единый источник света

Свет плиты, тени объектов и тени юнитов должны идти в одну сторону. Сейчас направление света задано только в градиенте, а тени рисуются каждая от себя. Плюс контактная тень там, где объект касается земли — без неё предметы «плавают».

7. Зерно по материалу

Одно зерно на всё. Камень должен быть грубее, трава мягче, вытоптанное — глаже. Дешёвая правка, заметно поднимает материальность.

8. Свет по биому

Пещера — холодный сверху, пепелище — тёплый снизу и пыльный. Сейчас световая схема одна на все биомы, и это половина причины, по которой они похожи сильнее, чем должны.


Технический эскиз

В движке всё это — один шейдер на quad плиты плюс инстансинг растительности: слои являются функциями от координаты, ветвлений по объектам нет. Генерация печётся один раз на вход в бой (в RenderTexture), дальше это статичная картинка плюс дешёвые анимированные слои.

LOD не нужен: камера боя фиксирована по зоне арены.

Открытые вопросы

  • Цифра на борту против канона. Цифровая подмена говорит, что цифра — язык перехода, а не состояния. Край плиты несёт её постоянно (2026-08-02/42). Нужно либо исключение для края, либо новая формулировка правила.
  • Как часто меняется арена — новая каждый бой или биом закреплён за узлом карты? От этого зависит, где живёт сид и сколько вариативности имеет смысл.
  • Зоны расстановки рисуются поверх пола отдельным оверлеем или становятся его частью?

Где остановились 2026-08-03

Заход по небу приостановлен по слову Макса — вернёмся позже. Состояние на момент паузы:

  • три способа построить облако живут в стенде рядом, вердикта нет (см. развилку);
  • гряда — рабочий фаворит, но однообразна по высоте и уходит в розово-лиловое на закате: это настройка цвета, не формы;
  • не пробовали: дальний слой ниже к горизонту ради воздуха между планами; один-два доминирующих купола вместо ровной гряды; движение облаков.

Связи