<!-- MANAGED BY sync_project_docs.py -->

Devlog - 19.05.2026

Кратко за день

Сегодня зафиксировали то, что важно знать до продолжения, а затем добавили несколько маленьких gameplay-шагов для vertical slice. Slavic Survival — это не "Valheim с русскими шапками". Это survival в мире, где лес живёт по своим правилам, духи смотрят из темноты, а хозяин леса — не просто враг, а что-то гораздо большее. Первый boss — Леший. Баба Яга появится позже и будет нечем-то куда интереснее, чем просто боссом.

Контекст

После закладки backend и первого playable loop пришло время зафиксировать направление. Без этого следующие технические решения могут идти не туда. Gameplay reference, сеттинг, первый биом, первый босс — всё это теперь записано.

Что сделали

Зафиксировали gameplay reference

На первом этапе gameplay structure намеренно близка к **Valheim**: сбор ресурсов → крафт инструментов → строительство → еда/баффы → алтарь призыва → победа над боссом → прогрессия. Это не копирование — это использование проверенной структуры, чтобы сначала получить рабочий vertical slice, а потом думать, что менять.

Зафиксировали сеттинг

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

Определились с первым боссом

**Леший** — кандидат на первого босса вертикального среза. Хозяин первого леса, проверяет базовый loop игрока. Призыв через капище, возможные механики — корни, духи, исчезновение между деревьями.

**Баба Яга** — слишком важный образ для роли "просто первого босса". Зарезервирована для чего-то более интересного: загадочный NPC, хранительница перехода между биомами, dungeon encounter, испытание. Решение позднее.

Разделили Devlog и Changelog

Devlog — для игроков, постов, новостей. Changelog — для технической истории, списков компонентов, результатов тестов. Теперь в Devlog не будет перечней классов и имён методов, а в Changelog — лирических отступлений.

Добавили первого врага — backend

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

Добавили первый backend алтаря

Появился первый шаг к призыву босса: алтарь может принять подношение из предметов игрока, списать их из инвентаря и запустить placeholder summon. Пока без эффектов, катсцен и настоящего боя с боссом — только backend-скелет, который можно проверить руками.

Теперь этот путь получил отдельную placeholder-цель: Forest Guardian. Это ещё не финальный Леший, без фаз и красивых спецатак, но уже не обычный Forest Imp на 30 HP. У него больше здоровья, сильнее удар и свой loot table — первый контур будущей цепочки "подготовился → принёс подношение → вызвал сильного врага → победил → получил награду".

Что проверили руками

Сегодня проверен **Test 10** — interaction prompt UI в S&box Editor.

Результат: работает. Смотришь на куст ветвей — видишь E: Branch Pile. Смотришь в пустоту — только crosshair. Это первый раз, когда прототип даёт видимый feedback без открытия Inspector. Маленький момент, но он меняет ощущение: это уже не тестовый стенд, а что-то похожее на игру.

Что было сложно / что выяснили

Зафиксировать направление проекта на бумаге сложнее, чем кажется. Нужно было определиться:

  • Насколько близко к Valheim по gameplay? (Близко, осознанно, для первого этапа.)
  • Что именно в сеттинге от реальной мифологии, а что — авторская интерпретация? (Всё — авторская интерпретация. Мы не реконструкция.)
  • Баба Яга — босс или NPC? (Скорее NPC / особая роль. Не первый босс точно.)

Gameplay progress

Stone Axe — больше не просто инструмент для рубки деревьев. Теперь если он в активном слоте и атакуешь врага, он наносит 15 урона вместо 2 голыми руками. И между ударами нужно подождать — кулдаун. Это уже проверено руками: скрафченный инструмент работает как первый weapon-like предмет.

Теперь combat loop связал несколько систем в одну цепочку: собрать ресурсы, скрафтить Stone Axe, выбрать активный слот, ударить Forest Imp, победить быстрее и получить лут. Прототип становится похожим на игру.

И теперь стало видно, что именно выбрано в активном слоте. Небольшая HUD-плашка показывает Active: Empty или, например, Slot 0: Wood x1. Это ещё не полноценный hotbar, но игроку больше не нужно гадать, чем он сейчас собирается рубить дерево, есть ягоду или бить врага.

