- 개요
언리얼 엔진에서 Prediction은 클라이언트에서 수행하는 동기화 작업을 의미한다
서버 - 클라이언트간의 지연 시간에 따라 발생하는 문제를 최소화하는 용도로 사용하며
클라이언트가 서버의 응답을 기다리지 않고 대신 응답을 예측하여 로컬에서 미리 동작을 수행한다
서버는 클라이언트에서 미리 수행된 결과값을 판단하여 오류가 있다면 값을 보정한다
1) GAS 프레임워크에서의 Prediction
GAS 프레임워크에서 다음의 요소들은 기본적으로 Predict된다
- GameplayAbility의 발동
- 트리거된 Event
- GameplayEffect의 적용
- Attribute를 수정하는 경우
- GameplayTag를 수정하는 경우
- GameplayCue 이벤트
- Predict된 GameplayAbility에 포함된 경우
- 해당 GC 이벤트에 포함된 경우
- 애니메이션 몽타주
- UCharacterMovement 컴포넌트의 데이터
반대로 다음의 요소들은 GAS 프레임워크에서 Predict되지 않는다
- GameplayEffect의 제거
- Period 방식의 GameplayEffect
2) GAS 프레임워크에서 Prediction 동작 방식
2 - 1) 클라이언트 시점
클라이언트는 GameplayAbility가 발동되면 정수값을 지닌 Prediction Key를 생성한다
클라이언트는 생성한 Prediction Key를 서버로 전송하고 이 상태의 키를 ActivationPredictionKey로 부른다
클라이언트에서는 적용되는 모든 GameplayEffect에 Prediction Key를 추가한다
또한 생성한 예측키가 유효한 범위를 지정해야 하는데, ScopedPredictionWindow를 생성한다
클라이언트의 예측값은 해당 범위에서만 유효하며 범위를 벗어나면 서버의 결과값으로 보정된다
2 - 2) 서버 시점
서버는 클라이언트로부터 Prediction Key를 받는다
서버는 적용된 모든 GameplayEffect에 Prediction Key를 추가한다
서버는 다시 클라이언트에 Prediction Key를 Replicate한다
2 - 3) 다시 클라이언트 시점
클라이언트는 서버로부터 Replicate된 GameplayEffect와 Prediction Key를 받는다
서버로부터 받은 Prediction Key와 클라이언트가 갖고 있는 기존의 Prediction Key가 일치한다면
보정할 필요없이 올바르게 동작한 것이므로 해당 Gameplay Effect를 적용한다
'언리얼 엔진 - 게임 프로젝트 > GAS 프레임워크 RPG 프로젝트' 카테고리의 다른 글
| AbilityTasks - 3) 클릭한 대상을 향해 투사체와 캐릭터의 방향 일치시키기 (0) | 2025.08.17 |
|---|---|
| AbilityTasks - 2) AnimNotify를 사용한 이벤트 발동 + Task를 사용하여 어빌리티의 타겟 데이터 가져오기 (0) | 2025.08.16 |
| GameplayAbility - 최종) 어빌리티를 통한 투사체 생성 (0) | 2025.08.11 |
| GameplayAbility - 4) 길찾기 시스템 구현 (0) | 2025.08.11 |
| GameplayAbility - 3) Lyra의 입력 시스템 도입 (0) | 2025.08.09 |