UE5/GAS

1. GameplayAbilitySystem 플러그인 소개

게임 개발 2024. 9. 19. 16:16

 

게임 플레이 시스템은 MOBA 타이틀 또는 RPG에서 찾을 수 있는

유형의 능력과 속성을 구축하기 위한 매우 유연한 프레임워크입니다.

 

게임 속 캐릭터가 사용할 수 있는 액션이나 패시브 능력,

이러한 액션으로 인해 다양한 속성이 쌓이거나 닳아 없어질 수 있는 상태 효과인

'쿨타운' 타이머 또는 리소스 비용을 구현하여

위와 같은 방법으로 액션의 사용을 규제하고, 각 레벨에서 해당 기능의 수준과 효과를 변경할 수 있습니다.

또한 입자 또는 음향 효과 등 역시 게임플레이 어빌리티 시스템으로 활성화 할 수 있습니다.

 

간단히 말해, 이 시스템은 현대 RPG 또는 MOBA 타이틀에 설정된

캐릭터의 능력에 대해서 복잡한 게임 내 능력을 설계하고 구현할 때 

효율적으로 네트워크화 하는데 도움이 될 수 있도록 만들어진 것입니다.

 

게임플레이 어빌리티 시스템 플러그인은 에픽게임즈에서 개발했으며,

언리얼 엔진과 함께 제공됩니다.

파라곤, 포트나이트 등 AAA급 상용 게임에서 배틀 테스트를 거쳤습니다.

 

해당 플러그인은 싱글 및 멀티 플레이어 게임에서 바로 사용할 수 있는 솔루션을 제공합니다.

 

  • GameplayAbilities
  • Attributes
  • GameplayEffects
  • GameplayTags
  • GameplayCues
  • replication

 

GameplayAbilities

레벨 기반 캐릭터 능력/스킬 구현

 

  • 레벨 기반 능력 또는 스킬 시스템을 구현하여
    캐릭터의 레벨이 올라갈 때 특정 능력을 해제할 수 있게 합니다.

  • 이 능력들은 비용(마나, 체력 등)과 쿨다운을 선택적으로 추가하여,
    게임의 전략성을 더합니다.

  • AbilitySystemComponent를 사용하여 각 캐릭터에 능력을 부여하고,
    이 능력들이 레벨에 따라 활성화될 수 있도록 설정합니다.

 

Replication : 능력 사용과 그에 따른 비용 및 쿨다운은 서버에서 관리되고,

클라이언트로 동기화하여 모든 플레이어에게 동힐하게 보입니다.

 

Attributes

엑터(Actor)에 속한 숫자 속성 조작

 

  • 캐릭터의 체력, 마나, 스태미나와 같은 수치적 속성(Attribute)을 관리하고 조작할 수 있습니다.

  • GameplayAttribute 클래스를 사용하여 이 속성들을 정의하고,
    이를 통해 캐릭터의 능력이나 상태를 변경할 수 있습니다.

Replication : 상태 효과의 시작과 종료가 서버에서 관리되며,

클라이언트에서도 효과가 동일하게 반영됩니다.

 

GameplayEffects

액터에 상태 효과 적용

 

GameplayEffect는 캐릭터에게 상태 효과 (버프, 디버프)를 적용하는 데 사용됩니다.

예를 들어 체력을 회복시키거나 공격력을 강화시키는 효과를 추가할 수 있습니다.

효과는 일정 시간 동안 지속될 수 있으며,

이때도 리플리케이션을 통해 모든 클라이언트에서 동일하게 상태 효과가 유지됩니다.

 

Replication  : 상태 효과의 시작과 종료가 서버에서 관리되며, 클라이언트에서도 효과가 동일하게 반영됩니다.

 

GameplayTags

 

 

  • GameplayTags는 캐릭터나 능력에 태그를 추가하여
    이를 기반으로 조건부 논리나 이벤트를 구현할 수 있습니다.
  • 예를 들어,
    "Frozen" 태그가 적용된 캐릭터는 이동할 수 없도록 제한할 수 있습니다.

 

Replication  : 태그는 서버에서 설정되며,

클라이언트로 리플리케이션되어 모든 클라이언트에서 동일한 태그를 확인할 수 있습니다.

 

GameplayCues

 

 

  • 앞서 언급한 모든 요소(능력, 속성, 상태 효과, 태그, 시각적/청각적 효과)는
    멀티플레이어 환경에서 서버와 클라이언트 간의 데이터 동기화가 필요합니다.
    언리얼 엔진의 리플리케이션 시스템을 통해 서버에서
    관리되는 모든 게임플레이 데이터가 클라이언트로 전송되어 일관된 게임 경험을 제공합니다.