Files
playuniare.sori.studio/docs/todo.md

77 lines
2.8 KiB
Markdown

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