GameplayEffect 핵심 요약

김지윤·2025년 5월 5일
0

UE5_GAS

목록 보기
4/22

이 게시글은 아직 완전히 작성된 게 아니며, 수정될 여지가 있습니다.

- Period

  • 효과가 적용되는 간격, 초 단위로 작성. 0.1이면 0.1초마다 적용

  • Execute Periodic Effect on Application

    true일 경우 Effect 발생 즉시 1번 적용
    false일 경우 발생 시점에서 Period 이후 최초 적용
    예) 지속시간이 2초, Period가 1초면 true일 경우 총 3번 적용된다.

  • Periodic Inhibition Policy

    효과가 모종의 이유로 중단된 경우, 다시 실행될 때의 패턴을 말한다.
    예) 0.1 | false | 지속시간 1초 | 5번 적용 후 중단되었던 Effect

    • Never Reset - 중단된 시점 이후의 횟수만큼, 즉 5번 적용
    • Reset Period - 다시 처음부터 10번 적용
    • Execute and Reset Period - 일단 1번 적용 후, 나머지 10번 적용

- Duration Policy, 지속시간 정책

  • Instant

    • Base Value에 즉시 반영, Period 설정 무시
  • Infinite

    • Period > 0 이면 Base Value에 반영
    • Period = 0 이면 Current Value에 반영
    • 주로 Override와 조합해 메인 스탯에 영향을 받는 스탯 초기화에 쓰인다
      • 예) 힘에 영향을 받는 물리공격력
    • 원하는 타이밍에 수동으로 제거할 수 있음
  • Has Duration

    • Period > 0 이면 Base Value에 반영
    • Period = 0 이면 Current Value에 반영
    • Scalable Float Magnitude 동안 지속되는 효과

- Stacking

  • Stacking Type

    • None - 스태킹을 사용하지 않음, 매번 호출 시 별도로 적용

    • Aggregate by Source - Instigator 기준으로 스택
      최대가 2여도 A와 B가 각각 C에게 걸었다면 C 입장에선 4스택까지 적용 가능

    • Aggregate by Target - 타겟 기준으로 스택
      최대가 2면 A와 B가 각각 C에게 걸어도 C 입장에선 2스택까지 적용

  • Stack Limit Count

    • 최대 스택 수, 0이면 무제한(스태킹은 사용)
  • Stack Duration Refresh Policy

    • Refresh on Successful Application
      재적용 성공 시마다 Duration 초기화

    • Never Refresh
      재적용하더라도 지속시간은 갱신하지 않음
      버프 스킬 지속시간이 10초면 2번 써도 첫 스킬 사용 시간을 기준 10초 뒤 종료

  • Stack Period Reset Policy

    • Reset on Successful Application
      재적용 시 Period 초기화, 다시 카운트 시작

    • Never Reset
      재적용하더라도 Period가 초기화되지 않음

  • Stack Expiration Policy

    • Clear Entire Stack
      만료 시 모든 스택을 제거

    • Remove Single Stack and Refresh Duration
      만료 시 하나의 스택만 제거, Duration을 리셋 후 적용

    • Refresh Duration
      만료 시 Duration만 리셋 후 적용

- GameplayEffectSpec

GameplayEffectSpec은 GameplayEffect의 속성이 아니다.
GameplayEffect를 실제로 액터에게 적용하기 위해 생성하는 구조체다.
같은 GameplayEffect라도 상황에 따라 다르게 적용해야 한다.
플레이어의 레벨이나 치명타 여부, 부가 효과 적용 등을 구현할 때 사용한다.
또 Context(누가 누구에게 썼는지, 데미지는 몇인지 등을 기록)도 내부에 포함되어있어 로그처럼 사용하거나 사용자에게 직접 보여줄 수도 있다.

profile
공부한 거 시간 날 때 작성하는 곳

0개의 댓글