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

185 lines
5.9 KiB
Markdown

# 플랫폼/오프라인/향후 고려사항
> 메인 문서: [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 개발자/디버그 모드
| 기능 | 설명 |
|------|------|
| 레벨 조정 | 즉시 레벨 변경 |
| 아이템 지급 | 모든 아이템 획득 |
| 골드 지급 | 무제한 골드 |
| 무적 모드 | 사망 불가 |
| 스킵 | 전투/시네마틱 스킵 |
| 로그 표시 | 상세 디버그 로그 |
---