После фикса UI-плашка больше не сдвигает crosshair: подсказка взаимодействия остаётся по центру, а active slot живёт отдельно внизу слева. Теперь прототип показывает и то, на что смотришь, и то, что держишь активным — без Inspector и без чтения логов.

Первый враг тоже сделал шаг от манекена к существу. Forest Imp теперь может заметить игрока в простом радиусе, пойти к нему напрямую и ударить на ближней дистанции — и это уже проверено руками. Это ещё не умный враг: без обхода препятствий, патруля, анимаций и сложного поведения. Но для survival loop уже появляется давление мира: враг не просто ждёт, пока его ударят, а сам тянется к игроку и отвечает уроном.

После проверки enemy AI следующим маленьким шагом выбран алтарь: не полноценный boss fight, а backend-точка, где подготовка игрока впервые превращается в запуск призыва.

Следующий кусок vertical slice теперь тоже на месте: алтарь подношения. Игрок сможет принести ветку, дерево и ягоду, а алтарь примет offering и отметит, что призыв босса начался. Если boss prefab уже назначен, появится placeholder; если нет — система честно предупредит об этом и не упадёт. Это не boss fight, но уже первая рабочая дверь к нему.

Следующий слой этой двери — Forest Guardian: временный first boss placeholder на существующих системах врагов. Он призывается через Forest Offering, живёт дольше Forest Imp и должен проверять базовую подготовку игрока: Stone Axe, еду, понимание HUD и готовность выдержать ответный урон.

Ручная проверка закрыла этот кусок: Forest Guardian был призван через лесной алтарь, нашёл spawned Player, выдержал серию ударов Stone Axe, ударил игрока в ответ, умер и выдал награду в инвентарь. Это всё ещё placeholder, но теперь путь к первому боссу уже можно пройти от подношения до лута.

Ещё один важный шаг сегодня — внутренний, но очень нужный для будущего coop. Игрок должен появляться из Player prefab, а не жить как заранее поставленный scene object, поэтому основные player-системы теперь лучше подхватывают соседние компоненты сами. Это не новая видимая фича, зато меньше хрупких ссылок перед будущими runtime/spawn тестами.

После audit сцены добавили ещё один маленький внутренний helper для Screen UI. Сейчас prompt и active slot HUD живут на объекте Screen, отдельно от spawned Player, поэтому им нужен явный ручной binding к живому игроку в Play Mode. Это не новая gameplay-фича, а подготовка к более надёжному player prefab workflow и будущему coop.

Технические решения

  • Gameplay reference зафиксирован в Docs/GDD/Setting.md и Docs/DECISIONS.md.
  • Devlog и Changelog разделены на два типа файлов с разными правилами.
  • Devlog / Changelog папки теперь оба ведутся по датам.

Что проверили руками (Test 11)

Первый враг — Forest Imp — протестирован в S&box Editor. Наносишь удар трижды — враг умирает и бросает ветку в инвентарь. Повторный удар по мёртвому врагу — лут не дублируется. Враг атакует игрока — здоровье игрока падает с 100 до 90. Прототип получил первый настоящий источник угрозы. Пока всё через кнопки в Inspector, но механика работает корректно.

Что проверили руками (Test 12)

Проверен полный цикл урона и восстановления игрока. Наносишь 25 урона — HP падает до 75. Убиваешь кнопкой — HP 0, в логах появляется [DOWN]. Пытаешься нанести урон снова — игнорируется. Лечишь на 10 — игрок восстанавливается. И бонус: если активен Berry Food (+10 HP), то после смерти и revive здоровье восстанавливается до 110, а не до 100. Прототип умеет умирать и воскресать — с учётом всех активных баффов.

Что проверили руками (Test 13)

Первый настоящий combat loop работает. Смотришь на Forest Imp, нажимаешь ЛКМ — он получает урон. Три удара — враг мёртв, в инвентарь падает ветка. Автоматически, без Inspector-кнопок. Можно нажать на дерево или куст ягод — атака проходит насквозь, эти объекты не имеют здоровья. Только враги умирают. Прототип сделал первый шаг от "набора систем" к "игре, в которую можно играть".

Что проверили руками (Test 14)

Stone Axe теперь ощущается как первый боевой инструмент. С ним Forest Imp падает быстрее: два удара по 15 урона вместо долгой возни голыми руками по 2 урона. Если в активном слоте ветка или другой предмет без weapon damage, игра честно считает это unarmed-атакой.

