rejin 아바타

서브컬처 게이머

세상의 모든 아름다운 것들을 위하여

touch gestures screenshot.v1 jpg

트리거 기획하기 – 게임 모션 기획 업무 가이드 #3

게임 모션 기획에서 가장 재미있으면서도 골치아픈 지점이 바로 트리거를 설정하는 일이다. 트리거 기획이란, 플레이어가 만약 어떤 행위를 했을 때(If) 그에 맞게 게임에서는 어떤 반응을 하게 할지, 예를 들어 캐릭터가 어떤 동작을 할지 그 피드백을 정하는 일이다. 트리거 기획이 엉성하다면 플레이어가 기대한 결과를 충족하기는 커녕, 플레이어는 혼란스러워할 수도 있다. 어찌 보면 트리거 기획이야말로 이번 게임 모션 기획 가이드 시리즈 중에서 가장 중요한 기획 단계라고 할 수 있다.


(혹시라도 이전 글을 못 보고 오신 분은 아래의 이전글 보기를 통해 보고 오시면 좋습니다.)


1. 플레이어의 행위 예측하기

게임을 하는 건 유저가 아니라 플레이어

게임을 플레이하는 사람은 누굴까? 너무나도 자명한 물음이지만, 다름아닌 ‘플레이어’이다.

(게임) 업계에서는 고객을 지칭하는 표현으로 ‘유저(User)’라는 말을 흔히 사용하지만 나는 플레이어라는 표현을 더 좋아한다.

게임은 사용(use)하는 개념이 아니라 즐기는(play)하는 대상이기 때문에 플레이어라는 표현이 조금 더 정확하다고 생각하기 때문이다.

그렇다면 플레이어가 게임을 ‘어떻게’ 플레이할 수 있을까?

20년 전의 게임 플레이 방식과 지금의 게임 플레이 방식이 정확히 일치할까?

(모바일) 터치 게임 시대의 도래

모바일 게임은 매년 가파른 성장세를 보이며, 이제는 명실상부 전세계에서 가장 대중적인 게임 플랫폼으로 우뚝 섰다.

2021년 한콘진의 발표에 따르면, 2017년 약 6조원대였던 국내 모바일 게임 시장은 2021년 12조원대로, 5년도 채 되지 않아 두 배로 성장했다.

이제는 모바일 게임이 우리나라의 가장 흔한 게임 플랫폼이라고 해도 과언이 아니게 되었다.

20년 전, PC방에서 키보드와 마우스로 패키지 게임을 즐기던 트렌드는 이제 완전히 모바일 게임에 그 왕좌를 넘겨준 셈이다.

게임을 즐기는 주된 플랫폼이 모바일로 이동함에 따라, 게임을 조작하는 방식도 터치 스크린이 주된 조작 매개체가 되었다.

콘솔 기기의 조이스틱이나 PC 환경에서 마우스와 키보드로 조작하던 방식보다는 이제는 터치를 통한 조작이 대중화된 시대가 된 것이다.

모바일 조작 이해하기

스마트폰을 조작하는 방식은 전혀 낯선 풍경이 아니다.

대다수의 현대인은 스마트폰을 가지고 있고, 하루에도 몇십 번 이상 원하는 조작을 위해 스크린을 터치하기 때문이다.

터치는 굉장히 편리하고 직관적인 조작이다. 내가 원하는 동작을 실행하기 위해서는 그저 내가 원하는 부분을 터치하기만 하면 된다.

그런데 사실 터치 하나에도 생각보다 다양한 세부 조작 방식이 존재한다.

스마트폰을 조작하는 다양한 방식에 대해서 정리된 표를 가져와보았다.

트리거 기획하기 - 터치의 유형 10가지
https://www.powermockup.com/

스마트폰을 조작하는 방식에는 크게 위의 10가지 방식이 있다.

한 번 두드리거나(Tap), 한 지점을 꾹 누르거나 (Long Press), 두 손가락을 좁히거나 벌림으로써 각기 다른 조작을 할 수 있다. (Pinch, Zoom)

이러한 조작은 게임에서도 마찬가지로 적용된다.

만약 플레이어가 캐릭터를 한번 터치했을 때(Tap) 대사와 모션을 한다고 가정하자.

그렇다면 플레이어가 화면을 한번 탭 하는 대신에 꾹 눌렀을 땐 어떻게 해야 할까?

두 손가락으로 Zoom 했을 때는? 두 손가락으로 Rotate 했을 때는 어떻게 해야할까?

우리는 그 모든 행위를 예측해서 적용할 수 있을까?

트리거 기획은 플레이어가 할 수 있는 행위를 따져보는데서 출발한다.


2. 캐릭터를 가지고 노는 상황 이해하기

행위의 목적 파악하기

