Files
aego/engine/res/docs/platformer-effects.ru.md
sanspie ab6ea7ef58
ci-platforms / darwin amd64 smoke (push) Skipped
ci-platforms / windows amd64 smoke (push) Skipped
ci-platforms / darwin arm64 smoke (push) Skipped
github-native / linux amd64 native (push) Skipped
ci / checks (push) Successful in 6m33s
ci / build (amd64, linux, ubuntu-24.04) (push) Failing after 12m26s
ci / release (push) Skipped
github-native / darwin amd64 native (push) Canceled after 0s
github-native / windows amd64 native (push) Canceled after 0s
github-native / darwin arm64 native (push) Canceled after 0s
editor: improve scene tools and prepare native CI
2026-11-06 16:49:11 +03:00

8.5 KiB
Raw Permalink Blame History

id, title
id title
platformer-effects Свет и эффекты платформера

Свет и эффекты платформера

Здесь разобран готовый проект examples/platformer. Чтобы сначала собрать базовую игру, откройте Платформер с нуля.

Освещение и карты поверхностей

Откройте examples/platformer, чтобы увидеть полный пример освещения. Уровень, коллизии и управление сохраняют игровой сценарий; карты поверхностей и источники показывают нормали, тени и эмиссию. F6 переключает освещение вида, F7 — обычный вид, нормали и тени. Обе клавиши зарегистрированы как действия ввода и не меняют материалы или состояние симуляции.

Ассет проекта Связь с картой поверхности
assets/surfaces/platform.png Источник высоты — platform_height.png, у которого включена генерация нормалей при импорте. Полученная карта общая для платформ уровня.
ground.png и wall.png Явные карты нормалей имеют приоритет; исходные карты высоты также связаны с ними для авторинга.
runner.png У каждого из восьми кадров есть связь с normal-кадром в runner_n.png. Силуэт, размер и игровая точка отсчёта сохранены.
lamp.png lamp_em.png — маска эмиссии. Она осветляет сердцевину лампы через lamp_lit.aemat; соседний Point light освещает другие объекты. Маска не создаёт Bloom.
window_cookie.png Линейная cookie-маска задаёт форму Sprite light, не используя координаты атласа альбедо.

Чтобы изменить поверхность платформы, откройте platform.png из Assets и перейдите по источнику высоты к platform_height.png. Включите освещённую поверхность и измените силу высоты в общем документе карты. Кандидат normal map и перемещаемый источник предпросмотра показывают результат до сохранения. Включите Play, оставьте вкладку изображения открытой и нажмите Сохранить настройки: работающий уровень получит новое подготовленное поколение нормалей. Undo возвращает прежний вид, оставляя документ метаданных изменённым, а сохранённый файл — прежним; Redo возвращает сохранённый результат. Stop возвращает неизменённую EditScene. Явная Normal-карта имеет приоритет над нормалью, полученной из Height.

Откройте runner.png, выберите существующий кадр и используйте Flip X/Y предпросмотра, чтобы проверить связанную normal map. Эти переключатели действуют только на предпросмотр; игровой скрипт задаёт FlipX при смене направления. Пиксели исходного изображения редактируются во внешнем графическом редакторе, связи каналов и настройки импорта — в общем документе ассета с историей Undo.

У игрока и врага для теней заданы отдельные полигоны LightOccluder2D. Они приблизительно повторяют голову и ноги общего спрайта, не меняя коллайдеры. Контуры статичны и не подстраиваются под кадры анимации.

Правила ролей и цветового пространства, диагностика отсутствующих ссылок и модель освещения описаны в разделах Просмотр изображений и спрайтов и Материалы и шейдеры. Native- и web-экспорты используют тот же проект и включают нормали, результат преобразования высоты, эмиссию и cookie. Подготовка демо сайта сама по себе не публикует его.

Пыль и искры

Прыгните и после приземления продолжайте бежать. Пыль появляется у ног и остаётся над местом возникновения. Выберите Player/Dust, чтобы изменить rectSize и lifetime. В scripts/player/player.aes обработчик OnLanded выпускает восемь частиц, OnJumped — пять, OnClimbed — шесть. У эмиттера выключен playOnStart, а rate равен нулю, поэтому частицы появляются по этим событиям. Player/Slash/Sparks выпускает искры по событию Hit анимации атаки.

При space=world движение эмиттера не сдвигает уже родившиеся частицы. Выберите space=local, если эффект должен двигаться вместе с родителем. Чтобы сравнить уровень с частицами и без них, переключите Эффекты частиц в настройках специальных возможностей игры. F6 и F7 управляют освещением; при сравнении оставьте их в одном положении.

У StartLantern выберите дочерний узел Smoke или Embers: это независимые источники дыма и искр. В предпросмотре Inspector можно поставить эффект на паузу, закрепить зерно и сравнить изменения до запуска игры. В разделе По ходу жизни перетащите ключ градиента и нажмите Undo, чтобы восстановить переход. Пресеты и работающий пример собраны в разделе Эффекты частиц на CPU.

Постобработка камеры

Откройте платформер в Game View и выберите Camera → Post Process. В сцене включён Bloom с Threshold 0,75, Intensity 0,22 и Radius 6. Меняйте Intensity и наблюдайте за ореолом вокруг лампы. В стеке также есть выключенные Vignette, Color Grading и пользовательский материал Cold. Включите один из них для сравнения. Во время Play откройте настройки и сравните непрозрачную часть меню при включённом и выключенном компоненте. Чтобы вернуть исходное изображение мира, выключите Post Process. F6 и F7 управляют освещением и диагностикой.

Центр задаётся относительно выхода камеры: (0.5, 0.5) — середина. Интенсивность задаёт степень затемнения, мягкость — ширину перехода. Радиус измеряется относительно короткой стороны изображения: на широком экране окружность не превращается в овал. Работающий пример приведён в разделе Постобработка.