[UE5] Gameplay Ability System

윤정민·2023년 12월 7일
0

Unreal Engine

목록 보기
31/34

1. GAS(Gameplay Ability System)

  • 액터에 추가할 수 있는 컴포넌트 유형
  • 게임 속 캐릭터가 사용할 액션이나 패시브 능력상태 효과를 효과적으로 구축 가능

RPG를 만든다고 할 때 다양한 속성을 포함한다. 그리고 이는 게임플레이에 서로 영향을 미친다. (치명타, 데미지, 적중률 등등) 이들은 독립적이지 않고 유기적으로 연결되어 있다. 또한 애니메이션등으로 연결되어 있기도 하다.

2. 구성요소

  • Ability System Component: Actor가 가지게 되는 컴포넌트, 모든 ability를 관리
  • Attribute Set: 속성을 저장하는 역할
    • Gameplay Effect: 속성값을 변경하는 데 사용하는 것
  • Gameplay Ability: 기능을 캡슐화 하는 역할(공격, 주문 시전)
    • Ability Task: Gameplay Ability의 비동기 작업 단위
  • Gameplay Cue: 파티클 시스템 및 사운드와 같은 외관 효과를 처리하는 역할을 수행
  • Gameplay Tag(GAS고유 요소는 아님): 객체 식별에 유용하게 사용됨

3. 세팅 방법

간단하게 두 가지 방법을 생각할 수 있다.

  • 폰클래스에 ability System Component와 Attribute Set을 가지게 함
  • PlayerState에 ability System Component와 Attribute Set을 가지게 함
    • 폰이 파괴되면 ability System Component와 Attribute Set이 사라지기 때문에 PlayerState에서 관리

4. GAS in Multiplayer Game

4.1. Multiplayer Game

  • 서버 유형

    • Listen server: 한 플레이어를 서버로 지정하는 방법
      • 호스팅 플레이어는 지연이 발생하지 않는다는 특징이 있음
    • Dedicated server: 서버에 플레이어가 없고 화면 렌더링또한 발생하지 않음
  • 서버와 클라이언트의 차이

    • GameMode: 서버에만 존재
      • 플레이어를 생성하고 다시 시작하는 게임 규칙과 같은 작업을 담당하기 때문
    • PlayerController: 서버와 클라 모두 존재
      • 서버: 각 플레이어 컨트롤러의 권한이 있는 서버 버전이 있음
      • 클라이언트: 자신의 로컬 버전(Player Controller0번만 존재)
    • PlayerState: 서버와 클라 모두 모든 PlayerState가 존재
    • HUD& Widget: 클라이언트에만 존재
      • 각각의 클라이언트는 각각의 HUD와 Widget이 존재
  • Replicate(복사)

    • 업데이트 빈도: 서버에서 변경사항이 발생할 때마다 클라이언트에 데이터를 보냄
      • 100이면 변경사항이 클라이언트에서 초당 100번 업데이트
    • 서버에서 변경사항이 포함된 업데이트가 모든 클라이언트로 전송되면 클라이언트가 해당 변수의 버전을 새 값으로 업데이트 가능
      • 이는 서버->클라이언트 단방향으로만 실행된다는 점을 명시하자
    • 클라이언트의 입력은 RPC 또는 원격 프로시저 호출이라고 하는 복제된 함수의 형태로 수행

4.2. GAS

  • Multi 상황에서 Server의 정보를 Client로 보내는 과정에서 지연이 발생 가능
  • GAS는 클라이언트 측에서 이를 예측 가능

5. Attribute

  • Attribute
    • Base Value: 고정값
    • Current Value: 고정값에 임시 변화값을 더한 값
profile
그냥 하자

0개의 댓글