걸으면 풀리는 퍼즐 게임 — 개발 일지 #2: 기술 스택
왜 모바일 앱인가
웹으로 만들면 안 되냐는 생각도 했다. 결론은 안 된다.
이 게임의 핵심 기능은 GPS 추적과 걸음 수 측정이다. 둘 다 모바일 네이티브 영역이다. 웹 API로도 위치는 가져올 수 있지만, 백그라운드에서 걸음 수를 지속 측정하는 건 브라우저에서는 불가능하다.
그리고 걸으면서 하는 게임이다. 데스크탑에서 할 이유가 없다.
Flutter를 선택한 이유
크로스 플랫폼 선택지는 여러 개 있다.
| 프레임워크 | 장점 | 단점 (이 프로젝트 기준) |
|---|---|---|
| React Native | 웹 경험 활용 가능 | 네이티브 센서 접근이 번거로움 |
| Unity | 게임 엔진으로 강력 | 이 정도 퍼즐에는 과한 스택 |
| Flutter | 네이티브급 성능 + 센서 플러그인 풍부 | Dart 학습 필요 |
| Swift/Kotlin | 최상의 성능 | 플랫폼별 2번 개발 |
Flutter를 선택한 결정적 이유:
- iOS/Android 동시 개발 — 현재 iOS만 보유 중이지만, Android 출시도 해야 한다
- 센서 접근이 쉽다 — GPS, 만보기, 헬스킷 플러그인이 잘 되어 있다
- CustomPainter — 퍼즐 조각을 직접 그리기에 적합하다
기술 스택 상세
위치 + 운동 트래킹
# pubspec.yaml
dependencies:
geolocator: ^10.0.0 # 실시간 위치 추적
geocoding: ^2.1.0 # 주소 ↔ 좌표 변환
location: ^5.0.0 # 백그라운드 위치 추적
pedometer: ^4.0.0 # 걸음 수 카운트
health: ^8.0.0 # iOS Health / Android Health Connect
google_maps_flutter: ^2.5.0 # 지도 표시
이 프로젝트에서 가장 까다로운 부분이 백그라운드 위치 추적이다. geolocator로 포어그라운드는 커버되지만, 앱을 끄고 걸을 때도 추적해야 하므로 location 패키지를 별도로 사용한다.
퍼즐 엔진
// CustomPainter로 퍼즐 조각 렌더링
// GestureDetector로 드래그 앤 드롭
// 이미지를 N×N 조각으로 분할하는 알고리즘
Flutter의 CustomPainter가 핵심이다. 캔버스에 직접 그릴 수 있으니 퍼즐 조각의 형태, 그림자, 스냅 애니메이션을 자유롭게 구현할 수 있다.
상태 관리 + 저장
dependencies:
provider: ^6.0.0 # 상태 관리
shared_preferences: ^2.2.0 # 걸음 수, 해금 목록 저장
sqflite: ^2.3.0 # 복잡한 데이터 (필요시)
permission_handler: ^11.0.0 # 위치/활동 권한
Provider를 선택했다. Riverpod도 고려했지만, 이 규모에서는 Provider로 충분하다. 오버엔지니어링을 피하고 싶었다.
iOS 권한 설정
위치 기반 앱은 권한 설정이 까다롭다. Info.plist에 3가지를 명시해야 한다:
<key>NSLocationWhenInUseUsageDescription</key>
<string>퍼즐 해금을 위해 현재 위치가 필요합니다</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>걷는 동안 위치를 추적합니다</string>
<key>NSMotionUsageDescription</key>
<string>걸음 수를 측정합니다</string>
문구가 중요하다. Apple 심사에서 왜 이 권한이 필요한지 명확하지 않으면 리젝당한다. "위치가 필요합니다"보다 "퍼즐 해금을 위해 현재 위치가 필요합니다"가 통과율이 높다.
개발 환경 세팅
flutter doctor # 환경 체크
flutter create walking_puzzle_game
cd walking_puzzle_game
# 필수 패키지 한번에 설치
flutter pub add geolocator pedometer google_maps_flutter \
permission_handler provider shared_preferences
주의할 점: GPS와 만보기는 에뮬레이터에서 테스트할 수 없다. 실기기가 필수다. iOS라면 Mac + Xcode + Apple Developer 계정이 있어야 실기기 빌드가 된다.
예상 비용
| 항목 | 비용 |
|---|---|
| Flutter SDK | 무료 |
| VS Code / Android Studio | 무료 |
| Apple Developer Program | $99/년 |
| Google Play Console | $25 (1회) |
| Google Maps API | 월 $200 무료 크레딧 (초기에는 $0) |
| 합계 | ~$124 + α |
사이드 프로젝트 치고는 초기 비용이 있는 편이다. Apple Developer가 연 $99인 게 가장 아프다. 하지만 iOS 없이 출시하면 타겟의 절반을 잃는다.
다음 단계
기술 스택은 정했다. 다음 개발 일지에서는 Flutter 프로젝트 구조 설계와 기본 퍼즐 UI 구현을 다룰 예정이다.
프로젝트 폴더 구조, 퍼즐 렌더링 로직, 기본적인 드래그 앤 드롭까지 진행할 계획이다.
기술 스택: Flutter 3.x, Dart, Geolocator, Pedometer, Google Maps
시리즈: 퍼즐 게임 개발 일지 #2 / 4
'프로젝트 > 퍼즐 게임' 카테고리의 다른 글
| 운동하면서 즐기는 퍼즐 게임 만들기 - 개발 일지 #4 (0) | 2026.01.28 |
|---|---|
| 운동하면서 즐기는 퍼즐 게임 만들기 - 개발일지 #3 (0) | 2026.01.26 |
| 운동하면서 즐기는 퍼즐 게임 만들기 - 개발 일지 #1 (0) | 2026.01.18 |