공부/게임 기획,디자인

[GMTK] How to Make a Good 2D Camera | 좋은 2D 카메라 만드는 법

Excidus 2024. 6. 20. 11:51

선정 이유:

현재 던전 주막을 만들면서 고정된 카메라 프레임을 가지는 주막 파트와 달리 유동적으로 맵을 움직이며 돌아다니는 던전 파트를 만드는 과정에서 카메라를 어떻게 처리하면 좋을지 고민 중입니다. 단순히 주인공에 카메라를 고정할지, 어떠한 효과를 넣어야 할지 고민을 해결하고자 이 영상을 선택했습니다.

 

 

들어가며:

2D 게임을 만들 때 액션을 구성하기 위해 카메라가 필요하다면, 단순히 카메라를 메인 캐릭터에 고정할 수 있습니다. 하지만 이렇게 하면 단순하고 고정적이며 좁은 시야를 가진 지루한 카메라가 될 것입니다. 이번 영상에서는 훨씬 더 나은 2D 카메라를 만드는 5가지 방법에 대해 배울 수 있습니다.

유니티에서 캐릭터에 카메라를 고정하는법

본론:

첫번째: Look ahead (앞서보기)

기본적으로 캐릭터를 항상 화면의 중앙에 배치하면, 디스플레이의 절반만 캐릭터의 눈앞에 있는 것을 보게 됩니다.

캐릭터가 중앙에 위치할 경우 앞화면의 절반정도만 보이게된다

따라서 앞으로 다가오는 것에 더 집중하도록 하고 뒤에 있는 것은 무시하도록 만드는 것이 좋습니다.

  • 해결 방법:
    1. 카메라를 영원히 더 줌아웃 시키면 주인공이 화면 중앙에 있어도 앞으로 펼쳐질 장면을 잘 볼 수 있습니다.
      줌아웃을 통해 넓은 시야를 확보하는 "테라리아"
    2. 카메라를 캐릭터 앞으로 이동시키는 것입니다. 한 방향으로만 이동하는 게임의 경우 카메라를 캐릭터 앞에 위치시키는 것만으로도 효과를 볼 수 있습니다. 하지만 플레이어가 양방향, 좌우 모두로 이동할 수 있다면 카메라의 시점을 약간 조정해야합니다. 예를 들어 "동굴 이야기"에서는 두 개의 카메라 위치를 가지고 왼쪽으로 이동할 때와 오른쪽으로 움직일 때 모두 플레이어의 앞에 위치시킵니다.

카메라를 캐릭터 앞에 배치하여 앞에 나올 장애물을 보여주는 "Geometry Dash"

 

이러한 방식은 플레이어의 앞에 있는 목표물 (몬스터, 장애물 등)을 쏘는 게임에 적합합니다. 이러한 방식에서는 플레이어가 방향을 바꾸면 게임도 천천히 미끄러지면서 카메라가 전환이 됩니다.

 

“ 뉴 슈퍼마리오 브라더스 U”의 경우도 비슷합니다.

게임이 기본적으로 왼쪽에서 오른쪽으로 이동하므로 카메라는 자연스럽게 오른쪽에 치우쳐져 있으며 마리오보다 앞쪽인 화면 오른쪽에 위치해있습니다.

하지만 잠시 뒤로(왼쪽)으로 물러서기 시작하면 카메라가 이를 알아차리고 이를 따라잡아 마리오의 왼쪽으로 더 멀리 움직입니다.

"뉴 슈퍼마리오 브라더스 U"

 

“소닉 제너레이션즈” 에서는 이와 더불어 카메라가 소닉의 속도에 반응합니다.

소닉이 가만히 있을 때는 카메라도 가만히 서있지만 소닉이 가속을 받아 달릴수록 카메라도 같이 점점 더 앞쪽으로 이동합니다. 카메라는 최대 위치에 도달할때까지 점점 더 앞으로 이동하게 됩니다.

가속을 받아 더 빨라질수록 카메라도 같이 점점 더 앞쪽으로 이동하는 "소닉 제너레이션즈"