플레이어가 어떤 행위를 했다면 그 행동에는 목적(Purpose)이 있다.

예를 들어, 탭을 했을 때 캐릭터가 대사를 하는지, 아니면 어떤 동작을 취하는 지 궁금해서 탭을 해볼 수 있다.

이러한 플레이어의 행위는 자신의 행위(탭)에 따른 어떠한 피드백(대사 또는 모션)이 있는지 알아보기 위한 탐색의 한 과정이다.

탭을 했을 때 캐릭터가 아무런 동작을 하지 않는다면 플레이어는 ‘아, 이 게임은 캐릭터를 탭 해도 아무 변화가 없네?’라고 학습하게 된다.

의심이 많은 플레이어는 다른 캐릭터도 탭 해보겠지만 이번에도 탭을 했을 때 반응이 없다면 이 게임에서는 캐릭터 탭이 아무런 의미가 없음을 확실하게 인식한다.

대표적인 행위가 탭일 뿐, 꾹 누르거나 두 손가락으로 조작을 하는 행위 또한 플레이어가 그러한 행위를 함으로써 어떠한 피드백을 받아내기 위함이다.

트리거 기획을 할 때에는 이처럼 플레이어가 어떤 행위를 할 지 예측하고, 그것이 플레이어의 의도대로 잘 실행되도록 적용해야 한다.

트리거 기획자는 플레이어가 취하는 동작의 기댓값을 이해하고 그대로 반영해야 한다.

플레이어가 기대하는 결과는 대표적으로 어떤 게 있을까?

플레이어가 기대하는 결과를 만족시키기 위해서는 어떻게 조작하는 게 가장 적절할까?

플레이어의 기댓값에 초점을 맞추자

플레이어가 게임에서 화면을 조작할 때의 경험이 다른 앱 환경에서 경험했던 UX를 거스르면 안 된다.

플레이어가 게임에서 자신의 게임 캐릭터를 더 가까이 들여다보고 싶다고 가정하자.

플레이어의 기댓값은 바로 Zoom을 했을 때 ‘캐릭터를 더 가까이 들여다보는 것’이다.

일반적인 앱에서는 두 손가락을 멀어지게 하는 Zoom 동작을 취하면 현재 사용자가 보는 화면의 특정 지점이 확대되는 결과값을 보여준다.

따라서 플레이어는 게임에서도 캐릭터를 중심으로 두 손가락을 좌우로 벌리는 Zoom 동작을 취할 것이다. Zoom의 기댓값이 바로 특정 지점(캐릭터)의 확대이기 때문이다.

그런데 이때 캐릭터가 특정 방향으로 회전하거나, 캐릭터가 더 멀어진다면 어떨까? 당연히 플레이어는 혼란을 느낀다.

Zoom을 했을 때의 경험이 플레이어가 기대한 결과와 완전히 달랐기 때문이다.

차라리 Zoom의 결과 화면에 아무런 변화가 없다면 플레이어는 ‘아, 이 화면에서는 Zoom이 지원되지 않는구나.’라는 사실을 학습한다.

즉, 플레이어의 기댓값에 따라서 아래와 같이 정리할 수 있다.

  • 플레이어의 기댓값 = 결과 : 이 동작은 익숙하다 (다른 앱에서의 경험과 비슷해서 이해하기 편하다)
  • 플레이어의 기댓값 <> 결과 : 이 동작은 낯설다(다른 앱에서의 경험과 달라서 혼란스럽다)
  • 플레이어의 기댓값 = 결과 없음 : 이 동작은 의미가 없다(Null)

즉, 플레이어는 어떤 결과를 기대한 채 화면을 조작할 것이며, 따라서 트리거 기획자는 플레이어의 기대(직관)를 거스르지 않는 결과값을 보여줄 수 있게 트리거를 설정해야 한다.

그렇다면 플레이어가 스크린에서 취할 대표적인 행위에는 어떤 게 있을까?


3. 플레이어가 게임에서 취하는 대표적인 동작들

아래는 플레이어가 게임이 아닌 일반적인 앱(예: 은행 앱, 지도 앱 등)에서 화면을 터치하는 방법과 그 기댓값을 나열한 것이다.

앱 터치 동작과 그 결과값

  • 한번 탭하기: 해당 버튼을 실행한다. (Positive)
  • 두번 탭하기: 해당 터치 위치를 중심으로 화면을 확대/축소한다.
  • 버튼 홀드하기: 숨겨진 메뉴나 기능을 동작하게 한다.
  • 손가락 끌기(Panning): 첫 터치 위치를 중심으로 손가락이 이동하는 방향으로 오브젝트를 회전시키거나 이미지를 이동한다.
  • 손가락 쓸기(Swiping): 화면을 스크롤한다. Panning에서 스크롤을 지원하기도 한다.
  • 손가락 드래그(Dragging): 화면 위에 있는 어떠한 대상(개체)을 꾹 눌러, 그 대상을 손가락을 뗀 위치로 이동시킨다.
  • 두 손가락 모으기(Pinch in): 두 손가락이 모이는 지점을 중심으로 화면을 축소한다.
  • 두 손가락 멀리하기(Pinch out): 두 손가락이 멀어지는 지점을 중심으로 화면을 확대한다.
  • 두 손가락 회전하기(Rotate): 두 손가락을 돌리면 그에 맞춰 스크린의 내용이 반대 방향으로 회전한다.

