- 위치랙 개선을 위한 파워싱크 프로젝트 2탄
-
94,137
618
-
CYPHERS
2015-05-27 18:28:23
안녕하세요. 정보통E입니다.
'파워싱크(PowerSync)' 프로젝트의 두 번째 시간입니다.
이번 매거진은 5월 28일 적용될 내용에 대해 동기화 개선 TFT를 맡고 있는 서버 파트장이 직접
기술적인 내용과 함께 업데이트가 적용되면 기대할 수 있는 변화에 대해 최대한 알기 쉽게 정리합니다.
= 업데이트 적용 일정 =
날짜 |
동기화 개선 업데이트 내용 |
2015년 5월 14일 |
네트워크 통신 주기 최대화 위치 동기화 모니터링 시스템 |
2015년 5월 28일 |
클라이언트가 사용하는 네트워크 대역폭 감소 네트워크 통신 알고리즘 변경을 통한 게임 반응성 향상 1차 더욱 정밀한 물리계산 적용 클라이언트 잔랙 최소화 |
2015년 6월중 |
동기화 개선 적용 |
2015년 7월중 |
네트워크 사용 대역폭 최적화 적용 클라이언트 간 네트워크 지연 최적화 |
※ 표의 내용 이외에 추가적인 작업이 계속 진행될 예정입니다, 안정성이 확보되면 적용하겠습니다.
5월 14일에는 네트워크 통신 주기 최대화 및 위치 동기화 모니터링 시스템이 적용되었습니다. 모니터링 시스템을 통해 분석한 결과,
위치 동기화 문제는 업데이트 적용 전보다 20%감소하였습니다. 즉, 통신 주기 최대화 작업을 통해 위치랙 현상은 감소했습니다.
- 인지 불가능한 위치랙 카운트 : 능력자가 눈으로 알 수 없지만 기술적으로 감지되는 위치랙입니다.
- 인지 가능한 위치랙 카운트 : 눈으로 인지가 가능한 실제 겪는 위치랙입니다.
(내부 자료의 일부를 공개하는 것으로 정확한 수치는 알려드릴 수 없는 점, 이해 부탁드립니다.)
안녕하세요. 사이퍼즈 개발실 서버 파트장입니다. 우선, 지난주 동기화 문제 1차 적용으로 저희는 다양한 로그를 획득할 수 있었습니다. 수집한 로그를 바탕으로 더욱 다양한 분석을 할 수 있게 되었으며 분석 결과를 바탕으로 앞으로 적용 예정인 업데이트에 소중한 자료로 활용할 수 있으리라 생각합니다.
아울러 5월 14일 적용된 '네트워크 통신 주기 최대화'가 적용된 후, 일부 자잘한 랙이 발생했다는 의견이 접수되고 있는데요. 이 부분에 대한 개선 작업을 진행하였으며 이번 패치에 적용됩니다.
사이퍼즈는 공성전 한 판 당 발생하는 데이터 중 캐릭터의 이동 데이터의 비율이 80% 정도로 높습니다.
공성전이 시작되면 움직이는 것은 캐릭터만이 아니며 PC를 포함해 수호자,센티넬,철거반 등 다양한 캐릭터가 움직이게 됩니다.
상황에 따라 다르지만 각 움직이는 개체(Actor)는 이동 데이터를 클라이언트와 서버가 주고받습니다.
이렇게 게임 내, 클라이언트가 관리하는 대상이 많아질수록 각각의 클라이언트가 서버에 보내야 하는 이동 데이터 또한 배수로 증가하기 때문에 저희는 이동 데이터 관리를 통해 클라이언트가 부담하는 네트워크 대역폭을 줄이고자 합니다.
= 클라이언트가 처리하는 데이터의 부담을 덜어주자! =
사이퍼즈는 공성전을 진행할 때 발생하는 다양한 데이터들은 각 클라이언트가 분담하여 다른 클라이언트와 통신하며 처리합니다.
저희는 위 구조에서 본인 캐릭터를 제외한 나머지 데이터들의 경우, 서버에 데이터를 전달한 후 서버가 다시 다른 클라이언트에게 데이터를 전달하는 구조로 변경하려고 합니다.
이 업데이트가 적용되면 클라이언트의 데이터 부하가 줄어들어 특정 클라이언트의 네트워크 상황이 좋지 않을 때 해당 클라이언트가 담당하는 데이터가 지연 현상이 발생하는 빈도를 줄일 수 있으리라 생각됩니다.
추가로, 본인의 캐릭터가 공격을 당했을 때, 피격 이펙트 정보도 기존에는 클라이언트 간 통신을 통해 처리했지만 앞으로 서버를 통해 데이터가 통신되도록 변경합니다.
단, P2P로 직접 전송하던 데이터가 서버를 통해 전송되는 만큼, 본인의 캐릭터 이외의 철거반, 센티넬, 트루퍼, 수호자의 반응성이 다소 늦어질 수 있습니다. 이 부분은 업데이트 적용 후 면밀히 관찰하겠습니다.
사이퍼즈는 클라이언트 간 직접 통신을 하며 게임을 진행하도록 되어있습니다. 간혹 클라이언트 간 통신이 불가능할 때는 서버를 통해 데이터를 전달하게 되어있습니다.
기존에 서버를 통해 데이터를 전달할 때 사용하는 네트워크 통신 알고리즘은 네트워크 상황이 조금이라도 나빠질 경우 데이터 전송 지연 및 원상회복이 느려질 수 있었으며, 이로 인해 위치 동기화 등의 문제가 발생할 수 있습니다.
이 문제를 해결하기 위해 기존에 사용하던 알고리즘은 모두 버리고 새로운 알고리즘을 적용하여 더욱 안정적인 네트워크 환경을 제공하고자 합니다. 물론, 변경될 네트워크 알고리즘 또한 완벽하게 문제를 해결할 수 없지만 기존보다 높은 안정성과 빠른 데이터 전송이 예상됩니다.
사이퍼즈는 액션 AOS로 모든 상호 작용에 대해 물리 엔진이 사용되고 있습니다. 물리 계산에서 중요한 요소 중 하나는 동일한 환경에서 상호작용이 발생했을 때 모든 클라이언트가 동일한 결과를 보여야 한다는 것입니다.
만약 물리 계산이 맞지 않게 되면 각 클라이언트의 결과 값이 잘못 전달되게 되고 이러한 경우 동기화 문제(위치랙) 현상이 발생하는 주요 원인이 됩니다. 우선, 저희가 각종 테스트를 통해 확인한 동기화 문제를 공유드리고자 합니다.
= 물리계산 오차 재현 테스트 =
- 메트로 폴리스 샛길에서 드렉슬러(공격자)가 공격을 합니다.
- 공격자, 피격자, 관찰자 입장으로 각 클라이언트가 어떻게 보이는지 확인을 합니다.
다음 동영상을 통해 저희는 공격자가 바라보는 시야에서 물리 계산 오차로 인한 동기화 문제(위치랙) 현상이 발생하는 것을 확인했습니다. 아울러, 물리 계산 오차로 인해 충돌 박스(컬리전 박스:Collision Box)도 거리 차이가 나타났습니다.
- 공격자 시점 영상 -
공격자의 경우, 피격자가(트리비아) 공격을 당했을 때 동기화 지연 현상 발생을 확인할 수 있습니다.
지난 업데이트를 통해 일부 저사양 PC에서 클라이언트의 프레임이 감소되는 현상과 관련하여(CPU를 100% 사용하는 현상) 추가 보완 패치를 진행합니다. 이 패치를 통해 클라이언트의 프레임 감소 현상이 일부 개선됩니다.
현재 이러한 변경 사항에 문제는 없는지 세심한 테스트를 개발실 내부에서 진행 중에 있습니다. 5월 28일 적용 후에도 수집되는 로그 분석을 통해 사이퍼즈에 최적화된 전송 방식을 만들 수 있도록 노력하겠습니다. 감사합니다.