콤보 공격 히트시 뒤로 갈 수록 전달하는 대미지가 증가하도록 설정
레벨에 따라 스폰된 캐릭터가 다른 체력 값을 가지도록 설정
GAS는 게임에 영향을 주는 객체를 별도로 분리해서 관리함 (특수효과 아님!)
게임에 영향을 준다는 것은 대부분 게임 데이터를 변경한다는 것을 의미함
따라서 대부분 게임플레이 이펙트와 어트리뷰트는 함께 동작하도록 구성되어 있음
GAS 시스템에서 가장 많은 기능을 제공하는 클래스
이 외에도 정말 다양하게 많은 옵션을 제공함
기능이 많은 만큼 학습할 내용도 많지만,
잘 활용하면 코딩 없이도, 다양하고 복잡한 작업의 수행이 가능
GE에서 어트리뷰트의 변경 방법을 지정한 설정을 모디파이어라고 함
C++로 설정하기에는 문법이 복잡해서, 블루프린트로 제작하는 것을 권장
어트리뷰트의 설정을 위해 사전에 미리 설정하는 임시 어트리뷰트
예) 체력을 바로 깎지 않고, 대미지를 통해 체력을 감소하도록 설정
체력은 일반 어트리뷰트, 대미지는 메타 어트리뷰트
대미지를 사용하는 경우 기획 추가에 유연한 대처가 가능
무적 기능의 추가 - 대미지를 0으로 처리
실드 기능의 추가 - 실드 값을 토대로 실드 값만큼 대미지를 처리
콤보 진행시 공격력 보정 기능 추가 - 콤보 증가시 대미지를 보정하도록 구현
메타 어트리뷰트는 적용 후 바로 0으로 값을 초기화하도록 설정
메타 어트리뷰트는 리플리케이션에서 제외시키는 것이 일반적
게임플레이 이펙트에는 추가적으로 레벨 정보를 지정할 수 있음
게임플레이 이펙트에 저장된 레벨 정보를 사용해 데이터 테이블에서 특정 값을 가져올 수 있음
ScalableFloat 모디파이어 타입에서 이를 사용하는 것이 가능
이를 활용해 다양한 기능을 구현하는 것이 가능
콤보 추가시 증가하는 요율을 반영해 최종 대미지를 계산
현재 캐릭터 레벨에 따른 초기 스탯 적용
커브테이블은 언리얼 에디터를 통해 쉽게 제작 가능
게임플레이 이펙트 컨텍스트와 게임플레이 이펙트 스펙을 통해 생성할 수 있음
ASC는 각 데이터를 핸들 객체를 통해 간접적으로 관리함
따라서 이펙트 컨텍스트 핸들을 만든 후, 이펙트 스펙 핸들을 생성하는 순서로 진행되어야 함
(안에서부터 바깥으로 생성)

https://github.com/dnjfs/ArenaBattle_GAS/commit/458c11158e9a47515ff998e2abf2d0e13284ece0
게임플레이 이펙트 코드 구현
GameplayEffect를 상속받아 ABGE_AttackDamage 구현
GA에서 게임플레이 이펙트를 통해 데미지 처리
게임플레이 이펙트 블루프린트 구현
GameplayEffect를 상속받아 BPGE_AttackDamage 구현
동일한 기능을 블루프린트에서 간단하게 구현 가능
콤보 데미지 설정
커브 테이블 추가하여 GE에서 Coefficient로 설정
몽타주의 애님 노티파이에 콤보 단계 설정, Payload에 담아서 전달
GE가 발동되면 AttributeSet에서 데미지만큼 체력 감소 처리
NPC 체력 초기화
빙의 시 자기 자신에게 GE를 발동시켜 스탯 초기화