요즘 Sunlit Garden / 햇살이 머무는 정원의 M2(5~10분 플레이가 가능한 정도) 작업을 진행하고 있다.
처음에는 이 블로그를 비공개 작업 공간처럼 사용하려고 했다.
기획서, 컨셉 아트, 아이디어 메모처럼 프로젝트와 관련된 자료를 정리해두는 용도였다.
이미 몇 가지 문서와 기록도 비공개 포스팅으로 저장해두었다.
나는 웹 개발자이지만, 게임 개발 쪽은 아직 익숙하지 않다.
직접 하나씩 만들어보면서 배우는 중이고, 그러다 보니 처음에는 공개적으로 개발 과정을 남길 생각이 크지 않았다.
그런데 천천히 작업을 진행하다 보니, 간단한 개발 기록 정도는 공개로 남겨도 괜찮겠다는 생각이 들었다.
누군가는 이 글을 보고 더 나은 방향을 알려줄 수도 있고,
또 누군가에게는 작은 참고가 될 수도 있을 것이다.
그래서 앞으로는 부담스럽지 않은 범위에서,
Sunlit Garden / 햇살이 머무는 정원을 만들며 고민한 것들과 작업 과정을 조금씩 기록해보려고 한다.
이번 작업의 핵심은 밭 표현이었다.
처음에는 일반적인 농사 게임처럼 생각했다.


잔디 타일 → 괭이질 → 갈린 밭 타일
하지만 실제로 적용해보니 내가 만들고 싶은 느낌과는 조금 달랐다.
Sunlit Garden에서 밭은 처음부터 정리된 사각형 공간이 아니라,
플레이어가 방치된 정원을 조금씩 손질하면서 만들어지는 결과에 가까워야 했다.
그래서 땅 표현 방식을 다시 잡았다.
원래 의도도 지금 포스팅한 것과는 좀 많이 다르다.
생각 같아선 브러시 형태로 밭을 생산(?)해 내고 싶었다.
마우스로 쭉 그으면 그은 형태대로 밭이 만들어지면 어떨까 생각했는데,
현재 단계에선 이 정도 표현까지만 해도 좋을 것 같았다.
아마 M3나 그 이후 단계에서 추가해보지 않을까.
1. 흙 패치
처음에는 잔디와 흙이 같이 들어간 32x32 베이스 타일을 만들었다.
하지만 기존 바닥의 grass_base 위에 올리니 어색했다.
풀 위에 또 다른 풀이 얹힌 것처럼 보였고, 타일 경계도 눈에 띄었다.
그래서 방향을 바꿨다.
기존 grass_base는 그대로 두고,
그 위에 투명 배경의 흙 패치만 얹는 방식으로 바꿨다.
grass_base
+ dry_dirt_patch
이 방식이 훨씬 자연스러웠다.
흙 패치는 바닥 전체를 대체하는 타일이 아니라,
정리 후 드러난 마른 흙을 표현하는 오버레이로 쓰기로 했다.

2. 괭이질 단계
기존에는 괭이질을 하면 바로 밭이 되었다.
클릭 1번 → tilled
하지만 이 방식은 너무 갑작스러웠다.
그래서 괭이질 단계를 나눴다.
0단계: 아무 작업 없음
1단계: scratch
2단계: partly_tilled
3단계: tilled
현재는 테스트를 위해 같은 칸에 괭이질을 반복하면 단계가 올라간다.
1번째 괭이질 → scratch
2번째 괭이질 → partly_tilled
3번째 괭이질 → tilled
나중에는 마우스를 누르고 있는 동안 작업량이 누적되는 방식으로 확장할 수 있다.
3. scratch
scratch는 처음 괭이질한 흔적이다.
처음 만든 scratch는 너무 약해서 거의 보이지 않았다.


실제 게임 화면에서는 바닥 질감과 구분이 잘 안 됐다.
그래서 선만 넣는 방식에서 벗어나,
작은 흙 부스러기와 얕게 벗겨진 면을 같이 넣었다.
이후에는 “괭이질을 시작했다”는 느낌이 더 잘 보였다.

