3.6 KiB
3.6 KiB
개발 할 일
기반 작업
- Vue 3와 Vite 프로젝트 생성
- Tailwind CSS 설정
- Docker 정적 배포 기반 작성
- 개발·배포·AI 작업 문서 작성
- ESLint와 Prettier 규칙 확정
- Vue Router 설치와 대기실·게임 화면 분리
- Pinia 설치와 방 상태 구조 생성
- 테스트 도구 도입 범위 결정
GameBoard.vue의 영역 상태와 조작 로직을 composable·store로 분리
1단계: 덱 불러오기와 로컬 플레이
- 기존 덱 쿼리 파서 작성
- 외부 입력 기본 검증 작성
- 대기실 덱 URL 등록과 50장 기본 규칙 검증
- NAS 카드 이미지 읽기 전용 공유 경로 구성
- 카드 이미지 원본 환경변수를 프런트엔드 코드에 연결
- 덱 데이터 기반 카드 인스턴스 생성
- 표준 플레이 보드 배경과 카드 크기 기준 정의
- 좌우 플레이어 정보 패널 자리 정의
- 플레이 보드 드롭 영역 좌표 정의
- 덱 셔플과 1장 드로우
- 단일 카드 정규화 좌표 드래그 이동
- 여러 카드 드래그와 겹침 순서 처리
- 단일 카드 앞면·뒷면 전환
- 단일 카드 탭·언탭
- 카드 더블클릭 탭·언탭
- 카드 우클릭 조작 메뉴
F키 전체화면 전환- 덱·손패·필드·무덤 기본 이동
- 덱 위 N장 공개와 개별 정리
- 첫 손패 7장과 1회 멀리건
- 라이프 7장 세팅
- 선후공별 AP와 턴 시작 드로우
- 턴 시작 일괄 언탭과 카드별 제외 잠금
- 로컬 상태 초기화
2단계: 온라인 2인 세션
- Node.js 실시간 서버 구성
- Socket.IO 연결
- 방 만들기와 방 코드 참가
- 방 만들기·참가 대기실 UI
- 방 만들기·참가 서버 동기화
- 플레이어 좌석 할당
- 게임 카드 플레이어 소유권 기반 상태 제출
- 상대 카드 직접 조작 차단
- 상대 손패·덱 카드 식별 정보 비공개
- 공개 카드 이동·탭·뒤집기·영역 상태 동기화
- 서버 무작위 선후공과 현재 차례 동기화
- 카드 조작 이벤트별 세부 서버 검증
- 덱 인스턴스 순서와 셔플의 서버 권위 처리
- 서버 권위 드로우·여러 장 공개·라이프 배치
- 60초 유예 기반 같은 좌석 재접속
- 브라우저 저장소 기반 내 비공개 덱·손패 상태 재접속 복구
- 진행 중 게임의 대기실·첫 화면 접근 시 자동 복귀
- 방 나가기와 새 방 만들기 복구 동선
- 전체 게임 상태 스냅샷 복구
- 명시적인 방 종료 시 플레이어별 로컬 스냅샷 자동 삭제
- 연결 종료 시 방 참가자 정리
- NAS WebSocket 프록시 배포
- 비어 있지 않은 방의 유휴 만료 처리
3단계: 안정화
- 모바일·태블릿 Pointer Events 검증
- 선택 카드 맨 위 레이어 이동
- 여러 카드 겹침 순서 조작 UX 검증
- 잘못된 덱 입력 오류 화면
- 이미지 로딩 실패 폴백
- 접근성 키보드 조작 범위 검토
- 서버 재시작 시 방 종료 안내
- 공개 카드 상태 리비전으로 오래된 제출 무시
- 비공개 덱 조작 중 중복 클릭 잠금
- Redis 또는 상태 저장 필요성 검토
확인이 필요한 정책
- 표준 플레이매트 자산 확정
- 카드 뒷면 이미지 확정
- 한 방의 최대 플레이어와 관전자 정책
- 방 유지 시간
- 사용하지 않는 방 자동 삭제 시간
- 덱 빌더와 시뮬레이터 사이의 최종 전달 형식