Files
asciinevrdie/doc/task-ext-platform.md
JiWoong Sul b110b2dc53 docs: 게임 시스템 개편 계획 문서 분리
- 121KB 단일 문서를 22개 태스크 문서로 분리
- 메인 인덱스 문서 (game-system-overhaul-index.md) 생성
- Phase 1-10 태스크 문서 10개 분리
- 추가 시스템 태스크 문서 10개 분리
- 재미 요소 설계 문서 1개 분리
- 기존 문서는 archive/ 폴더로 이동
2025-12-16 19:33:57 +09:00

5.9 KiB

플랫폼/오프라인/향후 고려사항

메인 문서: game-system-overhaul-index.md


1. 오프라인/백그라운드 진행

1.1 오프라인 진행 개념

앱 종료 시점 기록 → 재접속 시 경과 시간 계산 → 오프라인 보상 계산 → 결과 표시

1.2 오프라인 보상 계산

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 개발자/디버그 모드

기능 설명
레벨 조정 즉시 레벨 변경
아이템 지급 모든 아이템 획득
골드 지급 무제한 골드
무적 모드 사망 불가
스킵 전투/시네마틱 스킵
로그 표시 상세 디버그 로그