Cyphers

  • 위치랙 개선을 위한 파워싱크 프로젝트 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)도 거리 차이가 나타났습니다.


- 공격자 시점 영상 -

공격자의 경우, 피격자가(트리비아) 공격을 당했을 때 동기화 지연 현상 발생을 확인할 수 있습니다.




- 관찰자 시점 영상 -

관찰자의 경우, 공격자의 시점과는 다르게 정상적으로 피격자의 물리 계산이 진행됨을 확인할 수 있습니다.




저희는 해당 원인을 분석한 결과, 피격자가 넘어졌을 때 일어난 위치가 충돌 박스와 완전히 붙었을 때, 피격자의 위치가 강제로 보정되는 것을 확인하였습니다. 또한 이 경우, 각 클라이언트가 보정되는 정보를 공유해야 하지만 그렇지 않아 위치랙 현상이 발생하는 것을 확인했습니다.


[점선 박스 안에 로라스의 위치가 클라이언트마다 서로 다르게 보이는 것을 확인했습니다]


문제를 해결하기 위해 지금까지 사용되어 왔던 보정 함수를 수정하는 작업이 5월 28일에 적용됩니다.

이 업데이트가 적용되면 충돌 박스 근처에서 공격했을 때, 상대방이 튀어 보이는 현상이 해결될 것으로 생각합니다.




지난 업데이트를 통해 일부 저사양 PC에서 클라이언트의 프레임이 감소되는 현상과 관련하여(CPU를 100% 사용하는 현상) 추가 보완 패치를 진행합니다. 이 패치를 통해 클라이언트의 프레임 감소 현상이 일부 개선됩니다.




현재 이러한 변경 사항에 문제는 없는지 세심한 테스트를 개발실 내부에서 진행 중에 있습니다. 5월 28일 적용 후에도 수집되는 로그 분석을 통해 사이퍼즈에 최적화된 전송 방식을 만들 수 있도록 노력하겠습니다. 감사합니다.





댓글 618
댓글은 최대 255자까지, 스티커 10개까지 등록할 수 있습니다
스티커 등록 n
등록0/256
닫기
안녕, 레이디 YES NO 내 맘 알지? 성공! 뜨헉! 하아? 힝-
좋구나~ 후후후... YES NO 하- 감히! 이녀석들! 그땐 그랬지
Hi~ OK Oh! 냠~ Love U~ 궁금해! YES! 히힛~
안녕하십니까? 예~예~ 모든 것은 신의 뜻... 불허합니다. 의외군요. 나 원 참... 시작할까요? 강화인간!!
안녕? OK 궁금하네요. 역시! 재미있네. 깜짝이야! 아~니? ...
웃음 두려움 만족 놀람 동의 분노 좌절 인사
안녕하세요? 넵!! 미안해요!! 앗! 좋아요! 엣헴. 추천! ㅠㅠ
안녕하심까~ 피- 좋다! 못마땅해... 곱다~ 덤비라! 후우- 아슴찮다..
허~허~ 아, 아니... 헐! 흠흠... 끄응... 시, 식은땀이.. 엥? 후어어..
후훗~ Trick or Treat! 사.탕.내.놔. 소녀... 억울하옵니다... 사, 사탕 주세요! 해피... 핼러윈... 날 위해 사탕 정돈 줘야지? 목표? 당연히 사탕이지!
안녕~ ?? 피- 어머! 흐어 오오- 안돼! 랄랄라
우쭈쭈 하하 하? ?? 이거 참... -_- 안녕하십니까 안됩니다
ㅇㅅㅇ 으르릉... 나, 나! (정색) 깔깔 아니야!! 뿌잉 메~
안녕하십니까! 흐응? 흐으으응?! 척! 칫.. 좋-았어! 엥? 후에엥-!!
칫 엄숙하고 근엄하고 진지하다 믿습니다 내 안의 ...가 깨어난다 영업 중 할많하않 충격! 공포! 둠칫 둠칫 두둠칫
파이팅!! 고마워~ 졌어... 히힣 극대노 미안! 거울 앞에서 자의식 과잉된 십대 라이언
저는 지금 극공입니다. 훠이훠이 하.하.하. 매우 화가 납니다. 총기 손질중입니다. 저와 한 판 붙어보시겠습니까? 당신에 대한 정확한 진단 안돼!
뭐가 궁금하죠? 축하드립니다. 너에게는 뭐든 주고 싶어. 칭찬 드립니다. 대-단하십니다. 내겐 보여, 너의 죽음 당신을 믿습니다. 이런 미래는 싫어!
감사합니다. 기쁩니다. 축하합니다. 칭찬해 드리죠. 놀랍군요. 심기가 불편합니다. 충격을 받았습니다. 매우 화가 나는군요.
짝.짝.짝.짝 고마워... 멋있어... 지금 이게 뭐하시는 거죠? 대다나다 히에엑... 헉! 깜짝 놀랐습니다. 그만해!!!!!
옳소! 감탄했습니다. 흐음 후회할거요! 감사합니다. 놀랐습니다. 충격을 받았습니다. 축하드립니다.
감사합니다. (정색) 축하드립니다. 칭찬해 드립니다. 놀랍군요. 매우 화가 나네요. 큰 충격입니다. 놀랍군요.
이럴수가... 감히! 네가! 아니?! 장하군! 응?! 좋다! 그건 아니다! 고맙다!
감사합니다 잘 못 들었습니다? 축하드립니다 매우 화가 나는군요 가슴이 두근거리네요 좌절상태입니다 감탄했습니다 칭찬합니다
멋지군! 좋았어! 하하! 축하하오! 아아.. 5분전인데. 커피한잔 하겠소?
승리의 정유년! 정의로운 새해복! 극.한.공.성. 복! 받아랏! 음~ 직장인의 정석
많이 배웠습니다! 대단합니다! ?!! 축하드립니다 뭔가.. 부족해요 짝짝짝! 각오하세요! 으윽!
성탄의 축복을~! 메리 X-MAS~! 화이트 크리스마스야 해피~ 크리스마스~ 고요한 밤~ 거룩한 밤~ 성탄이구나~
Good! Thank U Missing U Useless It's pretty good Oops WHY! Please wait
멜빈 미이라와 고스트 제피 할로윈에는 카를로스호박 히카르도의 사탕 탄야의 마녀 분장..? 잭-슈타인 강시 루시
기자님의 감탄사 : 호-오! 기자님의 일과 : 신문 보기 기자님의 사과 : 이거 실례! 기자님이 놀라면 : 어이쿠! 기분이 좋아 보이는 잭 기분이 나빠 보이는 잭 천진난만한 잭 상큼한 인사를 날리는 잭
좋군요! 좋은 시간 되소서 Merry 추석~! 우와~! 호~오! 가득해요~! 짱인데! 품위있군
Chu~♡ 파이팅! 우와앙.. 졌어 ㅠㅠ 이겼다! 흐~음? 뜨헉! 돼.. 됐거든! 사.. 살쪘..!
훌륭합니다 궁금하네요 에구머니나! 슬프네요... 경멸스럽군요.. 후훗~ 뭐라고 하셨죠? 이, 이럴수가...!
아이작의 멋진 모습 이글이라 샤샤샤~ 트리비아 슬라이딩 시바 포는 달린다 까미유도 달린다 라이샌더 달린다 마를렌 점프! 샬럿 점프!

최근에 사용한 스티커가 없습니다.
능력자님의 마음을 한 마디로 표현할 수 있는 스티커를 찾아 보세요!