디버거의 삶
코드를 빠르게 해석하고 오류를 찾는 것을 잘한다고 팀원분들이 얘기해주셔서 문제가 생기는 부분이 생기면
붙어서 도와주는 역할을 맡게 되었다! ( 물론 비교적 잘하는 것이죠.. 우쭐 ㄴㄴ )
- 그러나 디버깅 일을 하는게 단편적인 일들이 많아 장기적으로 무얼 할 지 생각을 해야했다!
-
서버에서 타일맵을 저장 및 이용하여 검증할 수 있도록 수정가능성 확인
-
Docker 공부
-
부하 테스트 라이브러리 및 툴 사용방법 및 장단점 비교하기
서버의 타일맵
현재는 구현된 MVP는 클라이언트의 움직임을 에코서버처럼 다른 클라이언트에게 전달하는 역할이 많다!
이러한 구조를 타파하기 위해선 서버에서도 Unity에 있는 NavMeshAgent 와 같이 충돌 및 이동을 수행해주는 로직이 필요하다!
-
서버에 NavMesh 저장하기 : 검증할 기본 데이터를 서버는 가지고 있어야 한다!
-
이동 검증 : 기본 데이터 NavMesh를 이용한 충돌 판정으로 위치를 검증해준다!
-
클라이언트 연결 및 테스트
서버 NavMesh
Node.js의 recast-navigation 패키지가 있어 이를 응용하는 법을 배우고 사용해볼 예정이다!
recast-navigation_Git-Hub
-
일단 기본적인 맵 데이터를 어떤 형식으로 저장해서 서버에서 어떻게 읽을 지 생각을 해봐야한다..
-> 근데 계속해서 자료들을 찾아보니, 현재 개발중인 2d의 경우엔 맵을 그리드로 그릴 수 있기에 다른 방법을 사용하기로 했다! -
일단 TileMap을 JSON 형태로 유니티에서 읽거나 내보낼 수 있는 스크립트를 이용하려 했다..
-> 근데 이게 중첩배열을 저장하는 방식이 조금 까다로워서 시간이 걸렸네.. -
이렇게 만들어진 JSON 파일을 서버에서 관리하며 PathFinding 패키지를 이용해 검증을 하도록 수정해준다!
-> 이 부분은 AStartFind 알고리즘을 새로 만들어 보는 것으로 계획을 수정하였다!
계획 변경
기존 서버가 Map을 관리하는 R&DE 는 미뤄두고, 임시 분산서버 구축 서포트로 들어가게 되었다!
우선순위 상에서 분산서버와 서버의 Map 관리 중 전자가 더욱 가치가 높기 때문이었다.
분산 서버
서버 구조를 어떻게 형성해야할까에 담당 팀원분과 회의를 통해 간단한 도식화를 완성했다!
부하가 덜할 로비서버에서 유저와 방을 관리하고, 부하가 많을 게임 서버를 따로 분리하여 로드 밸런싱을 사용하는 방법!
일단 해야할 일들을 우선순위 순으로 적어보았다. 회의를 마치고 1번 까지는 작업을 마쳤다
-
기존 코드에서 로비 / 게임 분리하기
-
로비 서버에서 [게임 정보]를 저장하기
-
로비 서버에서 클라이언트에게 서버 주소 + 레디스 키 + 아이디 토큰을 부여하기
-
게임 서버에서 요청받은 값들을 이용해 검증 후 게임에 참여시키기
-
클라이언트에서 다른 서버로 접속 및 통신관리
-
로드 밸런서 이용 or 개발
한줄 평 + 개선점
- 요즘 부쩍 단편적인 일들만 붙잡고 있어서 기록하기에두, 집중하기에두 애매했는데.. 이번에 확실하게 위임된 역할 덕분에 다시금 달릴 수 있을 것 같다!