언리얼 엔진 - 게임 프로젝트/GAS 프레임워크 RPG 프로젝트

AbilityTasks - 1) GAS 프레임워크에서의 Prediction

monstro 2025. 8. 15. 20:46
728x90
반응형

- 개요

언리얼 엔진에서 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 부른다

클라이언트에서는 적용되는 모든 GameplayEffectPrediction Key를 추가한다

또한 생성한 예측키가 유효한 범위를 지정해야 하는데, ScopedPredictionWindow를 생성한다

클라이언트의 예측값해당 범위에서만 유효하며 범위를 벗어나면 서버의 결과값으로 보정된다

 

2 - 2) 서버 시점

서버는 클라이언트로부터 Prediction Key를 받는다

서버적용된 모든 GameplayEffectPrediction Key를 추가한다

서버다시 클라이언트Prediction KeyReplicate한다

 

2 - 3) 다시 클라이언트 시점

클라이언트서버로부터 ReplicateGameplayEffect와 Prediction Key를 받는다

서버로부터 받은 Prediction Key 클라이언트가 갖고 있는 기존의 Prediction Key일치한다면

보정할 필요없이 올바르게 동작한 것이므로 해당 Gameplay Effect를 적용한다

 

728x90
반응형