미새문지

크래프톤 정글 week16, day122 - 에러 수정 및 인게임 소켓 추가, 목요일 발표를 위해 내일 밤샐 예정 본문

크래프톤 정글/TIL

크래프톤 정글 week16, day122 - 에러 수정 및 인게임 소켓 추가, 목요일 발표를 위해 내일 밤샐 예정

문미새 2024. 5. 9. 00:17
728x90

나만무를 하면서 TIL 쓸 시간이 없어져 요새는 며칠단위로 몰아서 작성하는 것 같아 상세히 작성하지 못하는게 많이 아쉽다.

 

오늘은 작업한 부분에서 에러 나는 부분들을 거의 다 수정하고 상림이형이 작업하고 있는 인게임 부분에서 hit 판정이 날 때마다 실시간으로 다른 유저들에게 동기화를 하는 코드를 작성했다.

 

어제 작업을 재분배 받고 인게임 소켓 부분부터 해결하고자 했었는데, 어떻게 해야 할지 감이 안잡혀서 재희님과 이야기를 좀 했었다.

기존의 소켓 동기화처럼 socket.on${nickname}으로 누가 히트했는지만 받아오면 되지 않을까 하고 작성할려 했는데, 재희님이 그렇게 하면 안된다고 소켓을 받되 누가 때렸는지 알아야 하기 때문에 hit를 한 특정 닉네임의 hit에 동기화를 시켜줘야 했다.

이 부분에서 많이 어려웠던게 상림이형이 짠 인게임 코드가 화면 부분, 점수 부분, 판정 함수, 음악 감지 및 효과음 함수들이 다 나뉘어져있어서 노래 끝날때까지 감지한 hit수를 서버에 보내줘야 했는데 hit할 때마다 api로 보내는건 성능면에서 너무 떨어졌기 때문에 리덕스를 사용해 hit값을 저장했다.

근데 리덕스를 사용했을 때의 문제는 인게임 코드에서 렌더링이 일어나면 안됐기 때문에 인자를 옮길수가 없어서 이것저것 방법을 탐구하다가 재희님이 퇴근 전에 인자를 옮길 방법이 없으면 그냥 세션에 담아서 저장해라 해서 세션에 담는게 뭔가 야매같긴 하지만 될 것 같아 오늘 작업하기로 했었던 것이다.

 

hit되는 score.js에서 hit할 때마다 1씩 추가한 변수를 세션에 담으며 서버에 전송해서 화면에 뿌려주는 형식으로 작성했다.

노래가 다 끝나면 끝남을 감지하는 gamecontroller.js부분에서 세션에 모아논 hit값과 nickname, roomCode를 보내주며 게임을 종료하고 게임 결과창에 그 hit 수를 보여주게 된다.

 

인게임 소켓 기능을 만들고 병합하거나 작업하며 생긴 에러들을 싹 수정하고 시연에 필요한 화면의 UI부분을 다듬으면서 밤을 샐 계획이다.

 

학습 시간 : 10 ~ 29시

24-05-08 - 수요일

728x90