Flutter로 iOS 게임 'Midsommer Madness' 출시!
Flutter를 활용하여 iOS 게임 'Midsommer Madness'를 개발하고, Xcode를 통해 iOS 앱 빌드를 성공적으로 완료함.
웹 앱에서 시작하여 안드로이드, 플러터 앱을 거쳐 최종적으로 iOS 네이티브 앱으로 배포하는 과정을 상세히 설명함.
IKEA Warehouse, Systembolaget 등 스웨덴 문화 테마 레벨을 구현하고, 새로운 레벨 추가 및 게임 플레이 경험을 개선함.
Mac 시스템, Xcode, Flutter 설치 등 iOS 빌드 환경 설정 방법과 CLI 명령어를 통한 배포 과정을 안내함.
Flutter 기반 iOS 앱 빌드 및 배포 과정
본문은 Flutter 프레임워크를 사용하여 iOS 앱을 빌드하고 배포하는 과정을 상세히 설명함.
빌드 환경: Mac 시스템에 Xcode와 Flutter SDK 설치가 필수적이며, `make build-ios` 또는 `flutter build ios --no-codesign` 명령어로 코드 서명 없이 빌드 가능.
코드 서명 및 배포: 실제 기기 배포를 위해서는 Xcode에서 직접 프로젝트를 열어 개발자 팀(Developer Team) 및 번들 식별자(Bundle Identifier) 설정 후 빌드 및 실행해야 함.
디버깅 및 테스트: `make logcat` 명령어로 로그를 모니터링하고, `ios-deploy` 도구를 사용하여 빌드된 앱을 아이폰에 설치 및 실행함.
결과적으로 크로스 플랫폼 개발의 이점을 살려 단일 코드베이스로 iOS 앱을 성공적으로 완성함.
게임 레벨 디자인 및 확장
이 프로젝트는 스웨덴의 독특한 문화적 요소를 게임 레벨로 구현하는 데 중점을 둠.
주요 레벨: IKEA Warehouse, Systembolaget, Lördagsgodis, The Swedish Pub, Volvo Highway 등 스웨덴의 상징적인 장소와 문화를 테마로 함.
레벨 확장: `game.js` 파일을 수정하여 새로운 레벨(예: Lördagsgodis)을 추가하고, 레벨 ID, 오디오 모드, 적(Enemy) 클래스, 투사체(Projectile) 디자인 등을 조정함.
코드 수정: 레벨 조건부 로직, 시퀀서, UI 트래커 등을 업데이트하여 10단계 레벨 구성을 완성하고 게임 플레이 경험을 풍부하게 함.
이러한 모듈식 레벨 디자인은 향후 콘텐츠 추가 및 확장에 용이함을 보여줌.
크로스 플랫폼 개발 워크플로우
이 프로젝트는 웹 앱에서 시작하여 안드로이드, 플러터, 그리고 최종적으로 iOS까지 다양한 플랫폼으로의 점진적 확장을 보여줌.
개발 순서: 웹 기반 게임 → 안드로이드 APK → Flutter 호환성 리팩토링 → Flutter 안드로이드 APK → Flutter 기반 iOS 앱 빌드.
코드베이스 재활용: Flutter를 도입함으로써 기존 웹 앱 코드베이스를 재활용하여 개발 시간과 비용을 절감함.
플랫폼별 최적화: 각 플랫폼의 특성에 맞게 빌드 및 배포 과정을 조정하며, 특히 iOS의 경우 Xcode를 통한 코드 서명 및 프로비저닝 프로파일 설정이 중요함.
이러한 점진적 배포 전략은 다양한 환경에서의 안정적인 출시를 가능하게 함.
Makefile을 활용한 빌드 자동화
프로젝트는 `Makefile`을 사용하여 빌드 및 개발 프로세스를 자동화함.
주요 명령어: `make dev` (로컬 웹 서버 실행), `make build-apk` (안드로이드 APK 빌드), `make build-ios` (iOS 앱 빌드), `make install-apk` (APK 설치), `make clean` (빌드 캐시 정리) 등을 제공함.
iOS 빌드 자동화: `make build-ios` 명령어는 내부적으로 `flutter build ios --no-codesign`을 호출하여 iOS 앱 컴파일 과정을 간소화함.
개발 생산성 향상: 이러한 자동화된 스크립트는 개발자가 복잡한 명령어를 직접 입력하는 대신 간단한 명령어로 빌드 및 배포 작업을 수행할 수 있도록 지원함.
이는 CI/CD 파이프라인 구축의 기초가 될 수 있으며, 개발 워크플로우의 효율성을 높임.