arena/todo.md

2.9 KiB

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