위 동작은 어디까지나 게임이 아니라 일반적인 앱임을 기억하자.

그렇다면 위의 동작을 게임에서 똑같이 진행한다고 가정한다면, 플레이어는 어떤 결과값을 얻어낼 수 있을까?

게임 터치 동작과 그 결과값

  • 한번 탭하기: 해당 버튼을 실행한다. (캐릭터가) 점프한다. (총이나 칼 따위로) 공격한다.
  • 두번 탭하기: (캐릭터가) 두 번 점프한다.
  • 버튼 홀드하기: 가방(인벤토리)을 연다.
  • 손가락 끌기(Panning): (맵을 띄워놓은 상태라면) 현재 보고 있는 맵의 위치를 이동한다.
  • 손가락 쓸기(Swiping): (현재 기록물을 읽고 있다면) 기록물을 스크롤한다.
  • 손가락 드래그(Dragging): (스킬 아이콘이 있다면) 스킬을 지정한 범위에 시전한다. (현재 화면에서) 캐릭터를 회전시킨다.
  • 두 손가락 모으기(Pinch in): (현재 화면에서) 캐릭터의 크기를 축소한다.
  • 두 손가락 벌리기(Pinch out): (현재 화면에서) 캐릭터의 크기를 축소한다.
  • 두 손가락 회전하기(Rotate): (맵을 띄워놓은 상태라면) 현재 보고 있는 맵을 회전시킨다.

위의 볼드체로 된 부분은 게임에서만 동작하는 결과값이다.

그 외의 부분(예: 손가락 쓸기 등)은 다른 앱에서 기대하는 동작과 거의 비슷한 맥락의 동작이거나 기대값이 일치한다.

게임에서의 결과값은 큰 틀에서 앱을 터치할 때 사용자가 기대하는 결과값과 크게 다르지 않다.

트리거 기획을 원활하게 하기 위해서는 일반적인 앱에서도 어떻게 사용자 조작 UX가 구현되어 있는지 비교하는 것도 도움이 된다.

다시 말해, 트리거 기획은 사용자 직관을 거스르지 않는 결과를 보여주기 위한 기획이라고도 말할 수 있다.


4. 플레이어의 기대값과 결과값 서로 연결짓기

트리거 기획하기 - 원신 캐릭터 정보 화면

위 화면은 원신의 캐릭터 정보 화면이다.

실제 원신에서는 위 화면에서 버튼을 제외한 모든 조작의 결과값이 출력되지 않는다. 즉, 캐릭터를 터치하거나 드래그해도 아무런 반응이 없다.

내가 위 화면에서 트리거 기획을 맡은 UX 기획자라고 가정하고, 위의 상황을 개선하기 위해서는 어떻게 할 수 있을지 한번 생각해보자.

플레이어의 기대값 나열하기

위 화면에서 플레이어는 어떤 행동을 할 것이라고 기대할 수 있을까?

플레이어는 캐릭터가 어떠한 모션이나 대사를 할 것을 기대하고 탭을 해볼 수도 있고, 홀드(꾹 누르기)를 해볼 수도 있고, 캐릭터를 돌려보기 위해 좌 우로 쓸기(Swiping)을 해볼 수도 있다.

캐릭터를 더 가까이서 보기 위해 두 손가락을 벌려보거나 반대로 두 손가락을 모으는 Pinch in / Pinch out을 해볼수도 있다.

두번 탭이나 Rotate는 아마 하지 않을 것이다. 그 조작을 통해 얻어낼만한 결과가 위 화면과는 그다지 어울리지 않기 때문이다.

정리해보자. 플레이어의 기대값은 아마 아래처럼 나열할 수 있을 것이다.

  • 한번 탭하기
  • 버튼 홀드하기
  • 좌, 우로 손가락 쓸기(Swiping)
  • 두 손가락 모으기
  • 두 손가락 벌리기

보여줄 수 있는 결과값 나열하기

그렇다면 이번엔 우리 게임에서 준비된 결과값을 한번 나열해보자.

사실 위의 예시에 해당하는 ‘원신’에서는 플레이어의 위 조작에 대한 어떠한 결과값도 준비되어 있지 않다.

