아이폰 지원 요구로 Android 전용 Kotlin 스택을 크로스플랫폼 Flutter로 교체.
- app/: Flutter 프로젝트(android+ios). 코어 로직은 순수 Dart 모듈 app/lib/engine.dart
로 이식(SRS+180 킥·7-bag·홀드·고스트·락딜레이·T-spin/mini·콤보/B2B). 웹/Kotlin 판과 동일 알고리즘.
- app/test/engine_test.dart: Dart 테스트 24개 전부 통과, flutter analyze 0 issue.
- 이전 android/(Kotlin) 모듈 제거(Flutter로 대체). README에 Flutter 전환 + iOS 빌드 제약(맥 필요) 명시.
- 게임 UI(목업 ② + §11 터치)와 설치용 빌드는 다음 단계.
플레이스토어 출시 위해 클라이언트를 네이티브 Android(Kotlin+Compose)로 전환.
- android/engine: 순수 Kotlin 코어 엔진 이식 (보드·SRS+180 킥·7-bag·홀드·고스트·
락딜레이·T-spin/mini 판정·콤보/B2B). 웹 engine.js 와 동일 알고리즘.
- android/engine/src/test: JUnit 24개 테스트 전부 통과 (Gradle 8.11.1 + JDK21).
- Gradle 래퍼 포함. :app(Compose UI) 모듈은 다음 단계.
- 서버(Cloudflare) 계획 불변. 웹 프로토타입은 동작 레퍼런스로 유지.
- 390x844 세로 고정 레이아웃, 기기 화면에 맞춰 스케일
- 목업 ② 대로: 상단 pause/SPRINT/타임/LINES·PPS, 다크 웰 보드+고스트+판정팝업,
우측 HOLD/NEXT×5, 하단 §11 확정 좌표 가상 버튼(하드드롭 SAFETY 오렌지, 챔퍼컷)
- 포인터/터치 멀티터치 입력 + DAS/ARR, 햅틱; 키보드는 데스크톱 폴백으로 유지
- Phase 2 시작: SPRINT 모드(40줄) + 일시정지/결과 오버레이 연결
- NEXT/HOLD 미니 피스 수직 센터링 수정
- src/engine.js: 순수 코어 로직 (보드 10x40, 피스 7종, SRS+180 킥테이블,
T-spin/mini 판정, 콤보/B2B, 7-bag, 홀드, 고스트, 락딜레이 15회 캡)
- test/engine.test.js: 24개 단위 테스트 (킥테이블·T-spin 판정·7-bag·클리어 등) 전부 통과
- src/index.template.html + build.js: 엔진을 인라인한 단일 index.html 생성
(외부 에셋 0개). 키보드 플레이 가능 (DAS/ARR, 하드/소프트드롭, 판정 팝업)