이러한 카메라의 작동은 플랫포머 게임에만 사용되는 것이 아닙니다.

“하이퍼 라이트 드리프터”

“하이퍼 라이트 드리프터”에서는 카메라가 캐릭터의 머리 앞보다 조금 멀리 위치해 있어서 어느방향을 바라보든 카메라가 다가오는 것을 프레임 안에 담게 됩니다.

또한 슈팅 기반 로그라이크 게임인 “엔터더건전”, “핫라인 마이애미” 등의 게임에도 적용해서 카메라를 멀리 배치하여 커서를 적에 조준하기 쉽도록 만들어 적을 더 잘 볼 수 있고 쏠 수 있도록 만들었습니다.

여기에서 중요한 것은 “플레이어에게 정말 필요한 것은 무엇인가?”라고 게임 개발자가 스스로 자문하고 “정말 플레이어가 보고 싶은 것이 무언인가?” 그리고 카메라가 그 내용을 숨기고 있지는 않은지 확인해야 합니다.

 

두번째: 카메라와 점프

카메라를 캐릭터에 고정하면 캐릭터가 점프할 때마다 화면이 움직이게 됩니다. 플랫포머 게임에서 점프가 중요한 요소라면, 카메라의 잦은 움직임은 유저에게 어지러움을 줄 수 있습니다.

  • 해결 방법:
    1. 특정 높이까지 점프를 무시:
      • 예시로 “동키콩 컨트리”에서는 주인공 DK의 점프에 기준선에 못 미칠 경우 카메라가 반응하지 않고 지면이 항상 같은 위치를 유지합니다. 그러나 충분히 높은 플랫폼에 착지하게 되면 카메라가 이를 추적하여 새로운 기준선을 설정하게 됩니다. 즉 점프하는 도중에 카메라가 움직이는 것이 아니라 착지할때 움직입니다.다만 로프를 오르거나 수영하는 경우에는 이러한 규칙을 반영하지 않고 위아래로 자유롭게 움직입니다.
        발판이 기준선이 되는 동키콩
      • “레이맨 레전드”에서도 비슷한 모습을 볼 수 있습다. 카메라는 레이맨이 점프할때 흔들리지 않고 프레임을 넘어 레벨이 올라가는 특정, 미리 정해진 기준선을 넘어가는 특정 영역만 추적해서 움직입니다.
    2. 레벨 디자인 수정:
      • "Shovel Knight"와 같은 게임에서는 레벨의 최대 높이를 설정하여 카메라가 위아래로 움직이지 않도록 합니다. “Shovel Knight”와 같은 게임에서는 레벨은 최대 높이를 설정해서 레벨을 디자인합니다. 따라서 화면의 정확한 높이는 고정되어 있어서 위 아래로는 움직일 필요 없이 카메라는 왼쪽과 오른쪽만 추적해 움직이게 되고 위아래로 움직일 필요가 없으므로 점프할 때 카메라를 정지상태로 유지할 수 있습니다.

위아래로의 카메라 이동없이 좌우 이동만 있는 "Shovel Knight"

 

여기서 더 나아가 전체 레벨을 한 화면에 유지하면 카메라가 전혀 움직일 필요도 없게된다. 이는 정밀한 점프를 하는 게임에 적합하고 카메라를 수직으로 위치하는데 도움을 주어서 캐릭터가 화면 하단에 더 가까이 위치하게된다. 이렇게 하면 기준선 아래 더 많은 수직 공간을 확보할 수 있고 카메라를 위아래로 움직일 필요가 줄어들게됩니다.

캐릭터가 하단에 위치해 있고 하단영역에 더 많은 공간 확보가 가능하다

여기서 주의해야할 점은 두 카메라 축을 동일하게 취급할 필요는 없다. 왼쪽에서 오른쪽으로 움직일때와, 오른쪽에서 왼쪽으로 움직일때 그리고 위아래로 움직일때 항상 동일하게 움직일 필요는 없고 다르게 움직여도 된다.

 

