나만의 작은 도서관

[개인 과제][KPT 회고] 유니티-TCP 서버로 멀티 플레이어 환경 구현하기(Node.js - 4) 본문

JavaScript/회고 모음

[개인 과제][KPT 회고] 유니티-TCP 서버로 멀티 플레이어 환경 구현하기(Node.js - 4)

pledge24 2024. 7. 8. 14:05

유니티 클라이언트 화면

개요

6/28~7/8 기간동안 진행된 네번째 Node.js 과제를 마무리 했다.(세번째 Node.js과제가 없는 이유는 예비군으로 인해 5일 중 3일을 빠져서 도저히 만들 시간이 없어 제출하지 않았다.) 처음으로 만져본 TCP서버에 대한 나의 생각을 앞으로의 나를 위해 기록해두고자 한다.

 

서버 링크

https://github.com/pledge24/Unity-TCP-Game

 

GitHub - pledge24/Unity-TCP-Game

Contribute to pledge24/Unity-TCP-Game development by creating an account on GitHub.

github.com

 

클라이언트 링크(fork후 커밋)

https://github.com/pledge24/node5_unity_sample

 

GitHub - pledge24/node5_unity_sample: 내일배움캠프 Node.js 5기 TCP 서버 연동을 위한 unity 예시 게임

내일배움캠프 Node.js 5기 TCP 서버 연동을 위한 unity 예시 게임. Contribute to pledge24/node5_unity_sample development by creating an account on GitHub.

github.com

 


Keep - 현재 만족하고 있는 부분

적극적으로 샘플 코드 구조 변경하기

  • 강의에서 다룬 내용을 핀트만 살짝 바꾸어 과제로 낸 만큼 어떤 경우에서든 강의에 있는 내용들을 그대로 복사해서 사용하고 끝냈으면 과제는 문제없이 진행할 수 있었다. 그럼에도 불고하고 주도적으로 클라이언트 코드를 이해하고 서버측 코드와 통신 구조를 바꿀려는 여러 시도들은 보다 통신과 코드 구조들을 이해하는데 도움이 되었다. 따라가는 것이 아닌 본인만의 것으로 만들려고 한 여러 시도들은 결과와 상관없이 잘한 행동이라고 본다.

제시간에 모든 요구 사항 제출완료

  • 이번 과제는 난이도가 있었던만큼 많은 시간을 할당받았음에도 불구하고 제 시간에 낼 수도 있었던 상황들이 많이 있었다. 중간에 포기하고, 필수 구현과제만 내고 끝낼수도 있었지만 새벽까지 밤을 새며 조금이라도 이해하고 도전하려는 도전의식과 책임감은 나의 큰 강점같다. 어떻게든 일을 마무리하려는 태도는 칭찬받아 마땅하다고 생각한다. 앞으로 의지가 많이 꺾이는 일이 있더라도 이런 태도는 바뀌지 않았으면 한다.

Problem - 불편하게 느끼는 부분

TCP 서버 이해 부족

  • 처음 다루는 TCP 서버인만큼 아무리 시간을 많이 받았어도 이해가 되지 않는 부분이 한 두가지가 아니었다. 어느정도였냐면, '이 기능은 어떻게 작동하는거지?'정도가 아닌, '이게 왜 필요한거지?'하는 정도였다. 지식에 대해 접근할 때 그 필요한 지식의 필요성을 느끼지 못할 정도이니 본인도 답답해 미칠 지경이었다.(대표적으로, 위치 동기화를 할 때 maxLatency를 이용하여 보다 안정적인 서버를 구현할 수 있다고 하는데, 추측 항법을 사용할 때 maxLatency를 적용하지 않아도 잘되는 모습을 보여 필요성을 느끼지 못했었다.) http나 웹소켓만 해도 괜찮았는데 TCP로 넘어오니 이런 지식의 개수가 많아지는게 문제가 되는 것 같다. 어쩔 수 없는 부분이지만 이런 지식들이 쌓인 상태로 과제를 진행하려하니 산으로 가는 일명, 삽질이 되게 많았던 과제였다. 

Try - Problem에 대한 해결책, 당장 실행 가능한 것

많이 해보면 될 것 같다.

  • 단순한 숙련도 이슈라고 생각이 든다. 코드 흐름이나 통신 과정정도는 웹소켓과 닮아있는 점이 많았기 때문에 통신 구조와 같은 큰 틀의 흐름을 이해하지 못한 것은 아니다. 다만, TCP를 통한 위치 동기화와 같은 문제들은 아직 낯설고 정확한 사용처를 모르기 때문에(지금 당장은) TCP에 대한 여러 지식들을 이해하고 재시도하면 다음에는 깔끔하게 해낼 수 있을거라고 믿는다.

마지막으로...

유니티를 안 만진지 반년이 되어서 그런가... 처음 유니티에서 출력문을 적을 때도 Debug.Log였다는 사실조차 기억이 나지 않았다.(내다버린 10개월...) 그래도 인스펙터와 같은 유니티 UI는 기억하고 있는 지 유니티에서 만들어진 기능들을 다루는 데엔 크게 어렵지 않았다. 오랜만에 만진 유니티는 너무나도 재밌고 짜릿했지만, TCP서버를 만들기 위해 패킷 교환이 정상적으로 작동하는 지, 위치 동기화가 제대로 되는 지 확인하기 위해 플레이 버튼만 수백번 눌러 확인하다보니(진짜다) 플레할 때마다 나오는 노래 소리만 들어도 노이로제가 걸릴 지경에 이르었다. 많은 스트레스와 고통을 안겨 준 이번 과제... 구글에 검색해봐도 다루는 글 양 자체가 적어서 더 힘들었던 이번 과제... 다시 한 번 개발은 나에게 있어 애증의 관계라는 것을 상기시켜준 과제였다.