전체 프로젝트로 돌아가기

LETSPETS / PROJECT 03

지뢰찾기:구름

오늘 찍은 하늘이 그대로 지뢰찾기 판이 되는 iOS 앱

촬영한 사진에서 찾은 구름 모양으로 만들어진 지뢰찾기 판
최신 버전1.0.1 (9)
빌드 업로드2026.09.26
플랫폼iOS 16.0+
난이도4단계

하늘을 한 장 찍으면 앱이 사진 속 구름 영역을 찾아 그 윤곽대로 지뢰찾기 판을 만듭니다. 네모반듯한 격자가 아니라 그날 그 시간의 구름 모양이 판이 되고, 같은 하늘은 두 번 나오지 않습니다. 풀어낸 구름은 도감에 남고, 휴대폰이 향한 방향에 걸어 두면 그 방향을 바라볼 때 다시 나타납니다. Flutter 3.47.5로 만들었고, 하늘·구름 모델을 앱에 담아 사진을 서버로 보내지 않습니다. 계정은 없고, 게임에서 졌을 때와 구름을 보관할 때 Google AdMob 광고가 나옵니다.

01

사진이 판이 된다

촬영 직후 하늘 분할 모델이 건물과 나무를 걷어내고 구름 모델이 구름 모양을 찾는다. 가장 큰 연결 영역을 16×16 게임판으로 만든다. 자동 판독이 마음에 들지 않으면 모양 수정에서 칸을 직접 고른다.

02

불규칙한 판의 지뢰찾기

직사각형이 아닌 영역에서 8방향 인접을 계산한다. 첫 칸은 모든 난이도에서 안전하고, 빈 영역 한 번에 열기와 숫자 칸 주변 깃발이 맞을 때 한 번에 열기를 지원한다.

03

사진마다 다른 난이도

쉬움 8%, 보통 12%, 어려움 17%, 전문가 22%의 지뢰 비율을 사진마다 25%씩 무작위로 배정한다. 사진 수정·재분석·같은 판 재도전에서는 배정된 난이도를 유지한다.

04

구름 도감

승리한 판만 수집한다. 구름 모양과 난이도, 수집 날짜, 플레이 시간이 함께 남고 이름을 바꿀 수 있다.

05

방향으로 기억하는 하늘

구름을 얻은 뒤 휴대폰을 움직여 방향을 고르고 그 자리에 놓는다. 동/북/위 기준 방위각·고도각과 상대 거리로 저장하므로, 동쪽에 둔 구름은 동쪽을 바라볼 때 다시 보인다. 거리는 기본의 0.5~6배로 조절한다.

06

기기 안에서 끝난다

두 모델(합계 약 4.9MB)은 앱에 포함된다. 사진과 판독 결과를 서버로 보내지 않고, 판을 만든 뒤에는 촬영 임시 파일 삭제를 시도한다. 앱에는 구름 칸 모양만 남는다.

MAKING NOTES

The little details.

구름만 남기려면 하늘부터 지워야 했다

구름 모델 하나로는 밝은 건물 벽과 나뭇잎 사이 빈틈을 구름으로 읽었다. 하늘 분할을 앞에 두어 하늘이 아닌 영역을 먼저 제외하고, 그 안에서만 구름 모양을 찾게 했다.

학습 데이터를 날짜로 나눴다

SWIMSEG 공개 사진 1,013장에서 중복을 제거하고 촬영 날짜 기준으로 학습·검증을 나눴다. 같은 날 사진이 양쪽에 섞이면 점수만 올라가고 실제 사진에서는 무너진다. 학습에 쓰지 않은 347장의 셀 IoU는 51.2%에서 79.8%로 올랐다.

저장은 임시 파일을 먼저 완성한다

도감은 앱 지원 폴더의 my_sky_v1.json 한 파일에 쓴다. 쓰기는 순서대로 처리하고 임시 파일을 완전히 기록한 뒤 교체하며, 직전 정상 파일을 .bak에 남긴다. 읽기 오류가 나면 기존 파일을 덮어쓰지 않는다.

AR 앵커가 아니라 방위각이다

구름은 GPS 장소에 고정되지 않는다. 기기 회전에서 얻은 방위각·고도각과 상대 거리만 저장하므로 어디에서 열어도 같은 방향에 걸려 있다. 대신 자기 북쪽이 기준이라 주변 자기장과 보정 상태에 따라 방향 오차가 생길 수 있다.

사용 전에 확인해 주세요

  • iPhone 전용입니다. iPad는 지원하지 않습니다.
  • Android 버전은 Google Play 내부 테스트 중이라 아직 공개되지 않았습니다.
  • 실시간 프리뷰 분석은 없습니다. 촬영한 사진을 분석합니다.
NEXT LITTLE THINGSwing Golf