게임플레이 어빌리티 시스템 은 액터가 소유하고 트리거할 수 있는 어빌리티 및 인터랙션을 빌드하기 위한 프레임워크입니다. 이 시스템은 캐릭터가 메커니즘, 비주얼 이펙트, 애니메이션, 사운드, 데이터 기반 엘리먼트를 조정해야 하는 어빌리티를 가지고 있는 RPG, 액션 어드벤처 게임, MOBA 등의 게임 타입을 위해 디자인되었지만 다양한 프로젝트에서 이 시스템을 도입할 수 있습니다. 게임플레이 어빌리티 시스템은 또한 멀티플레이어 게임을 위한 리플리케이션을 지원하고 개발자가 멀티플레이어를 지원하기 위해 디자인을 스케일링 업하는 시간을 크게 줄여줍니다.

이 시스템을 사용하면 단일 공격처럼 간단한 어빌리티나 사용자 및 타깃의 데이터에 따라 다양한 상태 이펙트를 트리거하는 스펠과 같은 복잡한 어빌리티를 생성할 수 있습니다. 이 페이지에서는 어빌리티 시스템의 개요와 어빌리티 시스템의 여러 컴포넌트가 함께 작동하는 방식을 살펴봅니다.

게임플레이 어빌리티란?

게임플레이 어빌리티 는 액터가 소유하고 반복적으로 트리거할 수 있는 인게임 액션입니다. 일반적인 예시로는 스펠, 특수 공격, 아이템이 트리거하는 이펙트 등이 있습니다. 이 개념은 비디오 게임에서 매우 일반적입니다. 어빌리티를 실행하는 프로세스는 복잡하고 특정한 타이밍을 요구하는 경우가 많음에도 불구하고 이러한 어빌리티를 당연하게 여기는 경우가 많습니다. 예를 들어 공격 활성화 코드를 작성하는 것은 비교적 간단하지만 장기간에 걸쳐 프로젝트를 진행하는 동안에는 플레이어에서 콤보 시스템이나 다른 디테일을 추가 또는 제거하기 위해 리소스 비용, 버프, 디버프 이펙트를 추가함에 따라 어빌리티를 빌드하는 복잡도가 기하급수적으로 늘어날 수 있습니다. 따라서 언리얼 엔진의 게임플레이 어빌리티 시스템은 다음과 같은 세 가지 주요 사항을 고려하여 디자인되었습니다.

어빌리티의 오너 트래킹하기

어빌리티와 이펙트는 소유권이라는 개념을 유지해야 합니다. 이펙트가 계산을 수행할 때는 오너가 누구인지 알아야 어트리뷰트를 사용할 수 있습니다. 어빌리티가 플레이어의 포인트를 기록하는 작업을 할 때는 포인트를 소유한 플레이어가 누구인지 알아야 크레딧을 정확하게 부여할 수 있습니다.

<aside> 📌

게임플레이 어빌리티의 '오너'는 네트워크 리플리케이션 용어에서 사용되는 소유권의 그것과는 다릅니다.

</aside>

어빌리티의 스테이트 트래킹하기

어빌리티는 다음과 같은 스테이트 순환을 트래킹할 수 있어야 합니다.

<aside> 📌

라이라 샘플 프로젝트 또한 어빌리티가 부여되는 시점을 트래킹합니다.

</aside>

예를 들어 일반적으로 어빌리티를 사용하는 동안 액터는 어빌리티의 사용을 완료하기 전까지 해당 어빌리티를 다시 활성화할 수 없습니다. 하지만 어빌리티는 실행을 일찍 종료한 다음 다시 시작하여 어빌리티를 취소 하는 것을 가능하도록 하는 특별한 규칙을 가질 수 있습니다.

어빌리티의 실행 조정하기

어빌리티는 실행 도중 특정한 타이밍에 다양한 시스템과 인터랙션할 수 있어야 합니다. 이러한 인터랙션의 예시는 다음과 같습니다.