출처 :: '
리그오브레전드 디스이스게임 ' 작성자 ::
' Dun1007 ' 1 . 서론 게임을 하다보면 분명히 모르가나의 궁을 플래쉬로 피했는데에도 불구하고 간발의 차이로 맞아서 숨진다던가, 궁 고스트킨 미친 신지드가 나한테 달려와서 E쓰기전에 간발의 차이로 도주기를 사용했는데도 쿨은 돌아가는데 그대로 뒤로 집어던져져서 점사당해 죽은 기억이 한번씩은 있을 것이다. 이런 현상이 일어나는 원리는 대체 무엇인가? 이는 서버에서 2개의 클라이언트에서 전달된 서로 다른 명령을 동시에 수행할때 일어나는 현상이다.
2 . 원리 플레이어 1이 플레이어 2에게 스턴차지된 티버를 시전했고 플레이어 2가 이를 플래쉬로 회피하려는 시나리오를 가정해보자. 두 클라이언트 간에는 핑때문에 어쩔수 없이 다소의 반응 갭이 있고, 플레이어 1의 클라이언트는 플레이어 2가 플래쉬를 사용하기 전에 티버에 맞았다고 명령한다. 하지만 플레이어 2의 클라이언트는 플레이어 1이 티버를 사용하기 전에 플레이어 2가 플래쉬를 사용해서 그 자리에서 벗어났다고 명령한다. 물론 일반적인 경우엔 서버는 단 하나의 '보다 TRUE일 확률이 높은' 시나리오를 수행하지만, 두개의 명령이 절묘하게 겹쳐진 경우에 서버는 두개의 시나리오를 동시에 수행한다. 즉 플레이어 2는 플래쉬를 사용했음에도 불구하고 티버의 스턴+데미지를 입음으로 표기되는 것이다. 소스 :
http://clgaming.net/redtracker/topic/10156/?p=4 3 . 예측 이동? 그게 뭐시당가? LoL 게임내에서 ESC -> More Options에 가보면 Movement Prediction이라는게 있다. (김치롤일시 ESC -> 추가 옵션 -> 예측 이동) 일반적으로 '클라이언트 측에서의 예측'으로 불리는 이 기능은 본래 핑이 높은 유저들을 배려한 기능으로. 서버에 명령을 보낼 필요없이 클라이언트에서 바로 영웅을 움직이게 하는 기능이다. 이 기능을 켜지 않을때의 클라이언트 - 서버 간 관계 1 . 클라이언트가 플레이어의 명령을 서버에 전달 2 . 서버에서 명령을 받아들여 실행 3 . 서버의 응답을 받은 클라이언트가 화면에 무엇이 어떻게 되었는지를 플레이어에게 보여줌 이 기능을 켰을때 1 . 클라이언트가 플레이어의 명령을 받은 후 서버의 도움없이 알아서 '예측'하여 플레이어에게 보여줌 2 . 서버에 명령의 가/부를 전달(ex : 캐릭터가 정말 그런 행동을 하였는가? 캐릭터가 그걸 하는게 허락되었는가?) 3 . 서버가 가/부를 판단해서 클라이언트로 응답 4-1 . 서버의 응답이 YES일 경우 1에서 행해진 행동을 그대로 보존 4-2 . 서버의 응답이 NO일 경우 1에서 행해진 행동을 모두 캔슬하고 서버가 말하는 대로의 행동을 행함 높은 핑에서 롤을 하면서 이 기능을 킬경우 영웅이 멈춰있다 움직일때 버벅대는 것을 느낄 텐데, 이 이유가 바로 이것이다. 이 경우에 서버-클라이언트 간의 명령교환은 아래와 같다. (자신의 클라이언트와 서버와의 반응속도가 약 0.5초라고 가정하고, 플레이어가 마우스 우클릭을 하여 캐릭터를 1초에 300픽셀 속도로 움직였다고 가정) 1 . 클라이언트는 플레이어의 명령을 '예측'하여 일단 플레이어가 300픽셀을 움직인 것을 보여준다 2 . 이후 클라이언트는 '플레이어가 1초동안 300픽셀만큼 움직였다'는 명령을 서버에 보낸다. 3 . 0.5초후 서버에서는 클라이언트가 보낸 '플레이어의 캐릭터가 300픽셀만큼 이동했다'라는 명령에 NO라고 응답하고 제대로 된 값인 150픽셀(0.5초 딜레이타임이 있기때문에 나머지 0.5초동안만 움직인 꼴)을 보낸다. 4 . 이에 클라이언트는 300픽셀을 움직였다는 결과를 모두 캔슬해버리고 150픽셀이 움직인 것으로 다시 표시하는 것이다. 이 과정에서 우리가 느끼는 버벅거림이 생성된다. 소스 :
http://en.wikipedia.org/wiki/Client-side_prediction 4 . 길고긴 설명끝에 본론(...) 이 예측이동 기능의 중요한 점은 바로 2번에서 언급한 서버와 클라이언트 간의 관계에 있다. 플레이어 1과 플레이어 2의 손에 땀을쥐게하는 티버회피를 기억하는가? 예측 이동 기능을 사용시, 플레이어 1의시나리오가 서버에서 TRUE 판정을 받을 확률이 증가한다. 즉 이 기능을 켠다면 간발에 차이로 명중하지 않아야 할 스킬들의 명중확률이 조금이나마 증가한다는 것이다. 물론 정말 '조금이나마' 증가하는 것이지만, 그 스킬 한발한발이 때로는 상대 캐리에게 가까스로 다가가서 뒤로 넘기려도 하는 신지드의 E가 될수도 있고, 때로는 적 옆구리를 아슬아슬하게 스쳐 지나가는 트페의 Q가 될수도 있다. 0.01초가 모든 걸 결정하는 한순간에, 이 기능은 플레이어의 목숨을 살리고 죽이는 마지막 비기가 될수도 있다는 점을 명심하자.
5 . 한줄요약 켜도 패널티는 없는데 눈꼽만큼이라도 스킬 명중률이 좋아지니 걍 켜놓으셈