DEV NOTE · FOURSTEP

다리 넷 달린 생명체에서 기하 코어로: 핍 리디자인과 1.2.0의 속도감

FOURSTEP 1.0.0의 주인공 핍은 위아래로 다리 네 개가 달린 작은 생명체였습니다. 공개 당일 나온 1.1.0에서 그 다리와 얼굴을 모두 걷어 내고 금속과 유리로 된 기하학적 코어로 바꿨습니다. 이어 1.2.0에서는 속도 조절, 카메라 롤과 줌, FEVER, CLOSE!, 코스 맵을 더했습니다. 두 버전 모두 같은 질문에서 출발했습니다. 이 게임은 어떤 인상을 줘야 하는가.

1.0.0의 핍

첫 설계 문서에서 핍은 "위아래로 네 개의 다리를 가진 작은 생명체"였습니다. 다리 넷이라는 설정은 메카닉과 맞물려 있었습니다. 들판의 RUNNER는 아래 다리 둘로 달리다가 천장에 닿으면 위 다리 둘로 매달려 거꾸로 달립니다. 땅굴의 DIGGER는 발톱 넷으로 파고, 바다의 JELLY는 촉수 넷을 흔들고, 산의 GLIDER는 위 한 쌍이 날개, 아래 한 쌍이 꼬리깃이 됩니다. 코드에도 형태별 다리 그리기 함수가 따로 있었고, 달리는 위상에 맞춰 다리가 움직이고 눈이 깜빡였습니다.

개념으로는 깔끔했습니다. 다만 완성된 화면은 둥근 몸에 눈과 볼터치, 가는 다리가 붙은 귀여운 캐릭터에 가까웠습니다. 게임 전체가 주려는 인상과 이 캐릭터의 인상이 맞는지가 바로 문제로 떠올랐습니다.

유치함을 걷어 내기로 한 결정

FOURSTEP의 디자인 방향은 이 시점에 하나의 기준으로 정리되었습니다. 귀엽고 유치한 캐릭터는 피하고, 고급스럽고 세련된 인상을 준다는 것입니다. 이 기준은 이후 버전에서도 계속 지키는 원칙이 되었습니다.

선택지를 따져 보면 다리를 유지한 채 색과 선만 다듬는 방법은 실루엣이 그대로라 인상이 크게 바뀌지 않고, 사람형 캐릭터는 네 가지 기하 형태로 변신하는 설정과 맞지 않습니다. 최종안은 생명체라는 설정 자체를 내려놓고, 각 형태를 단단한 물체로 만드는 것이었습니다. 1.1.0 커밋 메시지는 이렇게 요약합니다. 만화 같은 팔다리와 얼굴을 빼고, 네 형태를 깎인 면의 금속과 유리 몸체에 가는 빛 바이저를 단 모습으로 바꾼다.

형태별로는 다음과 같이 대응시켰습니다. RUNNER는 모서리를 깎은 베벨 큐브로, 바닥이나 천장에 닿은 면에 자기장 같은 빛이 생기고 공중에서는 스러스터가 분사됩니다. DIGGER는 회전하는 링을 두른 육각 프리즘에 드릴 셰브런과 헤드램프를 달았습니다. JELLY는 안에 코어가 보이는 유리 구체로, 헤일로 링과 에너지 스트리머가 촉수의 역할을 대신합니다. GLIDER는 델타 기체에 각진 블레이드 날개와 애프터버너를 붙였습니다. 다리가 하던 일, 즉 "지금 무엇에 붙어 있고 어느 방향으로 힘을 쓰는가"를 빛과 분사로 옮긴 셈입니다.

표정이 사라지면서 생긴 공백은 바이저 하나로 메웠습니다. 몸통을 가로지르는 가는 빛의 띠인데, 깜빡임은 바이저가 가늘어지는 것으로 표현하고 실패하면 바이저가 꺼집니다. 예전에는 실패 시 눈이 X자로 바뀌었는데, 이제는 몸체에 균열이 그어집니다. 수집 아이템인 음표도 둥근 ♪ 구슬에서 회전하는 황금 결정체로 바꿨습니다. 색은 형태마다 하이라이트, 본색, 그림자 세 단계의 금속 그라데이션으로 칠하고 왼쪽 위 면에 림 라이트를 넣어 입체감을 냈습니다.

빛 바이저가 달린 붉은 베벨 큐브 형태의 핍이 네온 들판을 달리는 모습
1.1.0 이후의 RUNNER. 팔다리와 얼굴 없이 베벨 큐브와 가는 빛 바이저만으로 표현한다.

