[GDC2020] 용서의 매커니즘: 유저의 마음을 읽어라

WSong·2020년 6월 30일
0
post-thumbnail
post-custom-banner

Intro


GDC2020의 발표 중 하나인 Forgiveness Mechanics: Reading Minds for Responsive Gameplay의 내용을 정리, 요약한 글이다.

https://www.youtube.com/watch?v=HCnZhs-92j0&t=156s

게임을 만드는데 "입력이 잘 안먹는다" 라는 말이 나오면 그 게임엔 문제가 있는 것이다. 그럼 입력이 잘 먹는다는 말은 어떤 뜻일까? 오른쪽 방향키를 누르면 항상 캐릭터가 오른쪽으로 가는 것? 그렇지 않다.

게임 디자이너로써 여러분은 플레이어 자신보다 그들을 더 잘 알아야 한다. 플레이어는 일관되지 않다는 것을 이해해야 하고, 실수를 해도 즐거운 시간을 보낼 수 있게 해야한다.

게임에서 몬스터 머리를 밟고 뛰면 더 높이 뛸 수 있는 기능이 있다. 처음에는 머리를 밟는 시점에 점프 버튼이 눌려있는지 여부를 검사해 이 슈퍼 점프를 실행했다. 그랬더니 어떤 경우엔 점프가 가능하고 어떤 경우엔 안 되는 일이 생겼다. 그 원인은 플레이어가 머리를 밟는 타이밍에 점프 버튼을 누르려다 조금 늦게 버튼을 누르는 것이었다. 하지만 플레이어는 타이밍에 맞게 눌렀는데 입력이 안 먹는 것 같은 느낌을 받게된다.

코요테 시간


기존에는 can_jump라는 bool값이 있었다. 슈퍼 점프가 가능한지 불가능한지 여부였다. 이걸 타이머로 바꿔서 머리를 밟은 후 0.1초 정도의 여유 시간을 줘서 문제를 해결할 수 있었다. 같은 방식을 그랩 등 타이밍이 필요한 다른 부분에도 적용했다. 이렇게 조금 늦게 버튼을 눌러도 해당 동작을 허용해 주는 것을 늦은 입력 용서(Late Input Forgiveness)라고 한다. 반대로 너무 빠르게 입력을 하는 경우도 있을 것이다. 이 경우엔 입력을 버퍼에 잠시동안 저장해 잠시 동안 유효하게 만드는 방법이 있다. 빠른 입력 용서(Early Input Forgiveness)라고 부른다. 이렇게 입력에 두는 여유 시간을 코요테 시간(Coyote Time)이라고 한다.

입력 초기화


만약 플레이어가 잘못된 버튼을 누르면 어떻게 될까? 게임에서 점프를 하며 아래 버튼을 누르면 아래 있는 물건을 집어오는 기능이 있다. 이 때문에 점프 후 계속 아래 버튼을 누르고 있어서 바닥에서 아래로 내려가는 일이 생겼다. 점프할 때 기존 아래로 가는 입력을 무시하도록 하면 비록 입력과 다르게 동작하지만 플레이어는 자신의 생각대로 올바르게 동작했다고 느낀다. 이를 입력 초기화(Input Reset)라고 한다. 플레이어는 가끔 버튼에서 손 떼는걸 까먹고 이를 바로잡아 주는 것은 디자이너의 몫이다.

입력 지연


플레이어가 아예 잘못된 버튼을 누르는 경우도 있다. 스테이지 다시 플레이를 쉽게 하기 위해 LB 버튼에 다시 하기 버튼을 넣었는데 플레이어가 LB 버튼에 검지를 올리고 있다가 긴장되는 상황에서 자신도 모르게 누르는 경우가 있었다. 버튼을 0.3초 이상 누르고 있어야 다시시작 하도록 변경 후 자신도 모르게 게임이 다시 시작한다는 리포트가 사라졌다.

히트박스 압축


처음에 히트박스를 정확히 한 칸 크기로 만들었더니 이동 중 캐릭터가 바닥에 빠지거나 점프로 좁은 공간을 벗어나기가 매우 어려웠다. 히트박스 끼리 부딪히면 무조건 반응하기 때문에 히트박스의 크기가 딱 맞으면 조금만 빗겨나도 충돌이 일어난다. 이를 해결하기 위해 히트박스 압축(Hitbox Pinching)을 사용해 이동하는 방향으로 히트박스를 좁게 압축한다. 이렇게 하면 앞으로 이동중일 땐 히트박스가 공중에 떠있으므로 바닥의 구멍과 부딪히지 않는다. 좁은 곳으로 점프할 때에도 가로로 좁아져서 쉽게 통과가 가능해진다.

다른 히트박스 트릭


히트박스의 모양이나 크기도 좋은 도구이다. 나쁜 요소들은 실제 눈에 보이는 것 보다 히트박스를 작고 둥글게 만든다. 반대로 좋은 요소들은 히트박스를 크게 만들어서 먹기 쉽게 한다. 이렇게 하면 자연스럽게 유저하게 유리한 상황을 만들어줄 수 있다.

크기만으론 충분하지 않을 때도 있다. 이럴 땐 자석 효과를 사용하기도 한다. 예를 들면 플레이어가 빠르게 움직이거나 떨어질 때 주변의 보석들을 쉽게 먹게 하기 위해 사용할 수 있다.

가장 유리한 결과


무언가를 결정할 때 플레이어에게 유리한 방향으로 동작하도록 해준다. 예를 들어 몬스터의 머리를 밟으면 데미지를 주고, 몬스터의 몸통에 닿으면 데미지를 입는 경우 머리 밟기 체크를 먼저 하고 데미지를 처리하는 식으로 애매한 경우 유저에게 유리하게 동작하도록 해주는 것이 좋다.

소감


게임에서 많이 사용하는 트릭들을 알기 쉽게 설명해주고, 영상 및 예제와 같이 보여줘서 좋았다.

profile
개발새발
post-custom-banner

0개의 댓글