# Blub Blub 화면 아래 가장자리에 가로로 깔리는 바닷속 방치형 스트립. 다른 일을 하는 동안 화면 밑에서 조용히 돌아간다. 거품을 모아 바다를 꾸미고, 꾸밀수록 거품이 더 빨리 모인다. 창은 화면 폭 전체를 차지하고 높이만 160~300px이다. 작업표시줄은 덮지 않는다. ## 실행 - 에디터: `%LOCALAPPDATA%\Programs\Godot\Godot_v4.7.2-stable_win64.exe` 를 실행해 이 폴더를 열거나, 이미 임포트되어 있으면 프로젝트 목록에서 **Blub Blub** 선택 - 게임만: `.\run.ps1` - 테스트: `.\test.ps1` ## 조작 | 동작 | 방법 | | --- | --- | | 거품 모으기 | 빈 곳 좌클릭 | | 놓기 | 상점에서 고른 뒤 칸을 클릭 (우클릭·Esc로 취소) | | 옮기기 | 놓인 것을 끌어다 다른 칸에 놓기 (공짜) | | 치우기 | 끌어서 아래 휴지통에 떨구기 (절반 환불) | | 상점 열기 | 왼쪽 위 **상점** (패널은 오른쪽에 열린다) | | 메뉴 | **···** 버튼 또는 물 위 우클릭 | 메뉴: 항상 위에 표시 · 클릭 통과 · 높이(낮게/보통/높게) · 위아래 도킹 · 화면 선택(모니터가 여러 대일 때) · 지금 저장 · 처음부터 다시 · 종료 **클릭 통과**를 켜면 클릭이 바탕화면으로 지나가고, 안쪽 모서리(84×56px)만 계속 눌린다. 이 모서리를 눌러 메뉴로 돌아와 통과를 끌 수 있다. (아래 도킹이면 오른쪽 위, 위 도킹이면 오른쪽 아래) ## 구조 ``` project.godot 창 설정(투명·테두리 없음·항상 위·1:1 픽셀)과 오토로드 등록 autoload/ catalog.gd 밸런스 데이터 전부. 아이템 추가는 여기서만. game_state.gd 보유 자원·구매 상태와 파생 수치(bps, 아름다움, 등급) save_manager.gd 저장/불러오기, 30초 자동 저장, 오프라인 보상, 창 위치 scenes/ main.tscn/.gd 도킹(폭 전체·가장자리 스냅)·클릭 통과·메뉴와 화면 조립 aquarium/ 물빛 셰이더, 모래 바닥, 물속 오브젝트 ui/ 왼쪽 위 정보 바, 오른쪽 상점 패널 scripts/ number_format.gd 1234 -> "1.23K", 경과 시간 표기 ui_style.gd UI 색과 스타일박스 tests/smoke.tscn/.gd 경제 로직 스모크 테스트 ``` ## 게임 루프 1. 물 아무 곳이나 클릭해 **거품**을 모은다. 2. 거품으로 **생물**(해초, 물고기…)을 사면 초당 생산량과 **아름다움**이 오른다. 3. **장식**(난파선, 석상…)은 한 번만 살 수 있고, 아름다움이 크며 전체 생산에 곱연산 보너스를 준다. 4. 아름다움은 다시 전체 생산량에 `1 + sqrt(아름다움) × 0.02` 배율로 되돌아온다. → **꾸미는 것이 곧 성장이다.** 5. 앞 구역을 충분히 꾸미고 거품을 모으면 오른쪽 다음 구역이 열린다. 얕은 바다 → 산호초 → 켈프 숲 → 심해 → 열수구 ## 격자와 배치 바다는 **3/4 부감 격자**다. 구역당 9열 × 6행, 전체 45열 × 6행 = 270칸. 바닥은 위에서 내려다보지만 그 위에 놓인 것은 **서 있는 모습**으로 그린다. 러스티의 농장과 같은 방식이고, 완전한 탑다운과는 다르다. 산 것은 모두 플레이어가 고른 칸에 놓이고, **칸이 곧 한계다.** 거품이 아무리 많아도 자리가 없으면 더 놓을 수 없다. 그래서 성장은 세 갈래로 갈린다. 1. 다음 구역을 열어 자리를 늘린다 2. 싼 것을 치우고 비싼 것으로 갈아 끼운다 (치우면 절반을 돌려받는다) 3. 칸을 차지하지 않는 업그레이드를 산다 장식은 여러 칸을 차지한다. 난파선·잠수정·고래 뼈는 3×2, 석주·석상·굴뚝·수정은 2×2, 항아리와 닻은 2×1. 자리를 많이 먹는 만큼 아름다움이 크다. **배치 방법**: 상점에서 고르면 상점이 잠시 닫히고 배치 모드가 된다. 놓을 칸을 클릭하면 그때 값이 지불된다. 우클릭이나 Esc로 취소. 이미 놓인 것은 끌어서 옮길 수 있고(공짜), 끄는 동안 아래에 나타나는 휴지통에 떨구면 치우고 절반을 돌려받는다. ## 구역 가로가 다섯 구역으로 나뉘어 있고, **왼쪽에서 오른쪽으로 갈수록 깊어진다.** 처음에는 맨 왼쪽 얕은 바다만 열려 있고 나머지는 어둡게 덮여 있다. 잠긴 구역을 클릭하면 해금 조건과 남은 양이 그 자리에 뜬다. 다음 구역을 열려면 두 가지가 필요하다. 1. **바로 앞 구역의 아름다움** — 앞바다를 대충 두고 다음으로 넘어갈 수 없다. 2. **해금 비용(거품)** 생물과 장식은 각자 자기 구역에 속한다. 그 구역이 열려야 상점에 나타나고, 그 구역 밖으로는 놓을 수 없다(구역 경계를 걸치는 것도 안 된다). 모래색과 물빛은 구역 중심 색을 기준으로 이어 붙여서 경계가 보이지 않게 그린다. 자세한 수치와 앞으로 붙일 것들은 [docs/DESIGN.md](docs/DESIGN.md) 참고. ## 저장 위치 `%APPDATA%\Godot\app_userdata\Blub Blub\save.json` (한 세대 전 백업은 `save.bak.json`) ## 부팅 시 자동 실행 내보내기(Export)로 exe를 만든 뒤, `Win+R` → `shell:startup` 폴더에 그 exe의 바로가기를 넣으면 된다.