Inflearn brand logo image

인프런 커뮤니티 질문&답변

김민재님의 프로필 이미지
김민재

작성한 질문수

이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템

6강 : 캐릭터 어트리뷰트 설정

[GAS] Player State에 대해 궁금한 점이 있습니다.

해결된 질문

작성

·

63

0

안녕하십니까. 1강 2강 4강을 수강한 학생입니다.

 

다름아니라, 6강에서 NonPlayer의 경우에는 ASC와 AttributeSet을 직접 들고 있는 이유가 궁금해서 질문을 드리게 되었습니다.


Player의 경우에는Owner를 PlayerState로 설정하고 Avatar를 Character로 설정하는 것이 네트워크 멀티 플레이어 환경에서 적합하다고 저번 시간에 학습했는데, NonPlayer는 그렇게 하지 않는 이유가 궁금합니다.

 

언리얼 엔진에서도 Player State 클래스만 제공해주고 NonPlayer State 클래스는 제공하지 않던데, 이 부분도 멀티 플레이 부분과 연관이 있을까요?

답변 2

0

이득우님의 프로필 이미지
이득우
지식공유자

네 맞습니다.
설계하기 나름인데, GAS가 관리하는 플레이어의 구체적인 상태 정보를 네트웍을 통해 동기화한다면 이미 네트웍을 통해 동기화되고 있는 플레이어 스테이트 액터에 GAS 컴포넌트를 넣는 방법이 권장됩니다.

0

안녕하세요, 인프런 AI 인턴입니다. 김민재님.

게임플레이 어빌리티 시스템(GAS)에서 Player와 NonPlayer의 ASC(Ability System Component) 및 AttributeSet의 구조에 대한 차이점을 이해하는 것은 멀티플레이어 환경에서 중요한 개념입니다. 김민재님의 질문은 플레이어와 비플레이어 캐릭터 간의 네트워크 동기화를 어떻게 설정하고 관리해야 하는지에 관한 것입니다.

  1. Player State와 NonPlayer의 차이:

    • Player: 멀티플레이어 환경에서 플레이어는 네트워크에 기반한 통신이 필요합니다. 따라서 ASC와 같은 중요한 컴포넌트를 PlayerState에 설정한 후, Avatar를 캐릭터로 지정하여 각 플레이어의 상태와 능력을 클라이언트와 서버 간에 동기화할 수 있습니다.
    • NonPlayer: 비플레이어(즉, NPC)들은 멀티플레이어 동기화가 중요하지 않거나, 서버 주도 하에 동작할 수 있습니다. 그래서 이러한 경우 서버에서만 ASC와 AttributeSet을 관리하고, 네트워크를 통해 다른 클라이언트에 동기화할 필요가 없어 직접 캐릭터에 부착하는 것이 더 간단할 수 있습니다.
  2. NonPlayer에는 별도의 State 제공 없음:

    • 언리얼 엔진에서는 기본적으로 PlayerState 클래스를 제공합니다. 이는 일반적으로 사용자 제어가 가능한 캐릭터에게만 적용됩니다. NPC의 경우 동일한 범위의 네트워크 동기화나 상태 추적이 필요하지 않기 때문에 별도의 NonPlayer State 클래스를 제공하지 않습니다. 대신 간단하게 서버에서 필요한 처리를 직접 Actor에 부착하여 수행합니다.

이러한 구조는 각 캐릭터의 네트워크 리소스를 효율적으로 관리하고, 불필요한 복제를 줄일 수 있도록 돕습니다.

관련된 게시물을 통해 더욱 깊이 있는 이해를 원하시면 다음 질문들을 참고해주세요:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

김민재님의 프로필 이미지
김민재

작성한 질문수

질문하기