Границы дока

Подача карты акта: чем она нарисована, что на ней шевелится и что запланировано. Дизайн самой карты — области, зоны, формы — живёт в Run - Act Map: Regions & Zones; здесь только показ. Реализация и её готчи — за кодом и тех-журналом.

Заведён 2026-08-02 по заказу Макса: «закинь туда весь планируемые gamefeel / vfx по карте… Это потом, но тоже надо бы обсудить. Просто не забудь!»

Один канал — один владелец (2026-08-02)

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

КаналВладелецПочему он
Оттенокфракция зоныединственное, что читается боковым зрением на всей площади
Значки и штриховка (ахроматика)рельеф областидругая размерность, с цветом не конкурирует
Форма графа и рисунок дорогрельеф областиосыпь видна диагоналями, гребень — параллелями
Яркость и насыщенностьсостояние узладоступен / пройден / недоступен — только светлотой
Иконка внутри узлатип узлабой, лавка, «?»
Ободок узлапринадлежность зонеправда, не зависящая от того, видно ли пятно
Толщина и фактура линиивид дорогитракт, тропа, привратник, заслон

Отклонено до кода: давать рельефу собственное цветное пятно. Два цветных слоя в одном канале не расходятся никакими настройками прозрачности — на листе получаются четыре перекрывающиеся заливки, и не читается ни одна. Живьём оба варианта стоят рядом в Лаборатории, раздел Карта → Подача.

Словарь знаков рельефа

Знак картографический, а не иллюстрация: несколько крупных штрихов, читаемых на общем зуме карты. Рисуется процедурно тем же шейдером, что пятно зоны; спрайты не заводим. Плотность россыпи одинаковая у всех рельефов — иначе густота знаков начнёт спорить с плотностью узлов.

РельефЗнак
Долина (Vale)травяные кочки, три пучка
Чаща (Thicket)плотный частокол стволов, за который не видно
Тропа (Trail)цепочка следов, уходящая вбок
Гребень (Comb)параллельные штрихи на общей оси
Рукава (Forks)ствол, расходящийся надвое
Перевал (Muster)две вершины и седловина между ними
Осыпь (Scree)камни, сползающие в одну сторону
Логово (Lair)тёмный зев под сводом

У знаков свой тумблер map.relief (решение Макса 2026-08-02). Это ровно тот слой, который может оказаться шумом, и проверяется он переключателем, а не спором.

Подземелье — дыра в бездну

Подземелье отделено от всего, и фракции сверху на него не влияют (Макс, 2026-08-02): «Выглядит будто “дырка в бездонную бездну”». Отсюда правила показа:

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

Так подземелье читается как посторонний объект на карте, а не как ещё одна область чьей-то земли.

Карта — остров, поделённый зонами без остатка (2026-08-02)

Финальная на сегодня модель, после серии уточнений Макса.

  • Карта не прямоугольник, а рандомный ОСТРОВ. Его форма выводится из зон влияния: суша там, куда достаёт влияние графа. Дословно: «лучше как раз на основе зон влияний создавать этакий “остров”, по которому идем… у нас карте на просто прямоугольник. а такой вот рандомный отсров».
  • Ничейной земли НЕТ. Внутри острова каждая точка принадлежит какой-то зоне; зоны делят его между собой и ограничивают друг друга.
  • Берег забирает атласные приёмы: ореол, тень по юго-восточной кромке, отмывка от северо-запада — те, что отрабатывались на отложенном прототипе «Земля и страна».
  • Границы рваные, и сильно («мне нравится такая дикая рванность»): координаты гнутся фрактальным шумом до замера, поэтому граница у соседей ОДНА И ТА ЖЕ.
  • Из подписей — только имя. Печатей и эмблем нет. Имя лежит целиком внутри своей зоны и не перекрывает узлы и дороги: втискивается в свободные участки. Кегль — по площади зоны.
  • Цвет — из пресетов фракции. Около десяти родственных оттенков на фракцию (гоблины всегда зелёные, но разные), выбор случайный без повторов. Разброс светлоты узкий: широкий выцветает до бежевого, и разбойники перестают быть разбойниками (проверено рендером).
  • Имя зоны = прилагательное + фракция («Взрывные Гоблины»).
  • Переход между зонами — база, а не событие: никаких вспышек кромки при входе.

Лист под островом — обычный прямоугольник. Дословно: «у нас под островом “карта”. Наверное тот же прямоугольник. А наш остров читаеся как остров благодаря береговой линии и т.д.» То есть форму даёт берег, а не вырезанный лист.

Имя идёт ВДОЛЬ ОСИ зоны (принято 2026-08-02, «круто, сделаем»): наклон берётся от главной оси территории и клампится, чтобы подпись не вставала вертикально.

Требования к раскладке, без которых подача не работает

