# 플랫폼/오프라인/향후 고려사항 > 메인 문서: [game-system-overhaul-index.md](game-system-overhaul-index.md) --- ## 1. 오프라인/백그라운드 진행 ### 1.1 오프라인 진행 개념 ``` 앱 종료 시점 기록 → 재접속 시 경과 시간 계산 → 오프라인 보상 계산 → 결과 표시 ``` ### 1.2 오프라인 보상 계산 ```dart class OfflineProgressCalculator { /// 오프라인 보상 계산 OfflineReward calculate({ required DateTime lastPlayedAt, required int playerLevel, required CombatStats stats, }) { final duration = DateTime.now().difference(lastPlayedAt); final cappedMinutes = min(duration.inMinutes, maxOfflineMinutes); // 분당 예상 전투 수 (레벨 기반) final battlesPerMinute = 2.0; final totalBattles = (cappedMinutes * battlesPerMinute).round(); // 오프라인 효율 (온라인의 50%) final efficiency = 0.5; return OfflineReward( exp: (totalBattles * expPerBattle * efficiency).round(), gold: (totalBattles * goldPerBattle * efficiency).round(), items: generateOfflineItems(totalBattles, efficiency), duration: Duration(minutes: cappedMinutes), ); } } ``` ### 1.3 오프라인 제한 | 항목 | 제한 | |------|------| | 최대 오프라인 시간 | 8시간 (480분) | | 오프라인 효율 | 온라인의 50% | | 사망 가능성 | 없음 (오프라인 중 사망 불가) | | 레벨업 | 가능 (최대 3레벨) | | 퀘스트 진행 | 불가 (전투만 계산) | | 스킬 사용 | 자동 (효율 계산에 포함) | ### 1.4 재접속 UI ``` ┌─────────────────────────────────────┐ │ │ │ 🌙 오프라인 보상 │ │ │ │ 부재 시간: 4시간 32분 │ │ │ │ ───────────────────────── │ │ 💰 획득 골드: 2,450 │ │ ⭐ 획득 경험치: 12,800 │ │ 📦 획득 아이템: 3개 │ │ ───────────────────────── │ │ │ │ 레벨업! Lv.23 → Lv.24 │ │ │ │ [ 보상 받기 ] │ │ │ └─────────────────────────────────────┘ ``` ### 1.5 백그라운드 진행 (모바일) | 모드 | 동작 | |------|------| | 포그라운드 | 정상 진행 | | 백그라운드 (5분 이내) | 실시간 진행 유지 | | 백그라운드 (5분 초과) | 앱 일시 정지, 재진입 시 오프라인 계산 | | 완전 종료 | 오프라인 계산 | ### 1.6 관련 파일 | 파일 | 역할 | |------|------| | `core/service/offline_service.dart` | **신규** - 오프라인 보상 계산 | | `core/storage/last_played_storage.dart` | **신규** - 마지막 플레이 시간 저장 | | `features/game/widgets/offline_reward_dialog.dart` | **신규** - 보상 UI | --- ## 2. 플랫폼별 고려사항 ### 2.1 플랫폼 지원 현황 | 플랫폼 | 지원 | 우선순위 | 특이사항 | |--------|------|----------|----------| | iOS | ✓ | 상 | App Store 심사 | | Android | ✓ | 상 | Google Play 심사 | | Web | ✓ | 중 | 브라우저 호환성 | | macOS | ✓ | 하 | 데스크톱 UI | | Windows | ✓ | 하 | 데스크톱 UI | | Linux | △ | 최하 | 테스트 제한적 | ### 2.2 플랫폼별 기능 차이 | 기능 | iOS | Android | Web | Desktop | |------|-----|---------|-----|---------| | 진동 | ✓ | ✓ | ✗ | ✗ | | 푸시 알림 | ✓ | ✓ | △ | △ | | 백그라운드 | △ | ✓ | ✗ | ✓ | | 클라우드 저장 | iCloud | Google Play | ✗ | ✗ | | IAP | App Store | Google Play | ✗ | ✗ | | 키보드 단축키 | ✗ | ✗ | ✓ | ✓ | ### 2.3 화면 크기 대응 | 카테고리 | 화면 크기 | 레이아웃 | |----------|----------|----------| | 소형 모바일 | < 360dp | 단일 컬럼, 축소 UI | | 일반 모바일 | 360-600dp | 단일 컬럼 | | 대형 모바일/태블릿 | 600-900dp | 2단 컬럼 | | 태블릿/데스크톱 | > 900dp | 3단 컬럼 | ### 2.4 플랫폼별 테스트 체크리스트 | 항목 | iOS | Android | Web | |------|-----|---------|-----| | 최소 OS 버전 | iOS 12+ | Android 6+ | 최신 브라우저 | | 기기 테스트 | iPhone SE, 15 Pro | 저사양, 고사양 | Chrome, Safari, Firefox | | 가로/세로 | 세로 고정 | 세로 고정 | 반응형 | | 노치/펀치홀 | SafeArea | SafeArea | N/A | | 다크 모드 | ✓ | ✓ | ✓ | --- ## 3. 향후 고려 사항 ### 3.1 타임어택/스피드런 모드 | 기능 | 설명 | |------|------| | 타이머 표시 | 실시간 플레이 시간 표시 | | 구간 기록 | Act별 클리어 시간 | | 리더보드 | 최고 기록 순위 (향후 온라인) | | 고스트 데이터 | 이전 기록과 비교 (로컬) | ### 3.2 애널리틱스 (익명) | 수집 데이터 | 목적 | |------------|------| | 레벨별 사망률 | 밸런싱 조정 | | 인기 스킬/장비 | 콘텐츠 밸런싱 | | 플레이 세션 시간 | 게임 흐름 개선 | | 이탈 지점 | 문제 구간 파악 | ### 3.3 다국어 확장 | 언어 | 우선순위 | 현황 | |------|----------|------| | 한국어 | 완료 | ✓ | | 영어 | 완료 | ✓ | | 일본어 | 높음 | 계획 | | 중국어 (간체) | 높음 | 계획 | | 중국어 (번체) | 중간 | 계획 | | 스페인어 | 중간 | 계획 | ### 3.4 개발자/디버그 모드 | 기능 | 설명 | |------|------| | 레벨 조정 | 즉시 레벨 변경 | | 아이템 지급 | 모든 아이템 획득 | | 골드 지급 | 무제한 골드 | | 무적 모드 | 사망 불가 | | 스킵 | 전투/시네마틱 스킵 | | 로그 표시 | 상세 디버그 로그 | ---