밟으면 사라지는 구름은 길에 놓지 않았다
2026년 10월 25일 · 게임 디자인 · English
구름 점프에는 세 종류의 구름이 있다. 흰 구름은 밟으면 튀어 오르고, 파란 구름은 좌우로 움직이며 튀어 오른다. 회색 구름은 밟으면 흩어지면서 사라지고, 병아리는 튀지 않고 그대로 떨어진다. 이 회색 구름을 게임에 어떻게 넣었는지 적는다.
구름 점프는 <canvas> 에 그리는 게임이고, 구름은 위로 올라가면서 무작위 위치에 계속 새로 만들어진다. 구름의 가로 위치는 무작위, 높이 간격은 점프로 닿는 범위로 정해진다(이 규칙은 앞 글에 적었다). 이 글의 구름은 그 규칙 위에 얹는 장애물이다.
위로 올라가기만 하는 게임은 단조롭다. 밟으면 사라지는 구름이 있으면 어느 구름을 밟을지 골라야 하고, 점프하는 순간에도 눈을 떼지 못한다. 그래서 회색 구름을 넣었다.
문제는 이 구름이 길에 들어가는 순간 생긴다. 지난 글에서 적었듯 구름 점프는 구름 사이 간격에 한계를 걸어서, 위쪽 구름이 언제나 점프로 닿게 해 두었다. 그런데 그 규칙이 회색 구름에도 적용되면 이런 판이 나올 수 있다. 다음 구름이 회색 구름 하나뿐이다. 거기에 닿아도 튀어 오르지 못하고 떨어진다. 위로 이어지는 길이 사라진 것이다. 플레이한 사람은 아무 잘못이 없는데 판이 끝난다.
그래서 구름을 두 가지로 나눴다. 길이 되는 구름은 흰 구름과 파란 구름이다. 이 구름들만으로 항상 위로 올라갈 수 있게 간격을 정한다. 회색 구름은 길과 상관없이 덤으로 얹는다. 길 구름을 놓을 때 그 위쪽 25~45px 높이에 확률적으로 하나를 더 놓는 식이다. 게임 코드에서 줄인 것이다.
if (rnd() < Math.min(0.3, 0.08 + height / 2500)) {
plats.push({ x: rand(PW / 2, W - PW / 2), y: y - rand(25, 45), kind: 'crumble' });
}
확률은 처음에 8% 에서 시작해 높이가 올라갈수록 늘어나고, 30% 에서 멈춘다. 회색 구름이 아무리 많아져도 길은 그대로이므로 못 올라가는 판은 생기지 않는다.
그래도 함정이다
길과 상관없이 놓는다고 해서 의미가 없는 것은 아니다. 회색 구름은 길 구름 바로 위쪽에 있어서 눈에 잘 띈다. 가까이 있으니 밟고 싶어지고, 밟으면 튀지 않고 떨어진다. 떨어져도 그 아래쪽에 길 구름이 있어서 다시 올라올 기회는 있다. 다만 시간을 잃고, 움직이는 구름이나 천둥구름 근처에서는 그 짧은 시간이 위험하다.
함정이 실패를 강요하지는 않고, 선택을 하나 더 만들어 준다. 이 차이가 공정한 함정과 불공정한 함정을 가른다고 생각한다.
회색 구름은 흰 구름과 헷갈리지 않아야 한다. 헷갈리면 사람은 이유를 모른 채 밟고 떨어진다. 그림을 만들 때 금이 간 베이지색 회색으로 그리고 부스러기를 붙였다. 천둥구름도 어두운 보랏빛이라 회색 구름과 색이 비슷했는데, 휴대폰에서 둘이 헷갈려서 천둥구름의 밝기와 색을 더 멀리 벌렸다.
구름이 어떤 간격으로 놓이는지는 다른 글에서 적었다.
참고한 문서
- Wikipedia, Procedural generation: https://en.wikipedia.org/wiki/Procedural_generation
이 글과 관련된 게임
다른 글
- 배포했는데 한 시간 동안 예전 페이지가 보였다 2026년 10월 25일
- 구름이 닿지 않는 판은 왜 나오지 않을까 2026년 10월 25일
- 바탕을 지웠는데 분홍 띠가 남았다 2026년 10월 25일
- 하루에 세 번 바꾼 배포 제외 규칙 2026년 10월 25일
- 게임 화면에 fps 를 띄우는 열 줄짜리 코드 2026년 10월 25일