Проверено рендером акта в настоящих пропорциях (15 колонок, ширина до 9):

  1. Шаг между узлами заметно больше нынешнего — и по ширине, и по высоте. Дословно: «У нас должен быть намного больший сейс по высоте между точками. И по ширине между ними.» На тесной сетке территория превращается в лоскуты между дорогами.
  2. Пробел между разными областями обязателен: «опять, ты не добавила пробел между разными рельефами. Они должны читаться отдельно». Расстояние между областями и ЕСТЬ показ рельефа — отдельной картинки рельефу не нужно, и этим же закрывается вопрос «как показать форму области».
  3. Веер дорог ограничить (proposed): из узкой колонки сейчас расходится пучок через полкарты. Веер режет территорию на ленты, съедает все свободные пятна под имена и сам по себе делает карту нечитаемой — ту же болезнь лечили в D7.

Открытая проблема, найденная рендером: имена не встают. На карте в настоящих пропорциях пять имён из шести не нашли места и алгоритм честно отказался их ставить (текст поверх дорог он не пишет). Кандидаты на лечение, по убыванию силы: увеличенный шаг и пробелы (пункты 1–2) · гарантия «пухлости» зоны при генерации · сокращённое имя как страховка («Проворные» вместо «Проворные Гоблины» — вид виден по цвету) · текст по дуге вместо прямой.

Как размещается подпись. Проверяется не точка, а весь прямоугольник надписи: каждая его клетка обязана принадлежать этой зоне, быть сушей и отстоять от узлов и дорог дальше зазора. Кандидаты перебираются по сетке, выигрывает позиция с наибольшим зазором; не влезло — кегль уменьшается.

Найдено рендером: узкая изрезанная зона может не иметь места под имя ни на каком кегле. Значит генерация обязана давать зонам минимальную «пухлость», либо подпись при нехватке места получает право лечь поверх дорог (но не узлов). Открыто.

ОТЛОЖЕНО: атласная модель и летающие острова (2026-08-02)

Решение Макса: «Местность мы пока что никак НЕ рисуем. Может это и не надо. Остаемся на карте. Просто делим и рисуем зоны влияния.» Всё, что ниже до конца раздела, — отложено и требует доработки; материал сохранён, потому что пригодится для облика второго акта.

Что делаем вместо: карта остаётся картой узлов и дорог, единственный территориальный слой — зона влияния фракции. Рельеф живёт как механика (форма области решает, как ходят дороги), но собственной картинки не имеет: его видно по рисунку графа. Варианты отрисовки зоны — в Лаборатории, раздел «Карта → Зоны влияния».

Атласная модель: рельеф — земля, фракция — страна на ней

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

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

Как генерируется земля

Метаболы дают круглые кляксы — материка из них не выйдет. Стандарт жанра другой и проверен временем (Amit Patel, polygonal map generation):

  1. Вороной по узлам + релаксация Ллойда — площадь карты нарезается на ячейки, каждая принадлежит ближайшему узлу.
  2. Ячейки области склеиваются в один полигон — это и есть её земля, она автоматически обнимает свои узлы и дороги.
  3. Контур сглаживается (Чайкин), потом ломается фрактальным смещением — берег обязан быть рваным на всех масштабах, гладких берегов в природе не бывает.
  4. Печём один раз в RT при генерации акта — дальше это просто картинка.

Вороной даёт то, чего не даст метабол: соседние земли делят общую границу, а не наползают друг на друга кругами.

