# 서비스 규칙 (Gameplay) > 코드: `GM` | 핵심 서비스 규칙 및 제한사항 --- ## GM-001: [정책명 - 예: 시간 제한] ### 정책 내용 - [핵심 정책 설명 1] - [핵심 정책 설명 2] ### 적용 화면 - `[화면1].html` - [용도] - `[화면2].html` - [용도] ### UI 영향 | 화면 | 위치 | 표시 방식 | mockup | |-----|------|----------|--------| | [화면1] | [위치] | [표시 방식] | [파일명].html | | [화면2] | [위치] | [표시 방식] | [파일명].html | ### 상태별 UI ``` [활성 상태] ┌─────────────────────────────────────┐ │ ✓ 이용 가능 │ │ [버튼 활성화] │ └─────────────────────────────────────┘ [비활성 상태] ┌─────────────────────────────────────┐ │ ⏰ 이용 불가 │ │ [제한 사유 표시] │ │ [버튼 비활성화] │ └─────────────────────────────────────┘ ``` --- ## GM-002: [정책명 - 예: 일일 제한] ### 정책 내용 - [일일 제한 설명 1] - [일일 제한 설명 2] - [리셋 시간] ### 적용 화면 - `[화면1].html` - [용도] ### UI 표시 ``` [일반 상태] 오늘 남은 횟수: 3/5회 [제한 도달] ⚠️ 오늘 이용 횟수를 모두 사용했습니다. 내일 00:00에 초기화됩니다. [프리미엄 유저] ✓ 무제한 이용 가능 (프리미엄) ``` --- ## GM-003: [정책명 - 예: 레벨 제한] ### 정책 내용 | 레벨 | 해금 기능 | 조건 | |-----|---------|------| | 1 | [기본 기능] | 가입 시 | | 5 | [기능1] | [조건] | | 10 | [기능2] | [조건] | | 20 | [기능3] | [조건] | ### 적용 화면 - `[화면1].html` - 레벨 표시 - `[화면2].html` - 해금 안내 ### UI 표시 ``` [잠금 상태] 🔒 Lv.10에서 해금됩니다 현재 Lv.7 (3레벨 더 필요) [해금 완료] ✓ 기능 사용 가능 ``` --- ## GM-004: [정책명 - 예: 대기열/쿨다운] ### 정책 내용 - [대기/쿨다운 설명] - [적용 시간] - [예외 조건] ### 적용 화면 - `[화면1].html` - 액션 버튼 ### UI 표시 ``` [쿨다운 중] ┌─────────────────────────────────────┐ │ ⏳ 잠시 기다려주세요 │ │ 02:30 남음 │ │ │ │ [비활성 버튼] │ └─────────────────────────────────────┘ [대기열] 현재 대기: 12명 예상 대기 시간: 약 3분 ``` --- ## GM-005: [정책명 - 예: 매칭 규칙] ### 정책 내용 - [매칭 조건 1] - [매칭 조건 2] - [매칭 실패 처리] ### 로직 ```javascript function matchUser(user) { const candidates = findCandidates({ level: user.level, preference: user.preference, // ... }); if (candidates.length === 0) { return showNoMatchPopup(); } return selectBestMatch(candidates); } ``` ### UI 표시 ``` [매칭 중] 🔍 찾는 중... [로딩 애니메이션] [매칭 성공] ✓ 매칭되었습니다! [상대방 정보] [매칭 실패] 😢 조건에 맞는 상대를 찾지 못했습니다. [다시 시도] [조건 변경] ``` --- ## 관련 mockup | 정책 | mockup 파일 | |-----|------------| | GM-001 | [화면].html | | GM-002 | [화면].html | | GM-003 | [화면].html | | GM-004, GM-005 | [화면].html |