게임 디자인
게임 제작에 앞서 게임 디자인이란 것에 대해 생각해야한다.
게임 디자인에는 여러가지 제약들이 존재하지만 소규모로 제작하는 입장에서 고려해야할 것들에 대해서 간단하게 얘기하자면 이런 것들이 있다.
- 게임의 요소와 메카닉
- 사용자 경험(Player Experience)
- 핵심 기능(Core Mechanic)
- 게임 루프(Game Loop)
하나씩 살펴보자.
게임의 요소와 메카닉
게임의 요소와 메카닉은 단순하게 말하면 무엇이 게임에 있고, 어떤 방식으로 동작하는가를 말한다.
자동차를 운전하는 게임이 있다고 하자.
단순히 자동차를 운전하면 재미가 없으니 자동차를 운전해서 물건을 전달하는 게임이라고 해보자.
게임의 요소
게임의 요소는 게임에 필요한 것들이라고도 할 수 있다.
그러면 이 게임에 필요한 것들은 무엇이 있을까?
가장 먼저 자동차가 될 것이다.
이것이 곧 게임을 하는 사람이 주로 조종할 것이 된다.
그 다음으로는 배달할 물건이 있을 것이다.
이것은 게임을 하는 사람이 달성해야할 목표에 도달하기 위해 필요한 핵심 요소가 될 것이다.
그리고 배달받을 장소나 사람이 있을 것이다.
물건을 배달하는 주인공이 최종적으로 도달해야할 목적지가 될 것이다.
그 외에도 자동차를 가로막을 장애물들이나 여러가지 것들이 있을 것인데, 이를 모두 통틀어서 게임의 요소라고 할 수 있다.
게임의 메카닉
게임의 메카닉은 게임이 동작하는 방식이라고도 할 수 있다.
그러면 이 게임은 어떻게 동작할까?
가장 먼저 물건을 받을 것이다.
이 행동으로 배달할 물건을 얻게 된다.
그 다음으로는 운전을 해서 장소로 향할 것이다.
이 행동이 우리가 구현할 게임의 핵심이라고 할 수 있다.
전진, 후진, 좌회전, 우회전 모두 가능하게 할 것이다.
마지막으로는 물건을 전달해 줄 것이다.
게임이 끝나는 조건이자 주인공이 해야할 궁극적인 목표가 된다.
이런 식으로 게임이 어떤 식으로 작동하고 흘러갈 지가 게임의 메카닉이 될 것이다.
하지만 이런 식이면 게임의 메카닉이라는 말을 쓰기 보다 게임의 흐름이 더 정확한 말이 될 것이다.
여기서 우리가 빼먹은 요소가 있는데 그것은 구현 방법이다.
이렇게 동작할 거란 것은 잘 알겠지만 그걸 궁극적으로 어떤 식으로 구현할 것인지가 게임의 메카닉에 포함된다.
예를 들면, "물건을 받는 행위는 자동차가 물건 박스를 지나가면 자동차에 물건이 실리게끔 설계 한다" 라던가,
"물건을 전달하는 행위는 지정된 위치에 정차하면 전달하게끔 설계 한다" 라는 식으로 말할 수 있다.
사용자 경험(Player Experience)
사용자 경험은 말 그대로 우리의 게임을 사용할 사람이 게임을 하면서 경험할 것들이다.
게임의 궁극적인 목표는 이 게임을 하는 사람이 재미를 느끼거나, 감동을 느끼거나, 무언가 감정을 느끼게 하는 것이다.
즉, 사용자 경험은 게임을 하는 사람이 우리의 게임을 하면서 궁극적으로 느꼈으면 하는 것, 게임을 하는 사람이 우리의 게임에서 경험했으면 하는 것들을 말한다.
앞서 말한 재미, 감동, 감정등이 되겠는데 단순한 감정을 애기하기 보다는 어떻게, 어떤 감정을 느끼게 하는가가 좀 더 정확하다.
몇가지 예를 들어보겠다.
Silent Hill
공포 게임 명작으로 알려져있으며 영화로도 제작된 사일런트 힐이라는 게임의 경우 공포 게임이라는 장르 답게 사용자에게 무서움, 공포에서 오는 스릴을 느끼게 한다.
사용자 입장에서 충분한 공포를 느꼈으므로 사용자 경험은 공포라고 할 수 있다.▼
Getting Over It
일명 항아리 게임이라고도 알려져있는 Getting Over It의 경우 사용자가 조작 부분에서 극한의 답답함을 느끼게 설계되어있다. 하지만 그것을 뚫고 클리어를 했을 때 오는 성취감이 이 게임의 핵심 목표가 된다.
성취감도 성취감이지만, 사용자 입장에서 가장 크게 느낄 부분은 답답함이 될 것이므로 사용자 경험은 극한의 답답함에서 오는 성취감이 될 것이다.▼
이렇게 사용자에게 어떤 감정을, 느낌을 주고 싶은지를 정하는게 사용자 경험 부분이다.
이는 이렇게 아예 게임의 컨셉이 될 수도 있지만, 좀 더 넓게 보면 게임의 쾌적 수치도 이 부분이 될 수 있다.
즉, 의도를 확실히 전하는 그래픽, 쉽고 간편한 조작, 잘 정돈된 게임 메뉴 등등 여러가지 부분에서 사용자 경험을 생각해 볼 수 있다.
핵심 기능(Core Mechanic)
핵심 기능은 게임 메카닉과 같은 얘기지만 좀 더 세부적으로 파고 든 부분이다.
일단 핵심 기능이라고 하면 내 게임의 대표적인 특징, 내 게임의 유별난 기능들을 말할 수 있다.
젤다의 전설: 야생의 숨결로 예시를 들어보겠다.▼
기존의 젤다의 전설 시리즈와는 다르게 오픈월드 형식이 처음 적용된 버전이다.
시커 스톤과 같은 여러가지 기능들이 많이 포함되어있는 대작이다.
하지만 다른 게임에는 없는 기능을 핵심이라고 하면, 어떤 벽이든 오를 수 있다는 것을 핵심이라고 할 수 있다.
이렇게 다른 게임들과 차별화 되는 기능을 게임의 핵심 기능이라고 할 수 있다.
중요성
그냥 게임 메카닉 정도로 생각하면 되는거 아냐? 라고 생각할 수 있지만, 이름에 핵심이 들어간 만큼 중요한 요소라고 말 안해도 알 정도로 중요한 요소다.
그렇다면 왜 중요한 요소일까? 핵심이라서?
집에서 골똘히 생각을 하다가, 친구와 얘기를 하다가, 샤워하다가 문득, 어떤 현상이나 물체를 보고 기발한 아이디어가 떠오를 수 있다.
'이렇게 하면 굉장히 재밌는 게임이 될 거 같아.'
'저 부분을 부각시키면 꽤 흥행하겠는데?'
'이 게임은 이 부분에서 실패해서 흥행하지 못했어, 그러면 내가 이 부분을 구현한다면?'
아이디어를 구체화 하고 살을 붙이면서 이 생각들이 의문이 아닌 확신으로 변하는 때가 온다.
'이렇게만 하면 AAA급 게임을 만들 수 있을 것만 같아!'
그렇게 열심히 게임 기획을 짜고, 어떤 흐름으로 게임이 진행될 지 정하고, 미리 그래픽 디자이너까지 섭외를 했는데,
개발을 시작하니 최신 세대의 컴퓨터의 성능으로도 실행하기 힘들거나,
특정 플랫폼 위주의 출시를 원하는데 해당 플랫폼에서의 최대 성능의 한계치가 너무 낮다거나,
핵심 기능을 위해서는 막대한 자본이 필요한데 아무리 끌어모아도 자본을 메꿀 수 없다거나
하는 이유로 이 게임의 핵심 기능을 구현할 수 없는 상황을 마주할 수 도 있다는 것이다.
아이디어는 좋았지만, 그 아이디어를 구현할 수 없다면 구현 불가능한 아이디어로 결과적으론 좋지 못한 아이디어가 된다.
그렇기에 핵심 기능에 대해서 좀 더 깊이 생각을 해봐야한다는 것이다.
'어떤 식으로 전체적인 코드 구성을 하고, 어떤 알고리즘으로, 어떤 라이브러리를 가져다 쓰면 이 핵심 기능이 구현될 거 같다.'
'해당 플랫폼의 평균 성능정도로도 충분히 실행 가능하겠다.'
정도를 생각해보고, 핵심 기능을 위주로 간단하게 구현을 해봐야 한다는 말이다.
이것은 게임에서만 국한되는 말이 아니라 다른 부분에서도 모두 적용된다.
'이런 서비스를 개발하면 떼 돈 벌거 같은데?'
'지금껏 이런 웹사이트는 없었어. 그럼 내가 만들면 대박나겠는걸?'
'이 기술과 저 기술을 접목시키면 엄청난 새 기술이 만들어질 것만 같아!'
이런 생각이 들었다고 설레발쳐서 구현하기도 전에 구현한 것 같이 생각하면 안된다는 것이다.
그렇기에 먼저 프로토타입으로 구현해보고, 시작을 해야 추후에 만들던 것들이 무너지지 않게 된다.
위의 이유로 핵심 기능에 대해 깊고, 세부적으로 생각을 해봐야 한다.
게임 루프(Game Loop)
게임 루프는 게임 프로그래밍에서 게임이 끝나지 않게 무한으로 돌아가는 루프를 말하는데, 여기서는 게임의 큰 흐름과 시스템을 말한다.
게임 루프는 앞서 말한 메카닉과 같이 내부에 깊이 들어간 부분이라기 보다는 게임이 완성 됐을 때의 시점으로 보는 것과 비슷하다.
어떻게 보면 기획이자, 게임의 전체적인 시스템을 말할 수 있다.
게임 루프는 아래와 같이 흐름도처럼 볼 수 있다.▼
여기서 게임 플레이 부분 까지 아래의 포맷으로 정리하면 그것이 게임 루프라고 할 수 있다.
이렇게 게임이 어떤 식으로 흘러갈 것이고, 어떻게 끝맺음을 낼 것인가를 정리한 것이 게임 루프라고 할 수 있다.
마치며
게임 개발에 본격적으로 들어가기 전에 생각해야할 것들에 대해서 알아보았다.
거창하게 여러가지를 써보았지만 대부분 따로 생각 안해도 게임을 즐겨하는 사람이라면 대부분 아는 내용일 것이다.
그래도 설계를 미리 하고 들어가는 것은 중요하니 어렴풋이 아는 것보다는 명확하게 알아두는 것이 좋을 거 같다.
'Develop > Unity' 카테고리의 다른 글
[Unity2D] Input 시스템 (0) | 2024.03.03 |
---|---|
Unity2D: Start와 Update (0) | 2024.03.01 |
[Unity2D] Object와 Sprite (0) | 2024.02.22 |
[Unity2D] unity와 C#, VSCode 설정(macOS, M1) (0) | 2024.02.22 |
[Unity2D] 기초에 앞서 (0) | 2024.02.22 |