언리얼 엔진5 Advanced - 게임플레이 이펙트의 활용

타입·2025년 4월 17일
0

언리얼 강의

목록 보기
44/47

신규 기능 기획

콤보 공격 히트시 뒤로 갈 수록 전달하는 대미지가 증가하도록 설정
레벨에 따라 스폰된 캐릭터가 다른 체력 값을 가지도록 설정

게임플레이 이펙트 (GE)

GAS는 게임에 영향을 주는 객체를 별도로 분리해서 관리함 (특수효과 아님!)

게임에 영향을 준다는 것은 대부분 게임 데이터를 변경한다는 것을 의미함

따라서 대부분 게임플레이 이펙트와 어트리뷰트는 함께 동작하도록 구성되어 있음

GAS 시스템에서 가장 많은 기능을 제공하는 클래스

  • 세 가지 타입 중 하나를 선택할 수 있음
    • Instant: 어트리뷰트에 즉각적으로 적용되는 게임플레이 이펙트, 한 프레임에 실행됨
    • Duration: 지정한 시간 동안 동작하는 게임플레이 이펙트
    • Infinite: 명시적으로 종료하지 않으면 계속 동작하는 게임플레이 이펙트

이 외에도 정말 다양하게 많은 옵션을 제공함

기능이 많은 만큼 학습할 내용도 많지만,
잘 활용하면 코딩 없이도, 다양하고 복잡한 작업의 수행이 가능

게임플레이 이펙트 모디파이어 (Modifier)

GE에서 어트리뷰트의 변경 방법을 지정한 설정을 모디파이어라고 함

  • 모디파이어의 사용 방법
    적용할 어트리뷰트의 지정
    적용 방식의 설정: 더하기, 곱하기, 나누기, 덮어쓰기
  • 모디파이어의 계산 방법
    • ScalableFloat
      실수 (데이터 테이블과 연동 가능)
    • AttributeBased
      특정 어트리뷰트에 기반
    • CustomCalculationClass
      계산을 담당하는 전용 클래스의 활용
    • SetByCaller
      데이터 태그를 활용한 데이터 전달
  • 모디파이어 없이 자체 계산 로직을 만드는 것도 가능
    GameplayEffectExcutionCalculation 상속

C++로 설정하기에는 문법이 복잡해서, 블루프린트로 제작하는 것을 권장

메타(Meta) 어트리뷰트

어트리뷰트의 설정을 위해 사전에 미리 설정하는 임시 어트리뷰트

예) 체력을 바로 깎지 않고, 대미지를 통해 체력을 감소하도록 설정
체력은 일반 어트리뷰트, 대미지는 메타 어트리뷰트

대미지를 사용하는 경우 기획 추가에 유연한 대처가 가능
무적 기능의 추가 - 대미지를 0으로 처리
실드 기능의 추가 - 실드 값을 토대로 실드 값만큼 대미지를 처리
콤보 진행시 공격력 보정 기능 추가 - 콤보 증가시 대미지를 보정하도록 구현

메타 어트리뷰트는 적용 후 바로 0으로 값을 초기화하도록 설정

메타 어트리뷰트는 리플리케이션에서 제외시키는 것이 일반적

레벨과 커브 테이블

게임플레이 이펙트에는 추가적으로 레벨 정보를 지정할 수 있음

게임플레이 이펙트에 저장된 레벨 정보를 사용해 데이터 테이블에서 특정 값을 가져올 수 있음

ScalableFloat 모디파이어 타입에서 이를 사용하는 것이 가능

이를 활용해 다양한 기능을 구현하는 것이 가능
콤보 추가시 증가하는 요율을 반영해 최종 대미지를 계산
현재 캐릭터 레벨에 따른 초기 스탯 적용

커브테이블은 언리얼 에디터를 통해 쉽게 제작 가능

게임플레이 이펙트의 생성 과정

게임플레이 이펙트 컨텍스트와 게임플레이 이펙트 스펙을 통해 생성할 수 있음

  • 게임플레이 이펙트 컨텍스트
    GE에서 계산에 필요한 데이터를 담은 객체
    가해자(Instigator), 가해수단(Causer), 판정정보(HitResult) 등
  • 게임플레이 이펙트 스펙
    GE에 관련된 정보를 담고 있는 객체
    레벨, 모디파이어 및 각종 태그에 대한 정보
    게임플레이 이펙트 컨텍스트 핸들

ASC는 각 데이터를 핸들 객체를 통해 간접적으로 관리함

따라서 이펙트 컨텍스트 핸들을 만든 후, 이펙트 스펙 핸들을 생성하는 순서로 진행되어야 함
(안에서부터 바깥으로 생성)

실습코드

https://github.com/dnjfs/ArenaBattle_GAS/commit/458c11158e9a47515ff998e2abf2d0e13284ece0

  • 게임플레이 이펙트 코드 구현
    GameplayEffect를 상속받아 ABGE_AttackDamage 구현
    GA에서 게임플레이 이펙트를 통해 데미지 처리

  • 게임플레이 이펙트 블루프린트 구현
    GameplayEffect를 상속받아 BPGE_AttackDamage 구현
    동일한 기능을 블루프린트에서 간단하게 구현 가능

  • 콤보 데미지 설정
    커브 테이블 추가하여 GE에서 Coefficient로 설정
    몽타주의 애님 노티파이에 콤보 단계 설정, Payload에 담아서 전달
    GE가 발동되면 AttributeSet에서 데미지만큼 체력 감소 처리

  • NPC 체력 초기화
    빙의 시 자기 자신에게 GE를 발동시켜 스탯 초기화

profile
주니어 언리얼 프로그래머

0개의 댓글