
블로그
게임 공략과 토끼·굴 이야기, 그리고 개발기를 기록합니다.

React Three Fiber로 끝없이 휘는 터널 만들기
Rabbit Hole의 굴은 끝없이 휘지만, 실제로는 재활용되는 벽 세그먼트 여섯 개와 TubeGeometry가 전부다. 경로가 어떻게 동작하는지, 게임 로직이 왜 곡선을 무시하는지, 그리고 첫 판에만 엉뚱한 터널이 나오던 버그.

React Three Fiber 프레임 드랍 잡기
부드럽던 R3F 씬이 커질수록 끊기는 이유(useFrame 안의 할당, 프레임마다 setState, mount/unmount 낭비)와, 프레임 예산을 지키는 재사용 객체·풀링·ref 뮤테이션 패턴.

Upstash Redis로 서버리스 게임 리더보드 만들기
브라우저 게임의 글로벌 리더보드를 Upstash Redis 하나로 — best-per-player sorted set, 표시 데이터용 짝꿍 해시, 롤링 TTL, 비용 상한 트림, 그리고 서버리스 인스턴스끼리 공유돼야 하는 레이트리밋.

땅속에 사는 동물들 — 그리고 두더지가 장애물이 된 이유
두더지·프레리도그·오소리의 지하 생활, 그리고 그중 두더지만 게임의 장애물이 된 설계 이야기.

토끼는 정말 당근을 좋아할까 — 그리고 게임 속 당근이 하는 일
토끼와 당근이라는 이미지의 출처, 그리고 그 당근이 게임에서는 먹이가 아니라 길잡이가 된 이유.

문화 속 토끼, 그리고 '토끼굴'의 유래 — 굴 세 개의 출처
달토끼부터 부활절 토끼까지, 그리고 그 이미지들이 게임 속 굴 세 종류가 된 과정.

토끼는 왜 굴을 팔까 — 그리고 그 굴을 게임에 어떻게 옮겼나
진짜 토끼 굴 '워런'의 구조와, 그것을 끝없는 러너의 터널로 번역하면서 버린 것과 남긴 것.

캐럿 코인 모으기와 모카 꾸미기
코인이 들어오는 곳과 나가는 곳을 전부 정리하고, 무엇부터 사면 좋은지까지.

콤보가 점수를 만든다 — 콤보 유지 가이드
2초 안에 당근을 잇기만 하면 점수가 배로 뛴다. 배수 구조와 자석·트램폴린 연계, 그리고 콤보를 일부러 놓아야 할 때까지.

오늘의 굴 — 매일 같은 맵을 공략하는 법
데일리 챌린지는 모두에게 똑같은 굴이 나온다. 그래서 외울 수 있고, 그래서 랭킹이 공정하다.

깊이 내려갈수록 빨라진다 — 구간별 생존 전략
출발 12m/s에서 최고 30m/s까지, 속도에 맞춰 달라지는 생존법과 장애물별 대처법.

한 판 점수 끌어올리기 — 고득점의 원리
점수가 어디서 얼마나 나오는지 전부 표로 정리하고, 깊이·콤보·굴 선택을 하나로 꿰는 법.

트램폴린과 회중시계, 제대로 쓰는 법
분홍 버섯과 멈춘 회중시계는 위기를 기회로 바꾸는 장치다. 정확한 높이와 지속시간, 그리고 아껴 써야 할 타이밍.

Rabbit Hole에 오신 것을 환영합니다
끝없는 토끼굴 게임 소개와 조작법, 그리고 이 블로그에 어떤 글이 있는지 한눈에 보는 안내.

Before / After — 무엇이 바뀌었나
레일 산책에서 아케이드 러너로. 리빌드 전후를 나란히 비교하고, 외부 에셋 27MB를 0으로 만든 대가와 이득을 정리한다.
효과음 파일 0개 — Web Audio로 소리 합성하기
오실레이터와 게인 엔벨로프만으로 수집·점프·콤보 효과음을 만든 방법.

프레임 사이로 빠져나간 뿌리 — 충돌과 터널링
구 근사 충돌과 호 장애물 판정, 고속에서 뿌리를 통과해버린 터널링 버그, 그리고 판정 반경과 시각 반경을 일부러 다르게 둔 이유.

무게감의 정체 — 아케이드 이동과 점프
터널 단면 극좌표 위에서 각가속·감쇠·인공 중력으로 손맛을 만든 방법 — 실제 상수값, 속도 램프, 그리고 물리 엔진을 뺀 이유.
빌드는 통과, 화면만 죽는 버그 — React 19·R3F ReactCurrentOwner 크래시 해결
@react-three/fiber v8을 React 19(Next.js App Router)에서 쓰면 나는 'Cannot read properties of undefined (reading ReactCurrentOwner)' 화이트스크린 — 원인과 버전 정렬 해결법.

회색 플라스틱을 벗기는 툰 셰이딩
MeshStandardMaterial 기본값을 버리고 3단 램프 툰으로 굴을 칠한 과정 — 램프 텍스처 공유, 굴마다 다른 조명, 그리고 벽이 통째로 사라져 보이던 문제.

귀여움은 모델이 아니라 모션에서 나온다
호핑·squash&stretch·돌아보기까지 토끼에 입힌 절차적 애니메이션 — 키프레임 대신 코드로 만들 때의 이점과, 상태에서 모션을 끌어내는 방법.

구와 캡슐 14개로 토끼 빚기
외부 모델 없이 프리미티브만으로 치비 토끼를 조립한 방법 — 실제 치수와 비례, 아웃라인 헐, 그리고 부위가 몸 안에 파묻히던 고질병.

재설계 방향 — 귀여움과 손맛을 기준으로
리빌드의 최우선 기준을 문장으로 먼저 박고, 팔레트를 한 곳에 모으고, 물리 엔진을 빼기로 한 이유.

토끼굴을 갈아엎기 전, 구버전 진단
물리도 실패도 없던 구버전이 왜 게임이 아니었는지, 그리고 부분 수리 대신 리빌드를 고른 판단 기준.