2024. 8. 27. 23:01ㆍ[Node.js_6기 본캠프 TIL]
▶ CH 2. Rogue like JAVASCRIPT! 개인 과제
드디어 구현하고자 하는 기능들은 모두 완성했으나, 게임 난이도가 너무 높아 밸런싱이 시급하다... 그동안 전투 밸런싱 관련해서 욕했던 게임 운영자들에게 조금 미안한 마음이 들 뻔했다.
1) 무한루프 탈출!
멀쩡히 잘 돌아가는 줄 알았던 중간 로비 관련 로직이 무한루프를 만들어내고 있었다. player의 hp가 0이 되어 게임을 재시작하면, 이상하게 몬스터를 잡아도 다음 스테이지가 아닌 중간 로비로 무한 회귀를 하기 시작했다. monster의 hp가 0이 되면 else if에 걸려서 player 스탯 정비 화면이 나와야 하는데... 알 수 없는 일이었다. 코드를 한참 뜯어보다가, 중간 로비 화면 기능이 등장하는 조건인 if문의 위치를 stage를 건드리는 while문 안으로 이동하고, break를 추가해주자 정상적으로 기능하기 시작했다.
이것저것 테스트 하느라 누더기가 된 코드를 잠시 정리하는 과정에 조금 얻어걸린 감이 있다. 역시 코드는 깔끔하게 써야 복이 온다.
2) 몬스터에게 강화석을 먹여봅시다
stage가 진행될 때마다 monster의 status가 초기화되는 기본 구조를 가지고 있었기 때문에, 처음에는 stage 설정이 있는 while문 안에 이것저것 함수를 덧대어 테스트를 해봤다. 처음으로 강화가 되기는 했으나... 점점 더 강해지는 구조가 아니라 초기화된 monster가 또 강화되는 형태였다. 코드 전반을 이해하지 못하고 용감하게 어떻게든 꾸깃꾸깃 기능을 구현하다보니 이렇게 예상치 못한 상황이 자주 벌어졌다.
한참을 고민하다가 다시 class Monster가 선언되는 부분으로 돌아가 뜯어보기 시작했다. 한참을 누더기로 만들며 울고 있다보니, 지인이 attak 함수에서 했던 것처럼 constructor를 건드려보라는 조언을 해주었다. 분명 예전에 건드렸을 땐 오류가 나서 아무것도 할 수 없었는데, constructor(stage)로 수정한 뒤 status 값에 stage를 변수로 주니 돌아가기 시작했다. 수많은 개발자 밈이 머리를 스쳐지나갔다.
3) [ Error ] 마음이 45% 꺾였습니다
사실 player의 hp가 0이 되면 나오는 중간 로비 화면의 무한 회귀 현상을 잡아내지 못해서, 그냥 강제 종료되는 로직으로 잠시 변경했었다. 문제는 이 과정에 await delay를 걸었던 로그들이 미친듯이 반복적으로 뜨는 현상이 발생했다.
VScode가 내 마음도 읽을 줄 아는건가.... 대신 연출을 해주는 건가... 라는 생각도 잠시, 코드를 구경하던 지인이 while문 안에 if문이 들어가서 해당 창을 뽑아내는 건데 break가 없어서 미친듯이 로그가 반복되는 것이라는 것을 알려주었다. 정말... 이 사람 없었으면.... 24시간 코드 수정 챌린지를 하고 있었을지도 모른다.
원래 작업하던 중간 로비 화면의 무한회귀 오류를 잡아내서 강제 종료 로직은 롤백하게 되었지만, 조금 큰 깨달음을 얻은 시간이었다.
4) Mission Complete
game clear 로직은 이미 첫날에 작업했던 코드가 있어서, 연결만 해주면 되는 간단한 작업이었다. 처음엔 while(stage <= 10) 뒤에 별도로 if(stage >= 11) 이라는 형식으로 넣어주었는데, 불필요하게 길어지는 것 같아서 기존 로직들을 모두 처리하고 나면 else에 해당하는 경우는 game clear 뿐이라 위와 같이 간결하게 정리해주었다.
5) 마무리하며...
정말... 너무 어려운 일주일을 보낸 것 같다. '나는 코드 짜는 감자야'라는 생각을 얼마나 했는지 모른다. 오늘 내 코드를 보던 지인이 노력 많이 한 게 보인다는 말에 조금 울 뻔 했다. 개념이고 코드고 온전히 이해하지 못한 상태에서 어떻게든 꾸깃꾸깃 게임을 만든 흔적이 티가 많이 났구나. 그래도 나 진짜 열심히 어떻게든 했구나...!!
아직 내가 만든 게임을 내가 클리어하지 못하는 슬픈 이유 때문에 밸런싱 작업이 남아서 이게 마지막 트러블 슈팅 글이 될 거라는 확신이 없다. 그렇지만... 어떻게든 구현하려던 기능은 다 구현했으니, 마무리라고 해도 되지 않을까? 부디 내일의 내가 또 새로운 기능을 욕심 부리지 않기를 바라며....
'[Node.js_6기 본캠프 TIL]' 카테고리의 다른 글
[Node.js_6기] 본캠프 TIL_0829 (0) | 2024.08.29 |
---|---|
[Node.js_6기 본캠프] CH 2. 개인과제_KPT (1) | 2024.08.28 |
[Node.js_6기 본캠프] CH 2. 개인과제 트러블 슈팅_0826 (0) | 2024.08.26 |
[Node.js_6기 본캠프] CH 2. 개인과제 트러블 슈팅_0823 (5) | 2024.08.23 |
[Node.js_6기 본캠프] CH 2. 개인과제 트러블 슈팅_0822 (0) | 2024.08.22 |