팀 프로젝트가 시작 !
사실 과제 발제는 10.08일 이었지만, TIL을 쓸 시간이 나지 않아서 이제서야
해당 과제의 첫 TIL을 작성하게 되었다.
어디까지나 백엔드 트랙이기 때문에, 클라이언트에 해당하는 코드는 발제와 동시에 지급받았다.
지급받은 클라이언트는...
진짜.. 최고의 클라이언트.. 호우
내가 담당한 부분은, 타워 구매에 관한 부분이고,
이미 발제일로부터 시간이 꽤 흐른 뒤이기 때문에 많은 부분이 진행되었다.
임무 중, 가장 핵심인 game.js 의 타워 구매 함수이다.
이번 과제 중 가장 어려웠던 부분이 포함되어있는데,
towerData ... 어디서 얻어온 것인가 !
그것은, 클라이언트 내 socket.js 에 있는 response 의 .on 부분에서
handlerId 2 를 포함하는 패킷을 받는다면, 해당 response 가 가진 데이터를 각각 파싱하는 부분이다.
( 위 코드는 리팩토링 예정에 있다. )
그럼, handlerId2 를 어디서 보내는가!
서버측에서, 게임이 실행과 같이 실행되는 gameStart 함수에서,
데이터 베이스 (RDS) 에 있는 데이터를 전부 find 해와서 handler id 2로 보내주게 된다.
해당 데이터들은 전부 메타데이터 형태이기 때문에, 게임 진행에 필요하므로 ,
서버에서 게임 시작 시 , 클라이언트에게 보내주게 되는 것이다 ! ★ ★ ★
결과적으로, 서버에서 데이터베이스를 조회하고 보낸 메타 데이터를 가지고,
클라이언트에서 타워 정보를 셋팅한다고 볼 수 있다.
타워 구매 후, sendEvent 를 통해 handlerId :30 으로 요청을 날리는데,
현재는 towerType (구매 한 타워의 종류) 와 position (구매한 타워의 좌표) 를 payload 로 보내고
서버에서는 해당 데이터를 받아, 쌓아둘 데이터는 쌓아두고 (배열에 push) ,
검증이 필요한 부분은 검증을 하게 구현 해두었다.
현재는 setGold (서버가 기록하는 해당 유저의 gold 변화) 을 전부 합산한
getTotalGold 가 0 미만 이 될 경우, 해당 유저를 치터로 간주하는 검증을 하고 있는 상태이다.
해당 Gold 검증 로직은 회의를 통해 변경 될 예정에 있다.
현재는 작업이 꽤 진행된 상태로, 이미지를 추가하고, 상점 UI 를 만들어 놓은 상태이다.
그러나, 아직 도전기능에는 손을 못대고 있기 때문에, 힘을 더 내야한다.
'내일배움캠프' 카테고리의 다른 글
24.10.14 TIL 타워 디펜스 프로젝트 (0) | 2024.10.14 |
---|---|
24.10.11 TIL 타워 디펜스 프로젝트 (0) | 2024.10.11 |
24.10.07 TIL 데이터 베이스 정규화 (0) | 2024.10.07 |
24.10.04TIL 리얼타임 과제 (0) | 2024.10.04 |
24.10.02 TIL 리얼타임 과제 (0) | 2024.10.02 |