Files
mod_effects_base/docs/ru.md
T

5.1 KiB
Raw Blame History

Effects Engine — анимированные визуальные эффекты для сцен

Effects Engine позволяет сценарию показать поверх сцены короткий визуальный эффект: вспышку, дым, искры, волшебное свечение. Эффект — это маленькая сцена Godot, которую мод кладёт в свою папку effects/; сценарий запускает эффект по имени, и тот остаётся на экране, пока не закончится сам или не кончится диалог.

Это мод-движок, у которого нет ничего своего на экране. Входящие в проекты игры пока не содержат ни одной сцены-эффекта, поэтому во время игры вы эффект не встретите; мод существует для авторов, которые хотят такой добавить.

Как эффект появляется

  1. В сценарии выполняется строка effect <имя>.
  2. Effects Engine ищет сцену effects/<имя>.tscn среди загруженных модов.
  3. Эффект ложится поверх картинки сцены — выше фона и его предметов, ниже текстового окна — и проигрывается.
  4. Когда заканчивается диалог, запустивший эффект, тот убирается, если не убрался сам раньше.

Сценарий эффекта не ждёт: следующая строка показывается сразу.

Авторам: добавить эффект

Положите сцену эффекта в свой мод:

my_mod/
└── effects/
    └── sparks.tscn

Запустите из сценария:

text "Лампа мигнула."
effect sparks
text "В темноте что-то шевельнулось."
end

Моды должны быть папками. Сцены Godot загружаются только из мода, установленного папкой. У мода, распространяемого архивом .zip, эффекты пропускаются с предупреждением в логе.

Кубики для сцены эффекта

Effects Engine даёт три способа анимировать кадры внутри сцены эффекта:

  • Набор кадров с перетеканием — узел со скриптом EffectDataSet, список картинок-кадров и AnimationController, который растворяет один кадр в другом. Скорость и время растворения задаются в инспекторе; кадры проигрываются один раз, и эффект убирает себя сам.
  • Спрайт-лист в шейдере — EffectAnimator прокручивает TextureRect с материалом кадровой простыни через заданное число кадров за заданное время.
  • Спрайт-лист без шейдера — EffectAnimNode листает горизонтальный спрайт-лист (ширина кадра = ширина листа / число кадров) и в конце убирает себя. Его можно создать и из кода: EffectAnimNode.SpawnOn(target, sheet, frameCount, seconds).

Набор кадров и спрайт-лист без шейдера растягиваются на всю сцену, поэтому кадры, нарисованные под размер сцены, совпадают с фоном.

Первый эффект без кода

Простейший эффект — сцена, у которой в корне TextureRect с картинкой, растянутой на весь экран, — например, полупрозрачное свечение. Он появляется по effect <имя> и исчезает, когда кончается диалог.

Если что-то пошло не так

  1. Ничего не появляется, а в логе — что эффект не найден. Файл должен лежать как effects/<имя>.tscn в моде, входящем в игру, и имя в сценарии должно совпадать.
  2. Эффект работает в разработке, но не у игроков. Мод был опубликован архивом .zip; публикуйте папкой.
  3. Эффект не исчезает. Он висит, пока не кончится его диалог; завершите диалог или соберите эффект из блоков набора кадров или спрайт-листа — они убирают себя, когда заканчиваются.