추가 변경사항

  • 원래 서버 <> 클라이언트 통신간 일어나는 과정은 아래와 같았다

    1. 클라이언트는 접속하면서 자신의 Speed 값을 서버에게 전달

    2. 게임이 시작되면 자신의 위치정보와 시간을 서버에게 전달

      1. 만약 방향이 바뀌었다면 그때마다 방향정보도 전달
    3. 서버는 방향과 시간 속도를 통해 위치를 검증

      1. 만약 계산된 위치와 받은 위치가 오차범위(10%)를 못 넘으면 미적용
    4. 서버는 받아온 모든 유저의 위치들과 방향을 가지고 추측항법 계산

      1. 계산하며 유저의 값도 계산된 값으로 저장
    5. 계산한 값을 0.1초마다 클라이언트에게 전달

    6. 전달받은 값을 클라이언트는 적용

  • 이러한 과정에서 위치 검증과 추측항법이 서로 침범하게 된다..
    (사실상 추측항법으로 위치가 적용되니 검증은 무용지물!)

  • 그렇기에 3번과 4번의 로직을 수정하여야 했다!

  • 3번의 검증에서 위치를 검증해서 오차범위를 넘으면 미적용이 아니라 계산된 값을 적용하도록 하였다!

  • 4번에선 추측항법은 값을 예상하기만하고 기존 위치를 변경시키지 못하도록 하였다!

자체 피드백

  • 프로젝트의 구조나 유니티를 만지는 것이 처음이여서 진행도가 느릴 수 있었음에도, 생각보다 더 느렸던 것 같다!
    ( 안풀리는 문제에 대해 너무 한가지 방법만 고집하지 말자! )

  • 현재 구현한 서버도 나름 괜찮다 생각하지만.. 입력도 일정 주기(최대 지연시간?)로 공정하게 처리할 수 있으면 좋을 것 같다!

  • 그리고 클라이언트의 의도치 않은 종료로 TCP 연결이 지속되지 않도록,
    PING 테스트 간 일부 조건을 만족하지 않으면 자동으로 끊어주는 기능도 만들면 좋을 것 같다!