4. partly_tilled
partly_tilled는 scratch보다 더 진행된 상태다.
다만 아직 완성된 밭은 아니다.
기준은 이렇게 잡았다.
scratch보다 흙 면적이 넓다
하지만 고랑이 완전히 정돈되지는 않았다
빈틈과 부스러기가 남아 있다
처음에는 회색이 많이 들어가서 흙이 탁하게 보였다.
그래서 기존 흙 패치와 같은 팔레트에 맞춰 다시 조정했다.

5. tilled
가장 많이 수정한 부분은 tilled였다.
처음에는 tilled도 패치처럼 만들려고 했지만,
여러 칸을 이어 붙이면 큰 밭이 아니라 같은 무늬가 반복되는 것처럼 보였다.
그래서 tilled는 연결형 타일로 만들었다.
길 타일처럼 주변 셀의 상태를 보고 다른 이미지를 선택한다.
사용한 형태는 대략 이렇다.
single
end
line
corner
T
center
처음에는 cross도 생각했지만,
넓은 밭 내부에는 cross보다 center가 더 자연스러웠다.
또 끝부분이 어색해서 end 타일도 추가했다.
현재는 tilled가 주변 칸과 이어지며 큰 밭처럼 보이도록 작동한다.

6. 저장과 불러오기
땅 상태가 늘어나면서 save/load도 수정했다.
이제는 단순히 tilled 여부만 저장하면 안 된다.
중간 상태인 scratch와 partly_tilled도 복원해야 한다.
그래서 hoeStage를 저장 데이터에 추가했다.
hoeStage 0: none
hoeStage 1: scratch
hoeStage 2: partly_tilled
hoeStage 3: tilled
또한 연결형 tilled는 주변 셀 정보를 보고 이미지를 고르기 때문에,
로드할 때 모든 데이터를 먼저 복원한 뒤 시각 요소를 다시 만드는 방식으로 바꿨다.
1. fieldData 전체 복원
2. visual 전체 재생성
이렇게 하니 연결 상태가 정상적으로 복원됐다.
로드 중 기존 visual을 지울 때는 queue_free() 대신 free()를 사용했다.
같은 프레임 안에서 삭제와 재생성이 같이 일어나기 때문이다.
7. 작물 표시 문제
save/load 테스트 중 작물도 문제가 있었다.
작물이 성장할 때 씨앗 이미지와 성장한 작물 이미지가 같이 보이는 경우가 있었다.
기존에는 성장할 때 작물 노드를 지우고 새로 만들었다.
이 방식을 바꿔서,
기존 CropSprite의 texture만 교체하도록 수정했다.
이후 작물 이미지가 겹쳐 보이는 문제도 해결됐다.
현재 상태
현재 땅 표현은 이렇게 작동한다.
dry_dirt_patch
→ scratch
→ partly_tilled
→ connected tilled
save/load도 정상 작동한다.
작물 성장 표시도 정상이다.
다음 작업은 물 준 밭 표현이다.
현재 tilled 색감은 유지하고,
조금 더 어둡고 차분한 색으로 watered_tilled를 만들 예정이다.
정리
이번 작업의 목표는 밭을 단순한 사각형 타일로 보이지 않게 하는 것이었다.
현재 방향은 이렇다.
밭은 처음부터 있는 공간이 아니라,
플레이어가 땅을 손질한 흔적이 쌓여 만들어지는 공간이다.
아직 완성은 아니지만,
땅 표현의 기본 구조는 어느 정도 잡힌 것 같다.
'1인 개발 > Sunlit Garden(햇살이 머무는 정원)' 카테고리의 다른 글
| Sunlit Garden 개발 기록 - (0) | 2026.05.27 |
|---|---|
| Sunlit Garden 개발 기록 - 캐릭터 스프라이트 방향 정리 (0) | 2026.05.25 |