HTML5 Canvas를 사용하여 보석 매칭 퍼즐 게임을 제작하라. 다음의 상세 요구사항을 모두 구현할 것:
1. 게임 보드 구성
- 8x8 크기의 기본 게임 보드 구현
- 6가지 다른 모양과 색상의 보석 생성 (루비-빨강/사파이어-파랑/에메랄드-초록/다이아몬드-흰색/토파즈-노랑/자수정-보라)
- 각 보석은 고유한 디자인과 반짝이는 애니메이션 효과 적용
- 보석이 없는 빈 공간은 자동으로 위에서 새로운 보석이 떨어져 채워짐
2. 게임 메커닉스
- 마우스 드래그로 인접한 보석끼리 위치 교환 가능
- 수평 또는 수직으로 3개 이상 같은 보석이 연결되면 터지면서 점수 획득
- 보석이 터진 후 상단의 보석들이 중력에 따라 자연스럽게 떨어지는 애니메이션
- 연쇄 반응 발생 시 추가 점수 보너스 지급
- 한 번의 이동으로 여러 개의 매치가 동시에 발생할 경우 콤보 점수 적용
3. 특수 효과
- 4개 매칭: 특수 보석 생성 (주변 보석 모두 제거)
- 5개 매칭: 무지개 보석 생성 (같은 색상 모두 제거)
- T자 또는 L자 모양 매칭: 라인 클리어 보석 생성
- 특수 보석들의 화려한 폭발 이펙트 구현
4. 시각적 요소
- 보석별 반짝임 효과와 회전 애니메이션
- 매칭 성공 시 반짝이는 파티클 효과
- 콤보 발생 시 화면에 콤보 카운트 표시
- 부드러운 보석 이동 및 교체 애니메이션
- 보석 터지는 효과의 부드러운 페이드아웃
5. 사운드 시스템
- 보석 이동/교체 시 효과음
- 매칭 성공 시 효과음 (매칭된 보석 수에 따라 다른 사운드)
- 특수 보석 생성/사용 시 특별한 효과음
- 배경 음악 (옵션으로 켜고 끄기 가능)
6. 게임 시스템
- 목표 점수 달성 방식의 레벨 시스템
- 제한 시간 또는 제한 이동 횟수 선택 가능
- 현재 점수, 목표 점수, 남은 시간/이동 횟수 표시
- 하이스코어 저장 및 랭킹 시스템
7. UI/UX 요소
- 시작 화면과 게임 설명
- 일시정지 기능과 재시작 버튼
- 현재 진행 상황 표시 (점수/레벨/목표)
- 게임 오버 및 클리어 화면
- 설정 메뉴 (사운드 조절, 난이도 설정)
8. 추가 기능
- 힌트 시스템 (일정 시간 동안 움직임이 없을 경우 가능한 매치 표시)
- 셔플 기능 (가능한 매치가 없을 경우 자동 셔플)
- 연속 매칭 시 격려 메시지 표시
- 게임 진행 상황 자동 저장
기술 요구사항:
- 모든 애니메이션은 requestAnimationFrame 사용하여 부드럽게 구현
- 터치스크린 지원을 위한 모바일 대응
- 브라우저 리사이즈에 대응하는 반응형 레이아웃
- 로컬 스토리지를 활용한 게임 데이터 저장
성능 최적화:
- 스프라이트 시트를 활용한 이미지 최적화
- 캔버스 더블 버퍼링으로 깜빡임 방지
- 오디오 리소스 프리로딩
- 불필요한 리렌더링 최소화"