Также проверили важную мелочь для стабильности: нельзя выбивать повторный урон или лишний лут из уже мёртвого врага. Мёртвый Forest Imp просто игнорирует удар, а лут остаётся один раз. Для игрока это означает, что базовая цепочка "крафт → активный слот → атака → смерть врага → лут" теперь работает цельно.

Что проверили руками (Test 16)

Forest Imp больше не просто dummy-цель. Он замечает игрока в радиусе агро, идёт ближе по прямой и бьёт, когда входит в дистанцию атаки. Игрок получает урон не каждый кадр, а по кулдауну, и враг может довести его до down state.

Также проверили важные стоп-условия: если игрок уже down, Forest Imp не продолжает добивать его бесконечно; если враг мёртв, AI больше не двигает и не атакует. Лут после смерти всё ещё выпадает один раз. Это первый "живой" enemy behavior в прототипе — грубый, но уже работающий.

Что проверили руками (Test 20)

Forest Imp теперь не нуждается в ручной ссылке на конкретного Player в сцене. Враг сам нашёл spawned Player после Network Helper spawn, пошёл к нему и начал атаковать по кулдауну.

Это важная внутренняя веха для будущего coop: enemy и boss prefab не должны заранее знать, кто именно будет игроком. Они должны уметь найти живого игрока в runtime. В Test 20 это подтверждено: враг стартует без цели, находит Player - flipsizze, атакует, теряет невалидную/down цель, а после смерти сам больше не действует. Лут после убийства тоже продолжает попадать в инвентарь атакующего игрока.

Что добавили для алтаря

Алтарь теперь может быть не просто декорацией. У него есть data-driven offering: список требуемых предметов, флаг списания и optional boss prefab. Для первого лесного алтаря тестовый набор простой: Branch x1, Wood x1, Berry x1.

Это первый мостик к будущему Лешему: подготовился, принёс подношение, активировал место силы — и игра запускает placeholder призыва. Полный босс, арена, эффекты и награда будут позже.

Что добавили для UI

Появилась первая маленькая плашка активного слота. Если слот пустой — видно Active: Empty. Если выбран предмет — видно слот, название и количество: например, Slot 0: Wood x1.

После ручной перепроверки она работает как надо: crosshair остаётся по центру, active slot HUD стоит внизу слева, количество предметов отображается нормально. Это не экран инвентаря и не полноценный hotbar. Просто нужный кусочек обратной связи: игрок теперь видит, какой предмет сейчас влияет на сбор ресурсов, еду и урон.

Теперь игрок видит и базовые статы: здоровье и выносливость появились на HUD отдельными маленькими барами. Это всё ещё минимальный интерфейс без иконок баффов и красивых эффектов урона, но важная слепая зона закрыта: когда Forest Imp бьёт игрока или Berry Food меняет максимальные значения, это теперь можно увидеть на экране.

После ручной проверки подтвердилось: HUD живо реагирует на еду и урон. Berry Food поднимает максимумы до Health 110 и Stamina 105, а удары Forest Imp уменьшают текущие HP и двигают полоску здоровья без сдвига crosshair или active slot HUD.

Что ещё не готово

  • AI врага пока самый простой: прямое движение к игроку и атака по кулдауну, без pathfinding, патруля, анимаций и hitboxes.
  • Нет полноценного hotbar, inventory UI, food buff icons и damage feedback.
  • Нет полной боевой системы: анимаций, stamina cost, durability, hitboxes.
  • Нет полноценного boss encounter: алтарь пока backend-only, без VFX/SFX, арены, boss AI и награды.
  • Нет save/load.
  • GDD — только setting direction. Нужны Biomes.md, Bosses.md, Progression.md позднее.

Материал для соцсетей

**Telegram/Discord angle:** Сегодня — про душу проекта. Slavic Survival — это Valheim по структуре gameplay, но мир — совсем другой. Тёмный лес, духи, капища, Леший как первый хозяин территории. Не "викинги в кокошниках", а что-то своё. Направление зафиксировано, следующие шаги — понятны.

**Gameplay angle:** Stone Axe теперь работает как первый weapon-like предмет. Крафтишь инструмент, выбираешь активный слот, бьёшь Forest Imp сильнее, враг умирает быстрее, лут падает в инвентарь. Маленький шаг, но loop "крафт → бой → лут" начал сходиться.

