모래게임 Sandrop 0
이 글은 Sandrop 시리즈의 1번째 기록입니다. (총 23개)
요약
Sandrop은 빈 캔버스에 색 모래를 부어 픽셀아트를 완성하는 모바일 퍼즐이다. 화면 아래 실시간 순환 컨베이어 벨트에 색 바스켓(양동이)이 실려 돌고, 지금 꺼낼 수 있는 바스켓을 탭하면 통로를 걸어 나가 엘리베이터를 타고 캔버스로 올라가 그 색 모래를 붓는다. 모래는 중력을 따라 열마다 아래부터 쌓이고, 목표 그림을 100% 채우면 그 판이 완성된다. 로프로 묶인 바스켓, 색을 가린 물음표 바스켓 같은 기믹이 후반부에 변화를 준다. 클리어 가능성을 보장하기 위해 채움 규칙 엔진을 Dart와 Python 두 벌로 짜서 서로 대조(파리티)하고, 봇으로 클리어율을 재서 난이도를 나눈다.
제작 동기
직접 이런 색 모래 퍼즐을 즐겨 하는데, 보통 한 게임을 400레벨 이상 클리어할 만큼 좋아한다. 그러다 보니 늘 레벨이 부족하다고 느꼈고, 원하는 만큼 레벨이 많은 게임을 직접 만들고 싶었다. 재미의 핵심은 화려한 연출이 아니라 규칙 구조에 있다고 봤다. 도달 가능한 바스켓을 골라 정해진 순서로 부어 100%를 맞추는 과정 자체가 퍼즐이라, 규칙 엔진을 먼저 튼튼하게 세우고 그 위에 게임을 얹는 방향으로 잡았다.
목표 설정
- 작업 기간: 2026.07.09.~ 진행 중
- 소프트런칭 분량: 200레벨. 50레벨은 테스트용으로도 부족해서, 전부 다른 그림으로 채운 200레벨을 우선 목표로 삼았다
- 무반복 도안: 200레벨이 전부 다른 그림이려면 그만큼 도안이 필요해 이미지 양자화 파이프라인으로 도안 풀을 확보
- 수익화: 광고 중심. 무과금은 클리어 보상과 하루 3회 보상형 광고로 코인을 모으고, 결제는 광고 제거(NO ADS)와 스타터 번들만 남긴다
- 플랫폼: 안드로이드 우선, iOS는 이후 추가
- 오프라인 플레이 전제: 폰트까지 앱에 번들해 네트워크 없이 켜지게 함
주요 작업
- ✅ 순수 Dart 규칙 엔진 + 단위 테스트 — 붓기(중력·도달) 규칙을 코어로 두고, 아이템·이어하기가 규칙과 색별 총 모래량을 절대 바꾸지 않도록 설계 불변식을 못박음
- ✅ Dart·Python 두 엔진 파리티 — 같은 규칙을 두 언어로 짜서 공통 케이스로 대조, 난이도 측정과 클리어 가능성 판정을 신뢰할 수 있게 함
- ✅ 실시간 순환 컨베이어 벨트 + 엘리베이터 — 벨트가 하나의 위상을 공유해 바스켓이 겹치지 않게 실려 돌고, 탭하면 통로를 걸어 나가 엘리베이터로 올라감
- ✅ 벽 규칙과 설계 기반 레벨 생성기 — 통과 불가한 벽으로 통로를 설계하고, 벽 패턴과 연결성 검증을 갖춘 생성기로 레벨을 자동 생성
- ✅ 봇 기반 난이도 티어 — 가끔 실수하는 평균 플레이어 봇(ε-greedy)의 클리어율로 난이도 밴드를 나눠 티어(쉬움~매우 어려움)를 배정
- ✅ 이모지 양자화 파이프라인 — 오픈소스 Noto 이모지를 색 양자화해 도안 풀을 236종까지 확대, 200레벨을 무반복으로 생성
- ✅ 로프·물음표 기믹 — 로프는 두 바스켓을 묶어 같이 움직이고, 물음표는 꺼낼 수 있게 되는 순간 색이 공개됨. 51·101레벨부터 순차 등장
- ✅ 알알이 쌓이는 모래 연출 — 물 차오르듯 보이던 붓기를 규칙은 그대로 둔 채 시각 레이어만 흩뜨려 낟알이 떨어져 쌓이는 질감으로 교정
- ✅ 양동이 스프라이트 — 크림색 원본 한 장에 모래색을 곱해 착색해 레벨마다 다른 색을 커버, 못 꺼내는 통은 엎어두고 꺼낼 수 있으면 뒤집혀 열림
- ✅ 캔버스 가독성 3겹 — 미채움 가이드 선명화, 채움 표면 크러스트 선, 다음 받을 칸 펄스로 무슨 색을 어디에 부어야 할지 읽히게 함
- ✅ 색 판정 정리 — 밝기에 휘둘리던 색 순도 기준을 바로잡아 흰색·회색이 여러 개로 갈리던 문제를 200레벨 전수 검사로 해결
- ✅ 바닥 밝기 길 안내 — 출구까지 실제로 뚫린 통로만 밝혀 밝음은 지나갈 수 있는 길, 어두움은 벽으로 통일
- ✅ 캔디팝 UI 리스킨 — 도안 원색은 지키고 UI(버튼·팝업·아이콘·배경)만 캔디 팔레트로, 폰트는 서브셋으로 번들
- ✅ 여정형 레벨 선택 — 격자 대신 세로로 이어지는 길, 앞으로 할 레벨은 도안·난이도를 숨겨 스포일러 제거
- ✅ 경제·상점 — 코인은 진행(이어하기)을, 하트는 새 판 진입·다시하기를 담당. 상점에 스타터 번들·NO ADS·아이템 배치
- ✅ AdMob 광고 연동 — 보상형(이어하기·코인 2배), 전면(3회에 1회), 개발 중에는 테스트 광고만 나가게 분리
- ✅ 하단 탭·설정 화면 — 홈·상점·설정 탭, 사운드·진동 토글과 게임 방법·약관·크레딧
- ✅ 아이템 3종 — 매그넷·셔플·되돌리기. 이어하기는 레일을 사이드 버퍼로 비워 모래를 보존
- ✅ 앱 아이콘 — 도안(고래) 소스로 안드로이드 adaptive 아이콘 전 밀도 생성
- ⏳ 일일 접속 랜덤 보상 — 시작 코인이 0이라 초반 코인 획득 경로로 필요
- ⏳ IAP 결선 — NO ADS·스타터 번들 실제 결제 연결과 결제 복원
- ⏳ iOS 프로젝트 — 광고 설정(앱 ID·추적 권한) 포함
- ⏳ Flame 파티클 고도화 — 지금은 순수 Flutter/CustomPaint 연출
결과
전부 다른 그림으로 채운 200레벨 소프트런칭 분량을 확보했고, 규칙 엔진(Dart·Python 파리티)·난이도 티어·기믹·경제·광고 수익화·UI 리스킨까지 게임의 뼈대가 돌아가는 상태다. 남은 것은 실기기에서의 체감 다듬기와 결제(IAP) 결선, iOS 대응, 일일 접속 보상 같은 출시 준비 항목이다. ⏳
Series: Sandrop
1
|
모래게임 Sandrop 0
읽는 중
2
|
모래게임 Sandrop 1
3
|
모래게임 Sandrop 2
4
|
모래게임 Sandrop 3
5
|
모래게임 Sandrop 4
6
|
모래게임 Sandrop 5
7
|
모래게임 Sandrop 6
8
|
모래게임 Sandrop 7
9
|
모래게임 Sandrop 8
10
|
모래게임 Sandrop 9
11
|
모래게임 Sandrop 10
12
|
모래게임 Sandrop 11
13
|
모래게임 Sandrop 12
14
|
모래게임 Sandrop 13
15
|
모래게임 Sandrop 14
16
|
모래게임 Sandrop 15
17
|
모래게임 Sandrop 16
18
|
모래게임 Sandrop 17
19
|
모래게임 Sandrop 18
20
|
모래게임 Sandrop 19
21
|
모래게임 Sandrop 20
22
|
모래게임 Sandrop 21
23
|
모래게임 Sandrop 22