해결된 질문
작성
·
156
·
수정됨
0
character와 controller 모두 onrep_playerstate 함수를 사용하고 있습니다.
지금 제 코드는 controller의 onrep_playerstate 에서는 playerstate를 초기화하고, playerstate 안에 변수 값들을 HUD에 바인드 하고 있고
character의 onrep_playerstate 에서는 playerstate의 변수 안에 값을 넣는 상황인데
controller->character라는 기존의 프레임워크 실행 순서와는 다르게
onrep_playerstate 함수가 리슨서버의 클라이언트 입장에서 매번 실행 순서가 뒤바뀌는 경우가 발생합니다.
이유를 찾아보니 playerstate를 서버에서 클라이언트로 리플리케이트하는데 매번 지연속도가 다르다고 하는 것 같은데
이럴 경우는 어떻게 해야할까요? settimer를 사용하는 방법은 지양되는 방식이라는 의견이 많아서 다른 해결방법을 모르겠습니다.
답변 1
0
네 기본적으로 PlayerState의 NetUpdate Frequency와 Priority 수치가 낮게 설정되어 있어 늦게 전송되는 특징이 있습니다. 일단 PlayerState 중심으로 리플리케이션 정보를 전달한다면 이를 높이는 방법이 고려해야 될 것으로 보입니다.
그런데 클라이언트에서도 컨트롤러 -> 캐릭터의 순서가 지켜져야 하는 이유가 있을까요?
클라이언트의 경우 PostNetInit에서 전달받은 기본 값으로 초기 세팅을 처리하고, OnRep_PlayerState을 통해 갱신되면 새로운 값이 반영되도록 설계되어야 하지 않나 싶습니다.