Unity kinematic 결정론적 캐릭터 컨트롤러로 커스텀 클라이언트 예측 with Mirror Networking
서버는 싱가폴 서버에 올렸음. 거리가 있는 만큼 의도적 지연을 적당히 잘 줘야만 잘 작동함. tick대신에 언리얼처럼 timestamp 방식으로 구현했고 전송압축으로 네트웍 전송량을 줄이고 클라는 보간/외삽과 예측 움직임으로 반응성을 좋게 했음.
싱가폴 서버에 올릴 때는 rsync로 md5 체크섬 변경만을 전송하여 획기적으로 배포를 빠르고 저비용으로 했음.
서버에 올린 빌드는 headless이므로 별도 web gui를 만들어서 없어진 서버의 gui 대신 사용하였음.
적어도 술래잡기 정도는 고퀄로 만들 수 있을 듯.
서버권한+클라예측 구현했으니.
아래는 봇 20명 스폰했을 때 클라 2명의 예측 오차. 그리 크지 않다.
아래는 봇 30명.
[영상]
[영상]
지난 비공개 포스팅에서 캐릭터 지면 충돌 처리에 unity physics 가 많이 호출되는것이 유니티 탓인 줄 알고 역시 언리얼인가 하고 실망했었는데, 오늘 profiler를 더 사용해보면서 vsync, gui 등 그래픽 요소가 서버의 부하를 늘리므로 헤드리스로 하면 어떨까 했더니 성공. 그리고 유니티의 tick이 웬지 대형게임에 검증안된 것 같아서 언리얼의 timestamp 방식으로 바꿨는데 그것도 괜찮았던 것 같다. 마지막으로 클린빌드, 의도적 지연 등 해주니 꽤 괜찮다. 다행이다. 이로써 유니티에서 fps/tps/ots/topdown 시점의 서버권한 클라예측 멀티플레이 컨트롤러를 만들었다.
#유니티 #클라예측 #kinematic
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.



