고착생물을 집으로, 생물은 해양동물만

거품돌·해초·산호·켈프·관벌레는 물고기가 깃드는 자리지 그 자체가
일꾼이 아니다. 실제로 물고기는 바위 틈과 해초 사이를 보금자리로 삼는다.
전부 집으로 옮기고, 생물에는 움직이는 해양동물만 남겼다.

- 집이 자연 서식지(rock/plant)와 지어 올린 것(vessel/wreck/pillar) 두 갈래가
  되면서 정원에 폭이 생겼다. 거품돌 1, 해초·산호 2, 켈프·관벌레 4,
  지어 올린 것은 표준 3.
- 빈 자리를 메우려 게·해마·새우를 넣어 층마다 생물 둘을 맞췄다.
  소라게·해마·열수구 새우. 형태도 셋 새로 그렸다.
- 형태 계통이 그대로 경계가 된다. 생물 fish/glow/crab/seahorse/shrimp,
  집 rock/plant/vessel/wreck/pillar. 겹치지 않는 것을 테스트가 지킨다.
- 예전에 생물로 사 둔 돌·해초는 같은 id의 집으로 그만큼 지어 준다.
  그냥 버리면 사 둔 것이 조용히 사라진다.

버그 둘

_fish_area/_orbit_center가 생물 자리를 grid_rect(화면 테두리)로 잘랐다.
가로로 이어 스크롤하던 시절에는 화면 = 바다여서 맞았지만, 층이 옆으로
늘어선 지금은 뒤쪽 층 생물이 전부 첫 층 오른쪽 끝으로 끌려와 제 층에서
사라졌다. _home_bounds()가 그 집이 속한 층의 테두리를 돌려준다.

_make_fish가 fish와 glow만 궤도에 올려, 새로 넣은 게·해마·새우가
제자리에 굳어 있었다. 고착생물이 전부 집으로 갔으므로 가드를 걷어냈다.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-02 14:16:04 +09:00
parent 711cd453ff
commit 1ca381922f
7 changed files with 343 additions and 100 deletions
+33
View File
@@ -384,3 +384,36 @@ F11이나 메뉴로 창을 화면 전체로 키운다. 그냥 창만 키우면
함께 사라진 것: 가로 패닝, 구역 구분선(한 화면에 둘이 안 보이므로 무의미),
`window_state["scroll_x"]`(→ `["layer"]`).
## 사는 것과 사는 곳
처음에는 거품돌·해초·산호·켈프·관벌레가 **생물** 쪽에 있었다. 하지만 이것들은
물고기가 깃드는 자리지 그 자체가 일꾼은 아니다. 실제로 물고기는 바위 틈과
해초 사이를 보금자리로 삼는다. 그래서 전부 **집**으로 옮겼다.
- **생물** — 물고기·게·해마·새우처럼 움직이는 해양동물만. 거품을 버는 것은 이쪽뿐이다.
- **집** — 자연 서식지(rock/plant)와 지어 올린 것(vessel/wreck/pillar).
칸을 차지하고 정원과 아름다움을 준다.
집이 두 갈래가 되면서 정원에 폭이 생겼다. `capacity`를 아이템별로 둘 수 있게 해서
자연 서식지는 싸지만 적게 들이고(거품돌 1, 해초 2, 산호 2), 지어 올린 것은
비싼 대신 표준 정원(3)을 준다. 켈프와 관벌레는 4까지 들인다.
**형태 계통이 그대로 경계가 된다.** 생물은 `fish/glow/crab/seahorse/shrimp`,
집은 `rock/plant/vessel/wreck/pillar`. 두 집합이 겹치지 않는 것을 테스트가 지킨다.
겹치면 화면에서 "사는 것"과 "사는 곳"이 구분되지 않는다.
**옛 저장본**: 예전에 생물로 사 둔 돌·해초는 `_restore_fish()`가 같은 id의 집으로
그만큼 지어 준다. 그냥 버리면 플레이어가 사 둔 것이 조용히 사라진다.
### 이때 드러난 버그
생물의 자리를 `grid_rect()`(화면 테두리)로 잘라내고 있었다. 가로로 이어 스크롤하던
시절에는 화면 = 바다여서 맞았지만, 층이 옆으로 늘어선 지금은 **뒤쪽 층의 생물이
전부 첫 층 오른쪽 끝으로 끌려와** 제 층에서 사라졌다. 집은 멀쩡히 보이는데
생물만 없어서 한참 헤맸다. `_home_bounds()`가 그 집이 속한 층의 테두리를 돌려주고,
자를 때 그것을 쓴다.
`_make_fish()``fish``glow`만 궤도에 올리고 있었다. 고착생물이 생물 쪽에
있던 시절의 가드인데, 새로 넣은 게·해마·새우가 여기 걸려 제자리에 굳어 있었다.
고착생물이 전부 집으로 갔으므로 가드 자체를 걷어냈다.