일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 파이썬
- github
- loop
- W3Schools
- 오류
- 재귀
- Basic
- String
- Material
- UE5
- Class
- dynamic
- Programming
- 프로그래밍
- Tutorial
- w3school
- 문제풀이
- parameter
- 백준
- guide
- 시작해요 언리얼 2022
- DP
- python
- Unity
- c++
- dfs
- Unreal Engine 5
- 기초
- C#
- Algorithm
- Today
- Total
행복한 개구리
문제해결 Unity 21.07.28. PUN2 - 클라이언트 위치동기화 렉 이슈 본문
우선 말하지만, Photon서버에서 트래픽이 많아 데이터를 받는 시간이 지연되는 현상은 전송하는 데이터양을 줄이는 수 밖에는 어찌 해결할 수 없다. => 경험상 인디게임에서는 어지간하면 트래픽지연은 발생하지 않는다.
선 결론을 내자면
1. SendRate와 SerializationRate설정 문제였다. 둘의 수치를 60/30이 아닌 30/60으로 적어둬서 서버로 전송되는 데이터는 적은데 동기화는 그 두배만큼 자주하려 하니 발생한 문제다.
2. PhotonView가 동기화하는 오브젝트가 너무 많아서이다. 팀프로젝트에선 부모오브젝트에 포톤뷰를 하나 넣어두고 동기화를 시켰는데, 전송, 수신주기가 알맞게 설정되어도 렉이 완전히 해결되지 않았다. 부모오브젝트 하위에 오브젝트가 너무 많거나 위치가 변하는 요소가 너무 많다면 트래픽이 모자라서 렉이 걸릴 수 있다.
포톤 클래식을 사용하여 동기화 받은 위치로 이동을 시키고 있는데 다른 클라이언트의 오브젝트가 렉이걸려 뚝뚝 끊기듯 이동하는 이슈가 생겼다.
하지만 함정들은 정상적으로 동기화 되는것이 굉장히 의아한 부분인데, 그 원인을 찾기위해 테스트프로젝트를 만들었다.
참 이상한 것은 몇주 전까지만 해도 위의 설정으로 실행했을 때 동기화가 상당히 잘되는 모습이었는데, 이제는 아니다.
따라서 Lerp가 있는 TransformView를 사용해야 하는건지 고민이 된다.
현재 Disabled, Synchronized Value, Teleport disabled의 옵션으로 실행해보았지만 무엇하나 해결할 수 있는 옵션은 없었다.
Teleport의 거리를 0.01까지도 줄여보았지만 해결이 되지 않는다.
그래서 Lerp가 있는 TransformView의 Local을 false로 만든 값을 사용해보았더니 동기화시간이 생각보다 빠르다.
물론 lerp때문에 살짝 지연되는 느낌이 있긴 하지만 이정도라면 팀프로젝트에 적용해도 문제가 없을 수준이다.
local을 True로 사용하여도 크게 차이가 없는 모습이다.
하지만 여기서 문제는 팀프로젝트는 트래픽량이 많아서 마스터클라이언트가 TransformView의 Lerp값을 동기화하는데 딜레이가 조금 더 있다는 점이다.
그래도 차선이니 사용해야하는걸까
깜빡 잊었던 SendRate와 SerializationRate를 설정해주니 TransformView와 근접한 수준으로 동기화가 잘 되는 모습이다.
팀프에서 구조가 바뀌며 해당 설정이 누락됐는지 찾아봐야겠다.
아... 서로의 수치를 바꿔썼기때문에 발생한 문제처럼 보인다.
주기설정값을 바꿔주어도 렉이 완전히 해결되지 않았다.
다시 의심이 생긴 부분은 PhotonView로 동기화시키는 오브젝트들이 모두 부모 오브젝트들이라는 것인데 자식오브젝트가 너무 많기때문에 그런게 아닐까 싶어서 테스트해봤다.
- 두 짤의 PhotonView와 PhotonTransformView의 개수는 같다.
- 예상이 맞은 것 같다. 자식오브젝트가 많아질수록 트래픽이 초과되어 렉이 걸리는 모습이다.
- 팀프에서는 자식이 800개까지 들어가진 않겠지만 상시 작동중인 오브젝트들이 존재하기때문에 같은 결과가 나왔다고 본다.
- 또한 함정움직임이 부드럽듯이 테스트에서도 자동으로 움직이는 오브젝트들의 움직임은 부드러운데 클라이언트의 움직임만 끊기는 현상이다.
- 팀프와 온전히 같은 현상이므로 이게 진짜 원인같다.
'Unity > Unity - Solutions' 카테고리의 다른 글
문제해결 Unity 21.07.30. Build시 SDK 미설치 에러 (0) | 2021.07.30 |
---|---|
Importing Assets 이슈 (0) | 2021.07.27 |
Unity 빌드 IL2CPP에러 해결 (0) | 2021.07.26 |
Photon 클라이언트가 마스터의 오브젝트를 로딩하지 못하는 문제 해결 (0) | 2021.07.23 |
에러 해결 21.07.19. Unity JSON임포트 에러 해결 (0) | 2021.07.19 |