오늘은 개인과제에 필요한 기능은 거의 다 구현하고, 제출 전 마지막으로 Master Client (Host)가 아닌 일반 클라이언트에서 공의 속도가 너무 빠를 때 발생하는 지터링을 해결해보려했다.
결론만 말하면, 아직 해결하진 못 했다...
공이 벽에 닿을 때마다 울렁거린다,,
Reliable Delta Compressed
IPunObservable
인터페이스를 구현해야 사용할 수 있다.Unreliable
Unreliable On Change
3개 모두 바꿔가며 사용해봤지만, 해결이 되진 않았다.
그래서 다른 방법인 지연 보상
을 사용해보기로 했다.
간단하게 말하면,
마스터 클라이언트가 일반 클라이언트로 데이터를 보내는 시간 동안, 객체는 계속 움직이고 있다.
그 지연 시간의 차이를 계산해서 객체가 진행하던 방향만큼 속도를 곱해서 더해주면 실제 객체의 위치를 예측해낼 수 있다.
아주 맞는 말이라 적용해봤지만, 공식 문서의 코드를 그대로 적용하면 안되는 것 같다.
왜냐하면, 지연 보상은 지연되는 동안 객체가 방향을 바꾸지 않았다는 가정
하에 실제 위치를 예측한다.
하지만 내 공은 벽에 닿으면 방향을 바꾼다. 이 과정에서 잘못된 예측으로 인해 실제 객체의 위치와는 격차가 더 벌어지게 되고, 지터링이 더 심해지는 결과가 나왔다.