Пол арены: плита, висящая в пустоте. Что решено, из чего собирается, чего не хватает. Решения — 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. Генерация должна читать игровые данные арены
Сейчас формы живут сами по себе. Тропа обязана соединять зоны расстановки (DeploymentZone),
порода — стоять там, где не ходят, растительность — редеть в боевом коридоре. Тогда пол перестаёт
быть фоном и начинает объяснять поле боя: игрок видит, где будет свалка, ещё до старта.
Это самый крупный пункт списка и единственный, который меняет не картинку, а смысл.
2. Арена копит следы боя
Огонь оставляет выжженное пятно, кровь — тёмное, тяжёлый удар — вмятину. Всё это те же слои, что уже есть, только дописываемые по ходу боя. Даёт то, чего не даёт ни один статичный визуал: к концу боя площадка рассказывает, что здесь было, а повтор-скриншот становится историей.
Стоимость честная: нужен слой decal-ов поверх земли и правило, что он не спорит с телеграфами.
3. Иерархия объектов
Сейчас вся россыпь одного размера, и потому читается как шум. Нужны три тира: один-два крупных акцента на арену (валун, пень, обломок колонны), средние, мелкие. Крупное задаёт композицию, мелкое её поддерживает — без этого поле остаётся равномерным.
4. Живая кромка плиты
У края земля обязана осыпаться, а растительность редеть. Одна строка правил, а плита перестаёт выглядеть вырезанной ножницами.
5. Движение
Трава качается (синус по вершинам в шейдере), пыль под плитой дрейфует, полоса просчёта на борту бежит вдоль края. Ничего из этого не требует новых ассетов, и всё вместе снимает ощущение картинки.
6. Единый источник света
Свет плиты, тени объектов и тени юнитов должны идти в одну сторону. Сейчас направление света задано только в градиенте, а тени рисуются каждая от себя. Плюс контактная тень там, где объект касается земли — без неё предметы «плавают».
7. Зерно по материалу
Одно зерно на всё. Камень должен быть грубее, трава мягче, вытоптанное — глаже. Дешёвая правка, заметно поднимает материальность.
8. Свет по биому
Пещера — холодный сверху, пепелище — тёплый снизу и пыльный. Сейчас световая схема одна на все биомы, и это половина причины, по которой они похожи сильнее, чем должны.
Технический эскиз
В движке всё это — один шейдер на quad плиты плюс инстансинг растительности: слои являются
функциями от координаты, ветвлений по объектам нет. Генерация печётся один раз на вход в бой (в
RenderTexture), дальше это статичная картинка плюс дешёвые анимированные слои.
LOD не нужен: камера боя фиксирована по зоне арены.
Открытые вопросы
- Цифра на борту против канона. Цифровая подмена говорит,
что цифра — язык перехода, а не состояния. Край плиты несёт её постоянно (
2026-08-02/42). Нужно либо исключение для края, либо новая формулировка правила. - Как часто меняется арена — новая каждый бой или биом закреплён за узлом карты? От этого зависит, где живёт сид и сколько вариативности имеет смысл.
- Зоны расстановки рисуются поверх пола отдельным оверлеем или становятся его частью?
Где остановились 2026-08-03
Заход по небу приостановлен по слову Макса — вернёмся позже. Состояние на момент паузы:
- три способа построить облако живут в стенде рядом, вердикта нет (см. развилку);
- гряда — рабочий фаворит, но однообразна по высоте и уходит в розово-лиловое на закате: это настройка цвета, не формы;
- не пробовали: дальний слой ниже к горизонту ради воздуха между планами; один-два доминирующих купола вместо ровной гряды; движение облаков.
Связи
- Решения — Decision Journal
2026-08-02/40–/45. - Почему процедура здесь дешевле, чем в пикселе — Journal - Procedural Cost Depends On The Visual Language.
- Полосы применения процедуры — Code Standards §8.
- Переход в бой — Цифровая подмена арены.