Before / After — 무엇이 바뀌었나
리빌드를 마치고 두 화면을 나란히 띄워봤다.

움직임: 레일에서 달리기로
게임플레이가 가장 크게 바뀌었다.
고정점에 부착된 레일 이동을 버리고 아케이드 물리를 깔았다.
키를 떼도 즉시 안 멈추는 가감속, 인공 중력으로 떨어지는 점프가 생겼다.
이제 토끼는 "움직이는" 게 아니라 "달린다".
속도도 고정이 아니게 됐다.
12m/s에서 시작해 내려갈수록 붙어 30m/s에서 멈춘다.
구버전은 처음부터 끝까지 같은 속도라 500m가 그냥 길기만 했는데, 이제는 같은 조작이 깊이에 따라 다른 난이도가 된다.
구조: 실패가 생겼다
실패가 생겼다는 것도 컸다.
하트 3개 제도를 도입해, 뿌리에 부딪히면 하트가 깎이고 다 닳으면 게임 오버다.
피격 후에는 1.5초 무적을 줘서, 한 번 부딪힌 자리에서 연달아 깎이는 억울한 상황을 막았다.
줍기만 하던 당근에 의미가 붙도록 콤보를 얹었다 — 연속 수집 5/10/20개에서 점수 배수가 ×2/3/5로 오른다.
export const comboMultiplier = (count: number) =>
count >= 20 ? 5 : count >= 10 ? 3 : count >= 5 ? 2 : 1;
이 세 칸이 하는 일은 "안전하게 갈지, 욕심낼지"를 계속 묻는 것이다.
콤보가 쌓일수록 다음 당근 하나의 가치가 커지니, 위험한 위치의 당근을 주우러 갈 이유가 생긴다.
황금당근은 8초간 자석을 켜 주변 당근을 빨아들이고, 장애물을 아슬하게 스치면 니어미스 보너스가 붙는다.
전부 "피하기만 하면 되는 게임"을 "잘 피하면 더 받는 게임"으로 바꾸는 장치다.
비주얼: 회색 플라스틱을 걷어내고
비주얼은 회색 플라스틱을 걷어내고 툰 셰이딩으로 바꿨다.
그라데이션 안개와 블룸이 황혼 굴 무드를 만든다.
모델을 더 정교하게 만든 게 아니라, 오히려 더 단순한 프리미티브로 바꾸고 칠하는 방식을 바꾼 결과다.
27MB에서 0바이트로
가장 흐뭇한 수치는 따로 있다.
외부 에셋이 27MB에서 0바이트가 됐다.
스탠포드 버니 모델도 PBR 텍스처도 전부 지우고, 토끼·터널·당근을 코드로만 빚었다.
받을 게 없으니 첫 로딩이 그만큼 가볍다.
대가도 분명하다.
모델링 툴에서 30분이면 될 형태를 좌표를 손으로 맞춰가며 만들어야 하고, 부위가 몸 안에 파묻히는 문제를 매번 눈으로 확인해야 한다.
표현할 수 있는 형태의 상한도 낮다.
사실적인 캐릭터를 원했다면 이 방식은 애초에 불가능했다.
그래도 이 게임에는 맞는 교환이었다.
목표가 사실감이 아니라 귀여움이었고, 귀여움은 단순한 형태와 잘 지내기 때문이다.
그리고 형태가 코드라서 색과 비례를 런타임에 바꿀 수 있게 됐는데, 이게 나중에 털색 열한 종과 액세서리 상점으로 이어졌다.
에셋이었다면 변형마다 파일을 따로 준비했어야 했을 것이다.
같은 게임이 아니게 됐다
같은 게임을 다시 만든 게 아니라, 사실상 다른 게임이 됐다.
옮겨온 건 코드가 아니라 "토끼가 굴을 달린다"는 발상 하나였다.
돌아보면 리빌드에서 실제로 오래 걸린 건 코드를 쓰는 시간이 아니라 기준을 정하는 시간이었다.
무드를 문장으로 적고, 색을 몇 개로 줄이고, 엔진을 안 쓰기로 정한 그 며칠이 이후 모든 선택을 빠르게 만들었다.
다음 편부터는 이 결과를 어떻게 만들었는지 하나씩 뜯어본다.
먼저 코드로 빚은 토끼 몸통이다.