arena/todo.md

40 lines
2.9 KiB
Markdown

1. 투사체 피격 판정이 너무 좋지않음
- **원인 분석**:
- `src/game/combat.js``PROJECTILE_HIT_RADIUS`가 8픽셀로 설정되어 있어 투사체의 물리적 크기에 비해 판정 범위가 좁습니다.
- 투사체가 생성될 때 공격자와 대상 사이의 거리가 매우 가까우면 투사체가 대상을 지나쳐버리는 현상이 발생할 수 있습니다.
- 현재 `projectilePathHitsDefender` 함수에서 투사체의 궤적(Line)과 대상의 히트박스(Rectangle) 충돌을 검사하고 있지만, 대상의 실제 충돌 영역(`defender.body`)의 위치와 크기가 애니메이션 프레임에 따라 미세하게 변하면서 판정이 어긋날 수 있습니다.
2. 내가 이야기한 참가자 닉네임을 입력하고 팀당인원을 입력하면 참가자 닉네임 별 캐릭터가 스폰돼야해 (완료)
- **조치 사항**:
- `src/game/matchSetup.js`를 수정하여 입력된 각 닉네임을 독립된 팀으로 설정.
- 설정된 `teamSize`만큼 각 닉네임의 캐릭터가 소환되도록 로직 변경.
3. 승리판정이 이상함 (완료)
- **조치 사항**:
- `src/game/ArenaScene.js``finishMatch` 로직을 개선하여 생존 팀이 1개일 때 해당 닉네임 승리 표시.
- 생존자가 없을 경우 "무승부!"가 표시되도록 예외 처리 추가.
4. MongoDB 기반 유니크 방문자 체크 API 추가 (완료)
- **조치 사항**:
- Fastify 서버를 추가하고 `config.json` 기반 서버/MongoDB 설정을 도입.
- MongoDB 커넥션 풀을 재사용하는 `server/db.js` 구성.
- `POST /api/visitors/check`, `GET /api/visitors/stats`, `GET /api/health` API 추가.
- 프론트엔드 로드 시 방문자 체크 API를 호출하고 유니크 방문자 수를 표시.
5. 처치 보상 및 공격력 튜닝 상수화 (완료)
- **조치 사항**:
- 적 처치 시 현재 체력 기준 30% 회복, 누적 성장 배율에 따른 크기/공격속도/이동속도 증가를 적용.
- 기존 `combat.js`에 하드코딩되어 있던 `14~24` 피해량을 `ATTACK_DAMAGE_MIN`, `ATTACK_DAMAGE_MAX` 상수로 분리.
- 주요 전투/카메라/UI 상수마다 조정 대상이 무엇인지 주석 추가.
6. 캐릭터 히트박스 기준 이름표 및 선택 관전 기능 (완료)
- **조치 사항**:
- 캐릭터 이름표를 스프라이트 중심이 아니라 실제 히트박스 하단에 고정.
- 캐릭터 클릭 시 선택 상태를 설정하고 카메라를 해당 캐릭터 히트박스 중심에 고정.
- 선택 표시는 사각형 대신 원본 alpha 마스크 기반 노란 실루엣으로 생성.
- 실루엣은 캐릭터 바로 옆 1px을 비우고 그 바깥 1px에만 표시해 자글자글한 느낌을 줄임.
7. 패키지 락 파일 제외 (완료)
- **조치 사항**:
- `package-lock.json`을 git 추적에서 제외하고 `.gitignore`에 추가.