모래게임 Sandrop 24
오늘 한 일
- 후반 난이도를 올림 — 곡선 끝점을 낮추고, 관문 주기를 촘촘히 하고, 측정 봇을 더 잘하게
- 상위 난이도에 벽·바구니 최소 개수를 둠
- 최고 어려움인데 벽이 하나도 없던 판들의 원인을 찾아 고침
- 디버그에 “모든 레벨 깬 것으로” 추가
- 500레벨 재생성
막힌 부분
400탄이 100탄과 체감이 비슷했다
다른 게임은 400탄대에서 한 번에 못 깨는데 이건 다 깬다는게 계속 마음에 걸렸다. 내가 만든거라 다른 사람보다 좀 더 잘 할 수는 있지만 뭔가 마음 한켠이 찜찜했다.
곡선을 보니 그럴 만했다. 165탄에서 500탄까지 목표가 0.45에서 0.34로 내려가는데, 335탄 동안 0.11밖에 안 움직인다. 후반이 사실상 평평했다.
- 해결: 곡선 끝점을 0.26으로 낮추고, 관문 레벨 주기를 8배수에서 6배수로 촘촘히 했다
- 초반은 안 건드렸다. 신규 유저가 겪는 구간이라 그대로 두는 게 맞다고 봤다
처음엔 “목표를 못 맞추고 있다”고 잘못 봤다
구간 평균을 그 구간 중앙 레벨의 목표와 비교했더니 후반이 크게 쉬워 보였다. 그래서 곡선이 아니라 생성기가 목표를 못 맞추는 문제라고 판단했다.
틀렸다. 목표는 구간 안에서도 레벨마다 크게 다르다. 실제로는 400개 중 76개만 벗어났고 크게 튄 건 6개뿐이었다.
최고 어려움인데 벽이 하나도 없었다
500탄이 최고 어려움인데 벽 0개, 바구니 15개였다. 측정 수치는 목표 안이었다.
이게 핵심 문제였다. 측정에 쓰는 봇은 한 수마다 확률로 실수한다. 벽 없고 바구니 적은 판에서도 봇은 운이 나쁘면 못 깬다. 그래서 수치는 어렵게 나오지만, 사람이 보면 볼 게 없어서 그냥 풀린다.
측정 지표가 재는 것은 “무작위로 두면 얼마나 실패하나”지 “얼마나 생각해야 하나”가 아니었다.
- 해결: 상위 난이도에 벽·바구니 최소 개수를 뒀다. 수치와 무관하게 지켜야 하는 선이다
원인을 두 번 잘못 짚었다
하한을 넣고 다시 돌렸는데 위반이 그대로 52개였다.
첫 번째 오진 — 두 번 돌린 결과가 완전히 같길래 파일이 섞였다고 봤다. 재생성이 도는 중에 새로 시작한 적이 있어서 그럴듯했다. 레벨 파일을 다 지우고 다시 돌렸는데 결과가 또 같았다. 무작위 씨앗이 고정이라 같은 코드면 같은 결과가 나오는 게 당연했다.
두 번째 오진 — 화면에 보이는 난이도와 계획 난이도가 다르다는 걸 발견하고 그게 원인이라고 봤다. 실제로 다르긴 한데 벽이 없는 것과는 상관없었다.
진짜 원인 — 정상 경로가 다 실패하면 떨어지는 안전망이 있는데, 거기서 벽을 아예 안 깔고 만들고 있었다. 앞서 넣은 하한은 정상 경로의 예산에만 걸려서 거기까지 안 닿았다.
규칙을 넣을 때는 그 규칙이 안 닿는 경로가 있는지 봐야 한다. 예외 처리 자리가 대개 그렇다.
하한을 강제했더니 판이 아예 안 만들어졌다
안전망에도 하한을 걸었더니 몇몇 판이 생성 자체를 실패했다. 못 만들면 그 그림이 통째로 버려지고 다른 그림으로 넘어가니, 헐거운 판보다 나쁘다.
- 해결: 하한을 만족하는 배치를 먼저 찾고, 한 바퀴 다 실패하면 하한을 포기하고 받는 2단으로 뒀다
다음에 할 일
- 올린 난이도를 직접 확인 — 400탄대가 한 번에 안 깨지는지
- 스토어 등록물·Play Console (콘텐츠 등급·데이터 보안 양식·타겟층 설정) — 영어 등록정보도 필요
- 배포 전 디버그 모드 제거
- 출시 후: 레벨 동결 — 출시된 레벨을 스냅샷으로 두고 이후 레벨만 추가 생성