**Enemy AI angle:** Forest Imp больше не обязан стоять на месте. Первый AI prototype проверен руками: враг замечает игрока, идёт к нему напрямую, атакует по кулдауну и останавливается, когда цель down или сам враг мёртв. Это ещё грубый тестовый шаг, но он впервые превращает врага из цели в угрозу.

**Altar angle:** Первый backend алтаря уже есть: игрок приносит предметы, алтарь принимает подношение и запускает placeholder призыва босса. Это ещё не бой с Лешим, но уже начало пути к нему.

**Boss placeholder angle:** У vertical slice появился первый отдельный boss placeholder — Forest Guardian. Он пока работает на обычных enemy systems, без фаз и спецэффектов, но уже задаёт нужный ритм: подношение, призыв, более длинный бой, лут после победы.

**Boss test angle:** Forest Guardian уже прошёл первый полный ручной тест: его призвали, сразились, убили, а reward (Branch и Wood) попал в инвентарь игрока.

**UI angle:** Теперь активный предмет виден на экране: Slot 0: Wood x1 или Slot 0: Stone Axe x1. Это всё ещё минимальный HUD, без инвентаря и иконок, но для survival loop это важная штука — игрок понимает, что сейчас выбрано, не заглядывая в Inspector.

**Stats HUD angle:** Здоровье и выносливость теперь видны на HUD. Если враг ударил игрока — HP падает на экране. Если съесть Berry Food — максимальные HP/Stamina растут. Ручная проверка подтвердила обновление текста и полосок после еды и урона.

**Site/news angle:** Зафиксировано направление сеттинга Slavic Survival: мифологизированная Русь, славянский фольклор, авторская интерпретация. Gameplay reference первого этапа — Valheim-like структура прогрессии. Первый босс вертикального среза — Леший. Баба Яга зарезервирована для особой роли позднее.

**X short post angle:** Slavic Survival: gameplay как в Valheim, мир — мифологизированная Русь. Первый босс — Леший. Баба Яга появится позже, и это будет что-то интереснее, чем просто босс.

**Screenshot/video ideas:**

  • Скриншот текущего gameplay loop (нажатие E, лог сбора ресурсов).
  • Скриншот: crosshair + E: Small Tree по центру и HUD-плашка Slot 0: Wood x1 внизу слева.
  • Скриншот: HP/Stamina HUD после Berry Food (Health: 100 / 110, Stamina: 100 / 105) и после ударов Forest Imp (Health: 60 / 110, 50 / 110, 40 / 110).
  • Короткое видео: Forest Imp получает два удара Stone Axe, умирает, Branch падает в инвентарь.
  • Короткое видео: игрок приносит Branch/Wood/Berry к лесному алтарю, появляется Forest Guardian, получает серию ударов Stone Axe и выдаёт Branch/Wood после смерти.
  • Concept art / mood board: лесное капище, идол, туман между деревьями.
  • Таблица боссов из GDD: Леший, Кикимора, Водяной, Змей Горыныч...
  • До/после разделения Devlog / Changelog — для devlog-о-devlog аудитории.

Внутренняя заметка: враги теперь находят игрока сами

Раньше у каждого enemy в сцене надо было вручную назначать Target на конкретного Player — и это работало только в тестовых сценах. Теперь враги сами ищут ближайшего живого игрока в радиусе агро, раз в четверть секунды. Никаких ссылок на scene Player заранее. Spawned boss после призыва через алтарь сразу начнёт преследовать игрока, который его вызвал.

Внутренняя заметка: loot routing для spawned boss

Теперь, когда игрок убивает bosса, которого только что призвал через алтарь, лут поступает именно в инвентарь этого игрока — даже если boss prefab не знал заранее, кто его убьёт. Механика простая: каждый удар отмечает "кто бил последним", и при смерти враг отдаёт добычу последнему атакующему. Это базовый шаг к тому, чтобы spawned boss мог полноценно награждать игрока.

Внутренняя заметка: UI binding для spawned Player

Подтверждено: HUD теперь следует за spawned Player автоматически. После запуска Play Mode и Network Helper spawn, ScreenPlayerBindingComponent находит Player - flipsizze через delayed retry и привязывает UI-панели к реальному runtime Player. Interact с BranchPile пишет в инвентарь spawned Player — не в stale prefab reference. Это groundwork для будущего coop без дублирующихся HUD на каждого игрока.