세번째: 댐핑(Damping), 흔들림 줄이기

카메라가 캐릭터를 완벽하게 추적하면, 작은 움직임에도 카메라가 반응하여 불규칙하고 흔들리는 느낌을 줄 수 있습니다.

  • 해결 방법:
    1. 댐핑 사용: 카메라의 현재 위치와 캐릭터 위치 사이에 댐핑을 사용하여 부드럽게 따라가게 합니다. 이벤트를 더 부드럽게 따라갈 수 있으며, 캐릭터의 작은 위치 변화에 즉각적으로 반응하지 않게 됩니다. 하지만 카메라가 플레이어의 움직임을 따라잡는 속도가 느려서 따라가지 못하는 경우 캐릭터가 실제로 카메라의 앞에 있는 것처럼 보일 수 있게 되고 앞을 볼 수 있는 화면의 영역이 더 적게 남는 문제가 생깁니다.
      캐릭터의 움직임을 부드럽게 따라가는 댐핑이 적용된 "Ori"

           2. 데드존 설정: "Fez"에서는 보이지 않는 창을 통해 캐릭터가 영역을 벗어날 때만 카메라가 움직이도록 합니다.

"Fez" 지정된 영역을 벗어날 경우만 카메라가 이동한다

 

유의할 점으로는 카메라의 반응성을 높히면 8비트 느낌의 레트로 게임에는 적합하지만 댐핑을 넣으면 카메라의 움직임이 더 부드럽고 세련된 느낌을 줄 수 있습니다.

 

네번째: 프레이밍(Framing)

일반적으로 카메라는 주인공 캐릭터에 집중해야 하지만, 때로는 다른 사물을 강조하고 싶을 때도 있습니다. 이 경우 카메라를 움직이거나 줌인, 줌아웃하는 것을 고려해야 합니다. 많은 게임에서 보여주고자 하는 사물이 들어오면 화면 프레이밍을 통해서 플레이어 시선을 의도적으로 끌 수 있습니다.

 

  • “디즈니 일루전 아일랜드”에서는 일반적으로 미키의 움직임을 따라가지만 줌아웃하거나, 미리 정해진 위치에 완전히 고정하여 까다로운 플랫폼 구간이나 퍼즐 영역의 경우 기존과 다른 프레임을 잡을 수도 있습니다. 이 구간을 벗어나면 원래의 카메라 프레임으로 돌아오게 됩니다.
    플랫포머로 이동하다가 지정된 영역에 도달하면 프레임이 변화하는 "디즈니 일루전 아일랜드"
  • 또한 카메라는 때때로 여러 사물을 따라가야 할때도 있습니다. 판타지 농구 게임 “Fantasy basket ball Rpg Pyre” 에서는 다양하게 캐릭터를 바꿔서 플레이 할 수 있는데 현재 플레이어의 캐릭터가 공만큼이나 중요하기 때문에 카메라가 줌과 이동을 통해서 두가지가 동시에 화면에 눈에 띄도록 합니다.
    공과 캐릭터 모두를 보여주어야 하는 프레임
  • 그리고 카메라를 움직여 드라마틱한 시네마틱 연출과 같은 영화같은 구도를 연출할 수도 있습니다. “인사이드”에서는 카메라는 보통 일반 플랫포머처럼 플레이어의 앞을 보여주지만 긴박하고 중요한 순간에서는 카메라가 줌아웃하여 시네마틱 연출이 나오게됩니다. 광견병에 걸린 개들한테 쫓길 때처럼 중요한 순간에는 카메라가 움직여서 쫓아오는 공격자들을 더 잘 볼 수 있도록 합니다.
    특정 상황에서의 카메라의 시점이 변화
  • 또한 카메라를 줌인, 줌아웃을 통해서 효과를 낼 수도 있습니다. “Gris”에서 카메라는 때때로 주인공을 클로즈업했다가 때로는 주변 지형지물, 건물의 웅장한 모습을 드러내기 위해 줌아웃을 통해서 보여주기도 합니다.
  • 그리고 카메라가 특정 사물을 보지 못하도록 제한하는데 사용하기도 합니다. 스펠렁키1,2에서 레벨은 플레이어가 뚫을 수 없는 바위로 둘러싸여 있고 프레임으로 둘러싸여 있어서 카메라가 이 구역으로 들어가는 것을 방지합니다. 이렇게 구역을 잠그면 프레임 내의 더 많은 부분에 집중하게 만들 수 있습니다.

