다음 스테이지로 넘어갈 때, 플레이어가 지금까지 거쳐온 스테이지를 저장한 배열값이 제대로 전달되지 않은 것을 확인했다.
이렇게 될 경우, 추후 획득한 점수를 검증할 때 제대로 된 검증을 할 수 없다.
하여, 왜 이런 문제가 발생하는지 디버깅을 통해 확인했고, 아래 이미지처럼 플레이어의 UUID가 제대로 전달되지 않아 발생하는 문제임을 확인할 수 있었다.
이런 문제가 생기는 이유는, 서버와 클라이언트가 제대로 연결되기도 전에 게임이 실행되어 발생하는건데, 위 이미지처럼 sendEvent 다음으로 connetion_Client가 실행된 것을 볼 수 있다.
해당 문제를 해결하기 위해서는 무조건 서버와 클라이언트가 연결된 후에 게임이 실행되어야 한다.
따라서 게임을 실행할 때, 연결이 제대로 되어 있는지 확인하는 코드를 index.js 파일에 추가했다.
let isConnected = false;
function reset() {
if (!isConnected) {
console.log('소켓 연결이 완료되지 않았습니다. 게임을 시작할 수 없습니다.');
return;
}
// 중략
}
// 중략
// 연결이 완료되었을 때만 게임이 시작되도록 이벤트 리스너 추가
socket.on('connect', () => {
console.log('소켓 연결 완료');
isConnected = true;
// 소켓 연결 후에만 reset 이벤트 리스너 추가
window.addEventListener('keyup', reset, { once: true });
});
'프로젝트' 카테고리의 다른 글
24/10/14 - [팀] 타워 디펜스 게임(2): 골드 검증과 CSV 파일(리팩토링도 진행) (0) | 2024.10.14 |
---|---|
24/10/10 - [팀] 타워 디펜스 게임(1): ERD 다이어그램, JSON 파일과 DB (1) | 2024.10.10 |
24/10/02 - [개인] 점핑 액션 게임(7): ES6 모듈 환경에서 Express.js로 최상위 폴더의 JSON 파일 불러오기 (0) | 2024.10.02 |
24/10/01 - [개인] 점핑 액션 게임(6): Socket.IO (0) | 2024.10.01 |
24/09/30 - [실습] 점핑 액션 게임(5): 클라이언트 연동, 트러블 슈팅 (0) | 2024.09.30 |