-
Notifications
You must be signed in to change notification settings - Fork 1
[javascript-zombie-survival 미션] 박찬빈 미션 제출합니다 #1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: INSANE-P
Are you sure you want to change the base?
Conversation
gxuoo
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
안녕하세요, 찬빈님! 바쁘신 나날을 보내고 계시는 와중에 새로운 미션 구현해주시느라 정말 고생 많으셨습니다!! 직접 실행시켜서 게임 진행도 해봤는데 디자인 및 게임 로직도 흥미로웠습니다!
먼저 남겨주신 4가지 부분에 대한 답변과 제가 게임을 진행해보고 몇 가지 의문점이 들었던 요소들에 대해서 제가 이해하고 있는 것이 맞는지 확인 부탁드리겠습니다!
- 미션 문서가 처음 읽었을 때 직관적으로 이해되는지
🎯 기능 요구사항 부분에서 아래의 2가지에서 목적어가 없다보니 순간적으롤 음? 뭐를? 했던 것 같아 아래처럼 수정안을 제시드립니다!
- 선택지를 고른 후 2초(2000ms) 가 지난 후 결과가 출력된다.
- 매일 선택지를 고른 후 식량이 1 소비되며, 감염도가 3 증가한다.
🃏 카드 덱 규칙 부분에서 카드에 이모지를 추가하면 조금 귀여워 보이지 않을까 싶어서 한 번 넣어봤습니다! ㅎㅎ
| 카드 | 장수 | 선택지 A | 선택지 B |
|---|---|---|---|
| 🧟 좀비 무리 | 5 | 맞서 싸운다 (체력 -15) | 숨을 죽인다 (체력 -5, 감염도 +3) |
| 💊 약국 잔해 | 4 | 안으로 들어간다 (감염도 -10, 체력 -5) | 밖의 식량만 줍는다 (식량 +2) |
| 🏠 빈 아파트 | 3 | 문을 잠그고 쉰다 (체력 +15) | 방마다 뒤진다 (식량 +2, 체력 -5) |
| 🔫 무장한 생존자 | 3 | 식량을 건넨다 (체력 +5, 식량 -1) | 치료를 부탁한다 (감염도 -15, 식량 -1) |
| 😡 감염 발작 | 3 | 이를 악물고 견딘다 (감염도 +10) | 감염 부위를 도려낸다 (체력 -20, 감염도 -10) |
| 📻 무전 신호 | 2 | 위치를 송신한다 (구조 포인트 +1, 체력 -5) | 덫일 수 있다... 무시 (식량 +1) |
프로그래밍 요구사항은 제 기억에 컨벤션 관련해서 수정하자는 얘기가 나왔던 것 같은데 해당 내용을 못 찾겠네요... 나머지는 잘 작성된 것 같습니다!
- 테스트 코드가 주요 케이스를 잘 커버하고 있는지
사용자 선택에 의한 흐름과 주요 스탯 및 요소 렌더링을 잘 커버하고 있었습니다. 식량과 관련된 이슈가 변경되지 않는다면 테스트 코드 수정은 딱히 필요 없을 것 같습니다!
- UI가 직관적이고 시각적으로 어색하지 않은지
주요 스탯과 카드, 선택지의 조합 및 색상은 좋습니다! 다만, 포기 버튼 아래에 있는 각 날짜에 대한 진행도를 나타내는 부분이 약간 밋밋한 느낌이 있어서 시야에 잘 들어오지 않는 것 같습니다.
제가 플레이 하면서 스탯과 카드, 선택지 3가지를 제일 유심히 보면서 플레이 했습니다. 엄청 중요한 내용은 아닌데 약간 소외되는 느낌이 드네요..?!
- 전체적인 미션 컨셉과 난이도가 적절한지
미션 컨셉과 난이도는 매우 매우 좋고 적절하다고 생각들었습니다! 처음엔 실패 엔딩을 많이 마주 했는데 여러 번 하다보니까 성공 엔딩을 자주 확인할 수 있었습니다. 잘 구현해주신 것 같아요!!
아래부터는 제가 제가 게임을 진행해보고 몇 가지 의문점이 들었던 요소들에 대해서 말씀드리려고 합니다. 약간 길어질 수 있는데 천천히 확인해주시면 감사하겠습니다!
카드 덱 시스템
카드 덱에는 미션 소개 문서에 명시되어 있는 것처럼 6종류, 총 20장의 카드가 있는 것으로 알고 있습니다. 다만, 게임 엔딩 조건을 고려한다면 16일 초과로 Day 수가 올라갈 수 있는 것인지 의문이 듭니다. 제가 플레이 해볼 때도 성공 엔딩은 생존일수는 16일이었고, 17일 이상으로 나왔던 적이 없습니다. 따라서, 해당 점을 감안하면 20장의 카드 덱을 모두 소진하는 상황이 일어나지 않을 것으로 예상됩니다.
또한, 성공 엔딩 중에 Day > 15를 제외한 치료 횟수 5회 누적, 구조 포인트 3이상 + Day > 10 2가지 Case는 현재 카드 덱 구성을 본다면 치료 선택이 가능한 무장한 생존자 3장, 구조 포인트를 올릴 수 있는 무전 신호 2장으로는 현재 카드 덱이 리셔플 되지 않는다면 위 2가지 Case의 성공 엔딩은 나타날 수 없는 구조라고 생각이 듭니다.
결과적으로, 카드 덱 시스템에 대해 말씀드린 요소들에 대해서 변동사항이 필요하다고 생각이 됩니다. 해당 부분에는 docs/README.md 파일에서 👀 이모지로 Comment 남기겠습니다.
식량 Count에 따른 체력 감소
아래의 영상은 제가 직접 게임 플레이 해본 영상인데, 다음과 같이 식량이 1로 남아있는 경우, 다음 Day로 넘어가면서 0으로 되고 체력은 감소되면 안 되는데 55에서 45로 감소되는 모습을 볼 수 있었습니다. 제가 생각되는 게임의 흐름으로는, 식량이 0이 아닌 경우에 식량이 -1인 선택지를 고르지 않았을 때는 체력이 감소되면 안될 것 같습니다. 🍔 이모지로 표시된 applyDailyEffects 메서드에서 수정하시면 해결되지 않을까 싶네요..!! 참고해주시면 감사하겠습니다.
default.mov
여기까지 찬빈님이 구현해주신 좀비 아포칼립스 서바이벌 미션에 대한 저의 부족한 리뷰였습니다 ㅎㅎ 작성해보니까 내용이 좀 많은데 천천히 읽고 같이 이야기 나누면 더 완성도 있는 미션이 만들어질 것 같습니다!! 고생 많으셨습니다~~!!
| - [ ] 20장 카드 덱 생성 (6종류, 분배표에 따라) | ||
| - [ ] Fisher-Yates 셔플 알고리즘 | ||
| - [ ] 카드 뽑기 (덱에서 1장 pop) | ||
| - [ ] 덱 소진 시 자동 리셔플 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👀
| - [ ] 좀비 무리 (5장): 맞서 싸운다 / 숨을 죽인다 | ||
| - [ ] 약국 잔해 (4장): 안으로 들어간다 / 밖의 식량만 줍는다 | ||
| - [ ] 빈 아파트 (3장): 문을 잠그고 쉰다 / 방마다 뒤진다 | ||
| - [ ] 무장한 생존자 (3장): 식량을 건넨다 / 치료를 부탁한다 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👀
| - [ ] 빈 아파트 (3장): 문을 잠그고 쉰다 / 방마다 뒤진다 | ||
| - [ ] 무장한 생존자 (3장): 식량을 건넨다 / 치료를 부탁한다 | ||
| - [ ] 감염 발작 (3장): 이를 악물고 견딘다 / 감염 부위를 도려낸다 | ||
| - [ ] 무전 신호 (2장): 위치를 송신한다 / 무시한다 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👀
| - [ ] 치료 성공: 치료 선택 5회 누적 | ||
| - [ ] 구조 성공: 구조 포인트 3 이상 + Day > 10 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👀
| this.food = Math.max(0, this.food - DAILY_FOOD_CONSUME); | ||
| this.infection += DAILY_INFECTION_INCREASE; | ||
| if (this.food === 0) this.hp -= STARVATION_DAMAGE; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🍔
| describe('무장한 생존자', () => { | ||
| it('식량을 건넨다: 체력 +5, 식량 -1', () => { | ||
| cy.drawUntilCard('무장한 생존자'); | ||
| cy.chooseA(); | ||
| cy.waitForChoice(); | ||
| cy.getStat('hp').should('have.text', '105'); | ||
| cy.getStat('food').should('have.text', '1'); | ||
| cy.getStat('infection').should('have.text', '13'); | ||
| }); | ||
|
|
||
| it('치료를 부탁한다: 감염 -15, 식량 -1', () => { | ||
| cy.drawUntilCard('무장한 생존자'); | ||
| cy.chooseB(); | ||
| cy.waitForChoice(); | ||
| cy.getStat('hp').should('have.text', '100'); | ||
| cy.getStat('food').should('have.text', '1'); | ||
| cy.getStat('infection').should('have.text', '-2'); | ||
| }); | ||
| }); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
GameModel.js 파일에서 applyDailyEffects 메서드가 수정된다면 위 코드는 수정될 필요가 있을 것 같습니다.
|
|
||
| it('게임 시작 시 로딩 표시가 숨겨져 있다', () => { | ||
| cy.get('#loading').should('not.be.visible'); | ||
| }); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
포기 버튼 렌더링에 대한 테스트 코드도 추가되면 괜찮을 것 같습니다!
| cy.drawAndChooseA(); | ||
| cy.drawAndChooseA(); | ||
| cy.drawAndChooseA(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
3번 선택이면 식량이 0으로 되지 않나요..? 근데 4번 선택해도 테스트는 잘 통과 됐습니다! ㅎㅎ
안녕하세요 @gxuoo 리뷰어님!
좀비 서바이벌 미션 제작 PR입니다.
docs/README.md에 기능 목록을 정리해두었고, 구조는 MVC 패턴을 기반으로 구성했습니다.
이번 PR에서는 코드 자체보다는 테스트와 미션 문서, 그리고 미션의 방향성을 중심으로 리뷰해주시면 감사하겠습니다.
🎯 기획 의도
단순 기능 구현 과제보다는 선택에 따른 상태 변화와 흐름 제어를 자연스럽게 연습할 수 있는 미션을 만드는 것을 목표로 했습니다.
초기에는 반복적인 입력 패턴을 사용한 구조로 구현을 하였지만 지루다고 판단하여 대신 카드 선택 방식을 도입해 게임적인 요소를 더하고, 미션을 진행하는 과정 자체가 지루하지 않도록 하는 데에 초점을 맞췄습니다.
✔️ 중점적으로 봐주셨으면 하는 부분
미션 문서가 처음 읽었을 때 직관적으로 이해되는지
→ 흐름이 어색하거나 이해하기 어려운 부분이 있는지 궁금합니다.
테스트 코드가 주요 케이스를 잘 커버하고 있는지
→ 빠진 예외 케이스가 있다면 피드백 부탁드립니다.
UI가 직관적이고 시각적으로 어색하지 않은지
→ 초기 구현처럼 컨셉을 잡은 UI도 괜찮았던 것 같아서 해당 부분을 수정할지 고민 중입니다.
전체적인 미션 컨셉과 난이도가 적절한지
전반적으로 느끼신 점이나 개선하면 좋을 부분이 있다면 편하게 말씀해주시면 반영하도록 하겠습니다 🛠️