추가 변경사항
-
원래 서버 <> 클라이언트 통신간 일어나는 과정은 아래와 같았다
-
클라이언트는 접속하면서 자신의 Speed 값을 서버에게 전달
-
게임이 시작되면 자신의 위치정보와 시간을 서버에게 전달
- 만약 방향이 바뀌었다면 그때마다 방향정보도 전달
-
서버는 방향과 시간 속도를 통해 위치를 검증
- 만약 계산된 위치와 받은 위치가 오차범위(10%)를 못 넘으면 미적용
-
서버는 받아온 모든 유저의 위치들과 방향을 가지고 추측항법 계산
- 계산하며 유저의 값도 계산된 값으로 저장
-
계산한 값을 0.1초마다 클라이언트에게 전달
-
전달받은 값을 클라이언트는 적용
-
-
이러한 과정에서 위치 검증과 추측항법이 서로 침범하게 된다..
(사실상 추측항법으로 위치가 적용되니 검증은 무용지물!) -
그렇기에 3번과 4번의 로직을 수정하여야 했다!
-
3번의 검증에서 위치를 검증해서 오차범위를 넘으면 미적용이 아니라 계산된 값을 적용하도록 하였다!
-
4번에선 추측항법은 값을 예상하기만하고 기존 위치를 변경시키지 못하도록 하였다!
자체 피드백
-
프로젝트의 구조나 유니티를 만지는 것이 처음이여서 진행도가 느릴 수 있었음에도, 생각보다 더 느렸던 것 같다!
( 안풀리는 문제에 대해 너무 한가지 방법만 고집하지 말자! ) -
현재 구현한 서버도 나름 괜찮다 생각하지만.. 입력도 일정 주기(최대 지연시간?)로 공정하게 처리할 수 있으면 좋을 것 같다!
-
그리고 클라이언트의 의도치 않은 종료로 TCP 연결이 지속되지 않도록,
PING 테스트 간 일부 조건을 만족하지 않으면 자동으로 끊어주는 기능도 만들면 좋을 것 같다!