1. Player State
게임플레이 어빌리티 시스템을 관리할 클래스로 Player State 클래스를 만들 것이다. GAS를 캐릭터 클래스에 할당하면 캐릭터가 사라질때(대표적으로 캐릭터가 죽을때) GAS의 설정 또한 사라질 것이고 이렇게 되면 안된다.
그렇기에 Player State에서 GAS와 캐릭터 클래스 모두를 관리하여 캐릭터와 GAS 자체를 분리할 것이다.
에너미의 경우 에너미가 죽을때 GAS가 사라져도 별 문제가 없기 때문에 에너미 클래스에서 GAS를 관리할 것이다.
플레이어 스테이트 클래스는 일반적으로 네트워크 게임에서 플레이어들의 상태를 관리하고 추적하는데 사용하는 클래스라고 한다.
UCLASS()
class PRACTICE2_API AAuraPlayerState : public APlayerState
{
GENERATED_BODY()
public:
AAuraPlayerState();
};
생성자를 만들도록 하자.
AAuraPlayerState::AAuraPlayerState()
{
NetUpdateFrequency = 100.f;
}
해당 기능은 네트워크 레플리케이션을 사용하는 객체가 얼마나 자주 업데이트 될지를 설정하는 속성이다. 플레이어 스테이트는 기본적으로 레플리케이션을 지원하여 서버와 클라이언트간에 정보를 동기화 한다.
단위는 초당 몇번 (위에 경우 초당 100번)이다. 이제 이것을 컴파일 하고 에디터에서 블루프린트 클래스를 만들면 된다.
블루프린트 클래스를 만들었으면 게임모드로 들어가 플레이어 스테이트를 우리가 만든 클래스로 바꾸면 된다.
현재 이 스테이트 클래스에서 아무것도 하는 것이 없다. 이제 이곳에서 어빌리티 시스템 컴포넌트와 어트리뷰트 세트를 만들어 관리할 수 있도록 해야할 것이다.
2. 어빌리티 시스템 컴포넌트 (GAS)와 어트리뷰트 세트 클래스 생성
GAS를 사용하기 위해서는 플러그인을 활성화해야한다.
게임플레이 어빌리티 플러그인이 기본적으로 비활성화 되어있는데 이를 활성화 시키면 된다. 물론 활성화 시키려면 에디터를 껏다 켜야하니 저장을 잘 해두자.
이제 GAS 클래스를 만들 것이다.
이 GAS 클래스를 만들었으면 그 다음은 어트리뷰트 세트 클래스를 만드는 것이다.
이제 IDE로 들어가 몇개의 모듈을 추가할 것이다.
PrivateDependencyModuleNames.AddRange(new string[] { "GameplayAbilities", "GameplayTags", "GameplayTasks" });
프라이빗 디펜던시 모듈에 추가하였는데 퍼블릭과 프라이빗 중 어느 곳에 모듈을 추가할지는 다음과 같이 정해진다고 한다.
퍼블릭 폴더(대표적으로 헤더파일)에서 해당 모듈에 접근 하려고 하거나 다른 모듈에서 해당 모듈을 접근하려면 퍼블릭 영역에 넣어야 하고 그 외에는 프라이빗에 넣어도 된다고 한다. (애매하면 그냥 다 퍼블릭 영역에 넣자...)
현재 게임플레이 태그가 프라이빗 영역에 있는데 이것은 헤더파일에서도 쓰일 것이니 차후 그러한 차례가 오면 영역을 옮기도록하자.
'게임프로그래밍 > 실습2' 카테고리의 다른 글
[실습2] 11. Replication Mode (0) | 2024.11.28 |
---|---|
[실습2] 10. GAS와 Attribute Set 추가하기 (0) | 2024.11.28 |
어빌리티 시스템 컴포넌트 (Ability System Component) (0) | 2024.11.28 |
[실습2] 8. 에너미 하이라이트 하기 (0) | 2024.11.28 |
[실습2] 7. 에너미 인터페이스 만들고 함수 호출하기 (0) | 2024.11.28 |