inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

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

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

해결된 질문

130

김민재

작성한 질문수 10

0

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

 

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


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

 

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

unreal-engine ue-blueprint unreal-engine5 언리얼-c++ gas

답변 2

0

이득우

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

0

인프런 AI 인턴

안녕하세요, 인프런 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에 부착하여 수행합니다.

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

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

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

OnInterruptedCallback()으로 몽타주가 중간에 취소될 경우 CancelAbility를 호출하는게 맞을까요 ?

0

36

1

HasMatchingGameplayTag 역활이 조금 이해가 안갑니다.

0

42

1

캐릭터 스탯 초기 설정 방법 질문

0

84

2

언라얼 공식 홈페이지 튜토리얼 강의에 질문 있습니다

0

80

2

StartAbility, StartInputAbility 둘 다 GiveAbility를 호출해야하나요?

0

73

2

AnimNotify 구현 질문

0

101

2

[6강] ShowDebug에서 Attributes for avater가 변하지 않아요..

0

76

2

4강에서 콤보 공격시 다음 공격을 할 경우 ActivateAbility가 자동으로 발동되는 이유

0

111

2

9강 44:59 부분에서 질문이 있습니다.

0

77

2

8강 24:22 CurrentAttributeSet 질문입니다.

0

63

2

ASC 에서 AttributeSet 함수에 대한 mutable 반환 함수가 없는 이유

0

83

2

SetupGASInputComponent 함수 호출위치가 이해가안갑니다.

0

144

3

AnimNotify를 GA에서 받는방법이 있을까요?

0

83

2

ABP의 skeleton 오류

0

113

1

장판스킬을 만들때 콜리전설정

0

170

2

어빌리티의 쿨다운 GameEffect에 대하여

0

255

2

GAS 구조로 멀티 플레이 게임을 제작할려고 하는데요

0

224

2

5.4버전 기준으로 Remove Gameplay Effect With Tags가 안 보입니다.

0

281

3

8강의 수업 내용들 중 이해가 잘 안가는 부분들이 있습니다.

0

206

2

7강 GE로 NonPlayer의 어트리뷰트셋 값을 초기화시키는 것에 질문이 있습니다.

0

107

2

7강 정리했는데 검토부탁드려요

0

121

1

5강 정리해봤는데 검토부탁드립니다.

0

128

2

4강의 CreateTask 함수 질문입니다,

0

153

2

2강에서 TimerAction함수 질문입니다.

0

116

2