Skip to article
EchoPlayroom
Sign in
Blog

BUILD LOG

Everything Works, So Why Doesn't It Feel Like a Game?

Movement, attacks, and scoring all work — yet it still looks like a prototype. The missing part is the response to input, not the art.
EchoPlayroom3 min read

움직이고, 쏘고, 맞으면 점수가 오른다. 기능 목록은 전부 체크가 됐다. 그런데 화면을 한참 보고 있으면 게임이 아니라 아직 프로토타입 같다.

이럴 때 제일 먼저 의심하게 되는 건 보통 그래픽이다. 스프라이트를 다시 그리고, 배경을 바꾸고, 폰트를 고른다. 그런데 바뀌는 건 인상뿐이고 손끝의 느낌은 그대로다. 비어 있는 건 그림이 아니라 입력에 대한 반응이다. 버튼을 눌렀을 때 세상이 그 입력을 알아차렸다는 신호가 없으면, 아무리 잘 그린 화면도 조작판처럼 느껴진다.

그 신호를 채우는 기술을 게임필(game feel), 또는 주스(juice)라고 부른다. 규칙은 한 줄도 바꾸지 않고 반응만 더하는 작업이라, 이미 돌아가는 프로토타입에 얹기 가장 좋다.

가장 값싼 셋

게임필에 들어가는 항목은 수십 가지지만, 처음 넣을 것은 셋이면 충분하다. 세 가지 모두 코드 몇 줄이고, 기존 로직을 건드리지 않는다.

① 히트스톱 — 맞는 순간 시간을 멈춘다

명중한 프레임에서 세계의 시간 배율을 0.1배로 떨어뜨리고, 4프레임(약 67밀리초) 뒤에 원래대로 돌린다. 화면은 멈춘 것처럼 보이지만 실제로는 완전히 멈추지 않아서, 눈에는 「무거운 타격」으로만 읽힌다.

세기는 공격의 무게로 나눈다. 가벼운 공격은 30~50밀리초, 보통은 60~80밀리초, 처형이나 보스 격파처럼 확실한 순간만 120~150밀리초까지 준다.

대신 연사에는 넣지 않는다. 1초에 여러 번 맞히는 무기에 히트스톱을 걸면 조작이 늪처럼 끈적해지고, 플레이어는 이걸 재미가 아니라 렉으로 받아들인다. 연사 무기는 20밀리초 이하로 줄이거나 아예 빼고, 대신 화면 범프와 파티클로 때운다.

하나 더. 멈추는 건 게임 세계뿐이고 UI·입력·남은 시간 차감은 원래 속도(rawDt)로 돌려야 한다. 시간 배율을 전역에 곱해 버리면 히트스톱마다 타이머가 조금씩 느려진다.

② 카메라 범프 — 방향이 있는 3픽셀

화면 흔들림이라고 하면 보통 셰이크를 떠올리지만, 범프는 다른 물건이다. 셰이크는 사인·코사인으로 좌우로 떨리고, 범프는 한 방향으로 밀렸다가 제자리로 돌아온다. 총을 쏘면 카메라가 반대쪽으로 한 번 밀린다 — 그 한 번이 「내가 뭘 했다」는 신호다.

기본값은 발사 3픽셀이다. 대시는 6픽셀, 착지는 낙하 높이에 비례해 최대 10픽셀, 발걸음은 0.5픽셀. 밀린 값은 매 프레임 0.85배씩 줄여 돌려보낸다.

발사에 3픽셀은 너무 작아 보인다. 실제로 화면에서는 거의 안 보인다. 그런데 이걸 빼면 총이 장난감이 되고, 10픽셀로 키우면 조준이 안 된다. 눈에 띄는 순간 이미 과한 값이라고 보면 맞다.

③ 스쿼시 & 스트레치 — 눌렀다가 바로 편다

점프하는 순간 캐릭터의 가로를 0.55배로 좁히고, 세로는 그만큼 늘린다(두 축의 합이 2가 되게 맞추면 부피가 유지되는 것처럼 보인다). 위로 쭉 뻗는 모양이다. 값은 모두 가로 기준이다. 피격은 0.6배, 대시는 1.3배로 납작하게, 발사는 1.2배. 착지는 반대로 세로를 눌러 낙하 높이에 따라 0.9~0.5배까지 준다.

중요한 건 원복이다. 매 프레임 1에 가까워지도록 복원 계수 0.2로 당겨 주면 몇 프레임 안에 원래 모양으로 돌아온다. 늘어난 채로 오래 두면 캐릭터가 고무 인형이 된다.

범위는 0.6~1.4 안에서 쓰고, 넘더라도 0.4~1.6이 한계다. 3D 모델은 훨씬 좁게 0.85~1.15만 써야 형태가 무너지지 않는다.

과하면 이렇게 된다

셰이크를 10픽셀 넘게 키우면 조준이 안 되고, 오래 하면 멀미가 난다.

연사에 히트스톱을 걸면 손맛이 아니라 「렉이 걸렸다」는 인상이 남는다.

스쿼시를 0.4 아래로 밀거나 복원을 느리게 하면 캐릭터가 고무 인형처럼 흐물거린다.

그래서 효과는 한 번에 하나씩 넣고, 껐다 켤 수 있게 남겨 둔다. 증상이 보이면 되돌리면 된다.

AI 에게 시킬 때는 기준표를 넘긴다

요즘은 이 작업도 AI 에게 시키게 된다. 그런데 「좀 더 juicy 하게 만들어줘」라고 하면 대체로 셰이크가 커지고 파티클이 늘어난다. 방향이 없는 지시라서 그렇다.

대신 수치표를 그대로 넘기고 장르와 대상 행동만 지정하면 결과가 안정된다. 히트스톱 67밀리초에 0.1배, 발사 범프 3픽셀, 스쿼시 0.6~1.4 같은 값이 지시 안에 들어 있으면 해석할 여지가 없다.

그래서 기준값만 한 장으로 추린 게임필 치트시트를 따로 만들어 뒀다. 마크다운 파일이라 그대로 복사해 프롬프트에 붙이면 된다.

전체는 가이드에서

여기 적은 건 셋뿐이다. 프레임 독립적인 감쇠 계산, 연출과 히트박스를 분리하는 레이어 구조, 장르별로 넣을 것과 빼야 할 것, 코요테 타임과 입력 버퍼까지 — 나머지는 게임을 더 게임답게 만드는 법에 전부 정리해 뒀다.

이 정리의 출발점은 두 가지다. 하나는 디시인사이드 AI 개발 갤러리에 올라온 게임필 관련 글이고, 다른 하나는 deepnight 의 gamefeel 저장소(MIT 라이선스)다. 여기 적은 수치는 그 두 자료를 우리 작업 환경(웹 JS · 60fps)에 맞춰 정리한 것이다.