메인 화면에서의 기능(닉네임 입력하고 참가 화면)

  1. 닉네임 입력
    1. 랜덤 닉네임 플레이스홀더를 제공
    2. 따로 입력 안하고 방 생성/참가 버튼 클릭 시 플레이스홀더 닉네임이 설정됨
    3. 입력 이후 다 지우는 경우는 기본 제공했던 플레이스홀더 제공
    4. (옵션, 우선순위 최하) 부적절한 닉네임 필터링
  2. 랜덤 유저 아바타 교체
    1. 유저 아바타 이미지 셔플 → 순서대로 제공
  3. 방 생성
    1. (서버) 방번호(UUID) 생성 후 사용자에게 전달
    2. (전환) 로비 화면
  4. 방 참가
    1. 방 번호 입력 후 참가
    2. 방 번호 알파벳은 Uppercase로 입력
    3. (전환) 로비 화면

로비 화면

  1. 접속 플레이어 띄우기
    1. 방장 표시
    2. 닉네임, 아바타 표시
    3. 본인, 방장, 나머지 순으로 표시
    4. (서버) 유저 배열을 가지고 있음
    5. (서버) 유저 입장/퇴장 실시간으로 클라이언트에게 알려줌
  2. 방 번호 표시
    1. 서버측에서 UUID(6자리, 알파벳 대문자+숫자 )로 방 번호 만들어내는 프로세스
    2. 6자리 전부 표시
  3. 모드 선택
    1. 방장만 변경 가능
    2. 방장이 모드를 완전히 변경했을 때 서버로 전송
    3. (서버) 선택된 모드를 가지고 있고, 변경될 때마다 참가자에게 전송
    4. 무한 반복되는 carousel(가로 스크롤 뷰)
    5. 스크롤 시 크기 커지는 애니메이션 참고자료
  4. 초대하기
    1. activityView를 이용, 링크 복사 가능하도록
    2. 초대받은 링크를 통해 방 참여 가능
  5. 시작하기
    1. 현재 focus된 모드를 선택하고 시작
    2. 정원은 최대 6명, 4명 이상부터 재밌다고 권고
    3. 1명이면 시작 불가
    4. 2명 이상일 때부터 시작 가능, 4명 미만이면 노잼권고 띄워줌
    5. (서버) 모든 사용자를 대상으로 게임 시작
    6. (전환) 게임 화면

기본 모드(허밍)

  1. 노래 선택 기능
    1. 상단에 선택된 음악 + 재생 버튼 표시
    2. 선택된 음악이 없으면 음악을 골라주세요! 라는 문구 표시
    3. MusicKit에서 음악 리스트 받아오기
    4. SwiftUI로 뷰 구성(MusicKit과 연동)
    5. 노래 선택 시 상단에 표시된 음악 교체
    6. 선택된 노래의 preview 제공(재생버튼을 제공)
    7. (로컬 저장소) 노래 플레이 시 캐싱된 노래가 있는지 확인 후 없다면 다운로드+캐싱
    8. (로컬 저장소) 프리뷰 노래 각 파일별로 캐싱
    9. 선택하면 그자리에서 재생 + 선택된 음악 자리에서 퍼즈 버튼으로 변경
  2. 노래 검색 기능
    1. 검색창 표시 (샘플 앱 참고)
    2. 플레이리스트를 표시
    3. 검색창 터치 시 검색시작
    4. 선택된 노래 표시
    5. MusicKit 음악 검색 API 활용
  3. 타이머(최상단 프로그레스 바로 표시)
    1. 타이머 종료 시 자동으로 선택 완료 버튼 액션과 똑같은 액션
    2. 타이머 종료 시 선택한 음악이 없다면 랜덤 선택
    3. 랜덤선택은 클라이언트에서 처리, 최상단 플리의 최상단 음악
  4. 노래 선택 완료
    1. 완료된 사람 표시(2/4)
      1. (서버) 선택 상태 변경되면 모든 플레이어에게 완료 수 업데이트
    2. 선택된 음악 정보 서버로 전송
    3. 한번 선택 완료 누르면 물리기 불가
    4. (서버) 플레이어-음악의 릴레이션 저장
    5. (전환) 녹음 화면
  5. 허밍 녹음
    1. 녹음 기능
      1. 녹음 도중에는 노래 재생 불가

      2. 노래가 재생 중일 때 녹음버튼이 눌리면 노래 중단

      3. 6초까지만 녹음 가능

      4. (전환) 녹음 완료 시 결과물 재생 버튼으로 변경

        +재녹음 버튼도 추가

      5. 녹음 시작 시 n초 딜레이가 되는 현상을 해결할 방법

    2. 녹음 청취
      1. 녹음한 것을 들어볼 수 있음
    3. 재녹음
      1. 재녹음 버튼 클릭 시 재녹음 시작
      2. 프로세스는 기존 녹음과 동일
  6. 허밍 따라하기 화면
    1. 기본 프로세스는 5. 허밍 녹음과 동일.
    2. 노래 대신 다른 플레이어의 허밍을 재생.
    3. 다른 플레이어의 허밍은 2회만 재생 가능.
    4. 허밍 재생 시 stop 버튼으로 변경