1.2.0: 속도를 느끼게 하는 카메라

캐릭터가 세련되어지자 다음으로 아쉬운 것은 속도감이었습니다. 1.2.0은 속도 배율을 100~200%로 고를 수 있게 하면서, 빨라진 것을 눈으로 느끼게 하는 장치를 여럿 넣었습니다.

먼저 시야입니다. 화면 배율은 S = 기본 크기 × 줌 / (1 + 0.1(s − 1))로, 속도 배율 s가 2이면 약 9% 더 넓게 보입니다. 빨리 달릴수록 앞을 더 멀리 보여 주는 것이고, 히어로의 가로 위치도 왼쪽으로 조금 당겨 앞쪽 시야를 확보합니다. 플레이어가 직접 조절하는 줌은 60~160% 범위입니다.

다음은 롤, 즉 화면 기울기입니다. 목표 기울기는 세로 속도에서 나옵니다. GLIDER는 상승·하강할 때 더 크게 기울고 점프나 수영 중에는 작게 기웁니다. 여기에 실패 같은 사건이 생기면 회전 속도에 충격을 더합니다. 이 값은 스프링처럼 목표를 따라가고, 최대 ±0.14라디안(약 8도)으로 제한합니다. 화면을 돌리면 네 모서리에 빈 공간이 보이므로, 기울기에 비례해 화면을 1 + |롤| × 0.9배 확대하는 오버스캔으로 가립니다. 여기에 박자마다 화면이 살짝 커졌다 돌아오는 비트 펌프, 착지·드럼·변신 때의 흔들림을 얹었습니다. 기기에서 동작 줄이기를 켰거나 MOTION을 LOW로 두면 롤은 0으로 고정됩니다.

FEVER와 CLOSE!: 보상의 리듬

FEVER는 PERFECT가 8번 이어지면 켜집니다. PERFECT는 입력이 반 박자 격자에서 0.09박 이내일 때 나오므로, FEVER는 "박자에 정확히 맞춰 누르는 플레이"에 대한 보상입니다. 켜지면 음표와 PERFECT 점수가 2배가 되고 궤적이 무지개색으로 바뀌며, 음악은 필터가 열리고 하모니와 아르페지오가 더해집니다. 0.2박 넘게 어긋나 콤보가 끊기면 바로 꺼집니다.

CLOSE!는 반대 방향의 보상입니다. 판정 상자가 장애물에서 가로·세로 모두 0.22칸 이내로 스치고 지나가면 발동합니다. 장애물의 절반을 지난 뒤에만 판정해 아직 위험한 상황에서 축하하지 않도록 했고, 같은 장애물에서 연달아 나오지 않게 간격을 둡니다. 발동하면 25점과 함께 화면이 60ms 멈추는 히트스톱이 들어갑니다. 아슬아슬했다는 감각을 아주 짧은 정지로 확인시켜 주는 장치입니다. 점수 계산식 전체는 게임 가이드에 정리했습니다.

미니맵과 코스 맵

원버튼 러너에서 실패가 반복되면 "얼마나 남았지"가 가장 궁금해집니다. 1.2.0은 HUD 상단에 미니맵을 넣어 지형 구간, 장애물, 음표, 현재 위치를 보여 주고, 일시정지와 결과 화면에는 코스 전체 지도와 최고 기록 지점(BEST)을 그립니다. 코스가 시드로 생성되기 때문에 지도도 레벨 데이터에서 그대로 그릴 수 있었습니다. 성능 쪽에서는 그래픽 품질 AUTO가 3초마다 프레임 속도를 재서 38프레임 아래면 글로우와 입자를 줄이고 55프레임을 넘으면 되돌립니다. 연출이 늘어난 만큼 저사양 기기에서 박자를 놓치지 않게 하려는 것입니다.

정리

1.1.0의 리디자인은 그림을 바꾼 일이지만, 실제로는 게임의 인상을 한 방향으로 모으는 작업이었습니다. 다리와 얼굴이 하던 역할을 접촉 빛, 분사, 바이저, 균열로 옮겨 정보는 남기고 유치함은 덜어 냈습니다. 1.2.0은 그 위에 속도에 반응하는 카메라와 정확함·아슬아슬함에 대한 보상을 얹어, 빨라진 템포를 몸으로 느끼게 했습니다. 이 기준은 앞으로 FOURSTEP에 무엇을 더하든 먼저 확인하는 질문으로 남아 있습니다.