Files
mod_effects_base/docs/ko.md
T

3.8 KiB

Effects Engine — 장면을 위한 애니메이션 시각 효과

Effects Engine은 시나리오가 장면 위에 짧은 시각 효과를 재생할 수 있게 합니다. 번쩍임, 연기, 불똥, 마법의 빛 따위입니다. 효과란 모드가 자기 effects/ 폴더에 넣어 배포하는 작은 Godot 장면입니다. 시나리오가 이름으로 불러내면 화면에 나타나고, 스스로 끝나거나 대화가 끝날 때까지 머뭅니다.

혼자서는 아무것도 보여 주지 않는 엔진 모드입니다. 현재 수록된 게임에는 아직 효과 장면이 하나도 없으므로 플레이 중에 효과를 만날 일은 없습니다. 이 모드는 효과를 추가하고 싶은 제작자를 위한 것입니다.

효과는 이렇게 나타납니다

  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. 효과가 좀처럼 사라지지 않는다. 그 대화가 끝날 때까지 남습니다. 대화를 끝내거나, 프레임 세트나 스프라이트 시트 조각으로 효과를 만드세요. 그것들은 끝나면 스스로를 지웁니다.