그러니 우리는 임의로 ‘캐릭터 터치 모션’, ‘캐릭터 터치 대사’, ‘캐릭터 좌우 회전’, ‘캐릭터 확대/축소’를 지원한다고 가정하자.

나열해보면 아래와 같다.

  • 캐릭터 터치 모션
  • 캐릭터 터치 대사
  • 캐릭터 좌우 회전
  • 캐릭터 확대
  • 캐릭터 축소

위의 네 가지 옵션이 바로 우리 게임에서 지원하는 (가상의) 기능이다.

기대값과 결과값 연결하기

플레이어의 기대값의 종류는 다섯 가지이고, 우리가 보여줄 수 있는 결과값도 다섯 가지이다.

단순히 생각하면 각 기대값과 결과값을 1:1 대응시키면 우리의 고민은 해결된다.

그런데 자세히 살펴보면 이 기대값과 결과값에서 다소 조정이 필요한 부분이 있다.

사실 모션과 대사는 한 세트이다. 따라서 결과값의 수는 5개가 아닌 4개가 된다.

그렇다면 기대값에서 한 가지 동작을 포기해야 한다. 기대값이 하나 남기 때문에 남는 하나는 자연히 포기해야 한다.

아니면 이런 방법도 있다. 버튼 홀드하기 동작의 결과를 한번 탭하기와 동일한 결과로 출력시키는 것이다.

이렇게 하면 플레이어가 캐릭터를 터치하거나, 또는 꾹 누르면 동일한 동작이 출력된다.

어찌보면 이쪽이 더 직관적일 수 있으니 터치 동작과 터치 홀드 동작이 동일한 결과를 할 수 있도록 트리거를 설정했다고 가정하도록 하자.

위에서 설명한 각 기대값과 결과값을 서로 연결하면 그 결과는 아래와 같다.


트리거 기획하기 - 기대값과 결과값 연결짓기

5. 트리거 기획 마무리하기

아직 정리되지 않은 모호한 지점들

위처럼 기대값과 결과값을 연결지었다고 해도, 실제 동작은 기대와 어긋나는 경우가 있다.

예를 들어, 좌, 우로 손가락 쓸기 동작에서 손가락을 뗐을 때도 탭으로 인식하게 해야 할까?

두 손가락을 모으기와 벌리기 동작도 굳이 말하자면 홀드 동작이니 모션과 대사가 나와야 할까?

트리거 기획 단계에서 이런 부분을 명확하게 설정해보도록 하자.

트리거 기획 예외처리

‘한번 탭하기’라는 동작은 정확히 무엇을 의미할까?

이것은 ‘한 손가락으로 터치 영역을 한번 손가락으로 누르고 곧 뗀다’까지의 일련의 흐름을 의미한다.

만약 ‘한 손가락으로 터치 영역을 한번 손가락으로 누르고 5초 이상 유지한다’라는 동작이 있다면, 이것은 별개의 동작이다.

그렇다면 이 별개의 동작에서는 어떻게 처리해야 할까? 그냥 임의로 한번 탭하기 동작과 그 결과값을 똑같이 통일하게 하면 되는 걸까?

일단 동작을 결정할 수 없으면 모두 ‘동작 없음’으로 예외처리를 시키자. 의도와 맞지 않는 모든 결과값을 예방하기 위해서는 비워두는 게 정답일 수 있다.

게임 엔진에서는 각 터치를 받는 조건을 아래와 같이 구분한다.

  • 터치 시작(Began), 손가락 터치 유지(Stationary), 손가락 뗌(Ended)
  • 한 손가락 터치(TouchCount == 1), 두 손가락 터치(TouchCount == 2), 세 손가락 터치(TouchCount == 3)

우리가 위에서 정리한 기대값과 결과값을 다시 한번 생각해보자.

예를 들어, ‘한번 탭하기’ 동작의 결과, ‘터치 대사 & 터치 모션’이 나와야 한다.

탭하기 동작은 터치를 누르자마자 시작되는 동작이므로 ‘터치 시작(Began)’에 해당한다.

또한 한 손가락으로 조작하는 동작에 해당하므로 ‘한 손가락 터치(TouchCount == 1)’에 해당한다.

이 두 가지 동작이 모두 만족되는 경우에 한해, ‘터치 대사 & 터치 모션’이 나오게 하면 된다.

반대로 말해, 이 두 가지 동작이 모두 만족되지 않는 모든 경우의 결과값은 모두 Null처리하면 된다.

If (TouchCount == 1 && TouchPhase == Began) Then, TouchMotion == True
Else, TouchMotion == False

한번 탭하기 외에도 모든 다른 동작도 위처럼 처리하자. 정확하게 내가 원하는 동작을 제외한 모든 경우는 동작이 진행되지 않아야 한다.


(다음 글에 계속)