보여줄 프레임을 제한시키도한다

다섯번째: 게임의 생동감 (Juice)

카메라를 통해서 게임의 생동감, 주스(Juice)를 추가할 수 있습니다.

이를 통해서 게임을 더욱 흥미진진하고 생동감 있게 만들 수 있습니다.

우선 여기서의 주스란

https://en.wikipedia.org/wiki/Game_feel

 

Game feel - Wikipedia

From Wikipedia, the free encyclopedia Feeling when playing a game This article focuses only on one specialized aspect of the subject. Please help improve this article by adding general information and discuss at the talk page. (January 2017) Game feel (som

en.wikipedia.org

 

게임에서의 상호작용을 통해 받는 게임에 대한 느낌들, 시각, 청각적인 느낌 뿐만이 아니라 성취감, 만족감, 실망감 등 게임을 통한 전체적인 느낌을 말합니다.

 

첫번째: 화면 흔들림

단순히 카메라를 흔드는 것이 아니라 흔들림을 통해서 폭발을 효과적으로 표현하거나 충격, 격렬한 싸움, 무거운 무게를 가진 캐릭터의 움직임을 표현하는데 사용할 수 있습니다.

"셀레스테"에서 볼 수 있는 능력을 사용할때 나오는 화면 흔들림

두번째: 히트 스톱 (Hit Stop)

이것은 게임에 작은 정지 프레임(Freeze Frame)을 추가하는 것으로 게임에서 무의식적으로 액션의 임팩트를 높힐 수 있다. 여러 액션 게임들에서 이러한 사례를 볼 수 있습니다.

카타나 제로에서는 적을 죽이면 잠깐 액션이 멈추는 것을 볼 수 있습니다. 카메라는 계속 흔들리고 파티클 효과가 계속 출력되지만 액션은 정지된 상태로 시간이 지나면 다시 이어지게 된다. 이러한 정지 프레임을 통해서 타격이 더욱 임팩트 있게 느낄 수 있습니다.

적을 죽일때 정지 프레임이 출력되는 "카타나 제로"

세번째로는 카메라가 짧은 시간동안 움직이거나, 줌인, 줌아웃을 하면서 게임을 더 생동감있고 효과적으로 표현합니다.

적의 공격을 패링할경우 줌인이 되는 "메트로이드 드레드"

데이브 더 다이버에서는 수영하다가 작살로 물고기를 맞혔을때 카메라가 갑자기 줌인하여 데이브와 물고기 사이의 전투 장면을 촬영한후 다시 원래의 카메라 프레임으로 돌아옵니다.

이러한 기법들은 생동감을 더할 수 있습니다. 하지만 카메라가 빠르게 흔들리고 움직이는 것은 어떤 사람들에게는 불편할 수 있으므로 접근성 옵션을 통해 선택을 하는 것이 좋습니다.

 

결론:

카메라의 역할은 궁극적으로 주인공을 따라다니며 주인공을 항상 화면에 담는 것입니다. 하지만 카메라는 그 이상을 할 수도 있습니다. 다가오는 도전들에 집중하기 위해 앞부분을 미리 보여줄 수도 있고 끝없는 움직임을 피하기 위해서 때로는 점프를 무시할 수도 있으며 댐핑을 추가하여 움직임을 부드럽게 만들 수도 있고 특별한 규칙을 설정하여 중요한 이벤트의 프레임을 설정하거나 임팩트와 효과를 조정할 수도 있습니다. 당연한 말이지만 자신의 개발하고 있는 게임에 맞게 적절히 적용하는 것이 중요합니다.