В прототипе Лаборатории (#/map-terrain) шаг 1–3 заменён более дешёвым эквивалентом: поле расстояний до узлов и дорог, у которого координаты гнутся фрактальным шумом до замера. Один этот приём ломает берег на всех масштабах сразу. Тем же искажением гнётся и граница страны — иначе рваный берег соседствует с линейкой.

Приёмы бумажной картографии, дающие красоту почти даром

  • Ореол у берега — две-три линии, повторяющие контур снаружи, или точечная отсыпка. Один этот приём мгновенно превращает силуэт в «карту». Проверено рендером: градиентная полоса не работает, нужны чёткие линии на фиксированных отступах.
  • Тень по юго-восточной кромке — земля приподнимается над листом, объём из ничего.
  • Отмывка (hillshading) — свет всегда с верхнего левого угла, иначе горы читаются впадинами. Проверено рендером: на полной силе поле ломается вдоль медиальной оси и земля выглядит мятой фольгой; нужен сглаженный шаг градиента и втрое меньшая сила.
  • Штриховка Лемана (hachures, 1799) — штрихи вдоль склона, гуще там, где круче. Изобретена ровно для нашей задачи: показать рельеф без цвета, потому что цвет занят другим. Идеальный язык для осыпи и гребня.
  • Подписи по-картографически: земли — курсивом вдоль изогнутой оси области; страны — капителью в разрядку по центру владений. Разная типографика делает половину работы по разделению слоёв.
  • Граница страны — тонкий пунктир поверх всего; он не спорит с берегом, потому что берег сплошной.

Живой референс всей связки «Вороной → берег → политические владения → подписи» — Azgaar’s Fantasy Map Generator.

Летающие острова — идея Макса 2026-08-02 (proposed)

«Берем базовые летающие острова. Каждый тип местности - свой остров все-таки… Между ними - натуральная пустота, мосты и т.д. Карта становится в 2 уровня. Верхний (обычная карта) и нижний (просто красивый “низ” острова”, т.е. смотрим не сверху вниз, а скорее сбоку… Мы все еще “карта на столе”, но это 3д карта островов на столе!»

Что идея решает по-настоящему: пробел между областями получает физический смысл. Пустота между островами не требует объяснений, тогда как пустое место на сплошной земле выглядит недоделкой.

Оценка и возражения (мои, proposed) — в журнале решений за 2026-08-02. Коротко: «остров на каждую область» возвращает архипелаг, от которого мы ушли, и вместе с ним — полтора десятка мостов, отчего «гигантский мост» перестаёт быть событием; плюс конфликтует с трактом как торговой дорогой. Рекомендация: остров = крупная плита акта (3–4 на акт), а не каждая область, а полноценный небесный архипелаг — облик ДРУГОГО акта.

Цена, если камера остаётся строго сверху: низ острова рисуется тем же контуром, вытянутым вниз с сужением и шумом (сталактит), водопад — шейдером по кромке. Это недорого. Дорого становится тогда, когда появляются наклон камеры, перекрытия островов и тени друг на друга.

Правила подачи

Три штуки, которые старше любого эффекта в таблицах ниже.

  1. С одного взгляда видно три вещи: куда я могу шагнуть, чья это земля (цвет зоны), что здесь особенного (одна метка на область). Всё остальное — по наведению. Пятый информационный слой ломает карту вернее, чем любой некрасивый эффект.
  2. Пятно — атмосфера, правду носит узел. Пятно зоны размывается, перекрывается и уходит под дымку; принадлежность держит ободок на самом узле. Прецедент — туман карты (D9): атмосфере нельзя доверять механику в одиночку.
  3. Области разделяются негативным пространством, а не вторым слоем пятен: пробел по горизонтали, одиночная длинная дорога вместо веера, тонкий процедурный шов на листе. Два накладывающихся слоя цветных пятен превращают карту в кашу.

Что уже в игре

ЭффектТумблерЗаметка
Лист пергамента с рваным краемmap.sheetобтягивает граф с полями, рваность в шейдере по периметру
Стол под листом, тёплое пятно светаmap.tableуглы тонут, край стола в кадре = баг
Шторка перехода на шагвыбор засчитывается на закрытом кадре, подмены не видно
Моргание доступных узловmap.pulseодна огибающая: два поля разъезжались
Бегущая волна по дорожкамmap.pathflowдоли такта, не секунды
Поездка фишки-шлемаmap.travelвыключена, заменена шторкой
Туман картыmap.fogвыключен Максом: «не то, мб позже»
Локальная постобработка картыpost.mapсвой Volume, арену не накрывает

Запланировано

ЭффектЗачемСостояние
Значки рельефавторой слой карты, не спорящий с цветом зоныплан
Grand Line — сквозная линия и три отметки наградлиния видна с начала акта, отметки капают по ходуплан
Дверь подземелья, привратник у входариск виден, начинка нетплан
Виды дорог линией (тракт, тропа, привратник, заслон, вслепую, режущая)свойство дороги читается самой линиейплан
Карточка области при наведенииимя, строка образа, строка правилаплан
Пятно зоны: SDF-метабол по узлам + domain warpорганический «островной» край вместо полигоновплан, печётся в RT один раз на генерацию акта
Ободок зоны на узлеправда о принадлежностиплан, см. правило 2
Картуш с именем зоны + иконка эффекта«Молниеносные Гоблины» читается сразуплан
Раскрытие зоны при входечернила расползаются от узлаплан
Дверь подземелья и карточка наградыриск виден, начинка — нетплан
Обвал за спиной на входе в областькоммит должен ощущаться, а не только бытьплан
Шов между областямиразделение без второго пятнаплан
Подсветка достижимого на 1–2 шагавместо подсветки ряда: игрок читает рёбра, а не вехиплан
Счётчик шагов до боссаответ на вопрос, ради которого хотели вехиплан
Грейдинг карты по зонелокальный Volume под фракциюплан, стык с Visual Direction
Ambient-партиклы под зонуспоры, пепел, светлячкиплан
Чернила дорисовываются за фишкойтех-вектор вместо отвергнутого «листа на столе»план
Роза ветров и сеткапроцедурно на Shapes, не артплан
Параллакс-дымкаслой над листомплан
Звук картышелест бумаги, пероплан, стык с аудио-контуром

Связи