본 포스트는 교재 '레트로의 유니티 게임 프로그래밍 에센스'를 공부하며 작성하였습니다.
이 책은 유니티는 물론 프로그래밍에 대한 지식이 전혀 없는 입문자와 비전공자, 아티스트 등을 대상으로 하고 있다. 수많은 예시와 그림으로 설명하고 있어, 실습 과정을 놓치지 않고 따라 할 수 있을 것 같다.
이 책은 총 7부로 나뉘어 있으며, 이 안에서 19장의 목차로 나누어져 있다. 간단하게 7부를 살펴보면 이렇다.
- 1부 유니티 준비하기
- 2부 C# 프로그래밍
- 3부 탄막 슈팅 게임: 닷지
- 4부 공간
- 5부 2D 러너 게임: 유니런
- 6부 탑 다운 슈터 게임 : 좀비 서바이버
- 7부 네트워크 협동 게임 : 좀비 서바이버 멀티플레이어
먼저 유니티 개발 환경을 준비하고 C# 프로그래밍에 대해 기초적인 부분을 알려주고 있다.
그다음부터는 닷지 -> 유니런 -> 좀비 서바이버 -> 멀티플레이어까지의 게임을 개발하는 과정이 설명되어 있다.
#유니티 엔진은 무엇인가?
유니티는 2D와 3D 그래픽을 지원하는 다목적 게임 엔진이다. 유니티는 대부분의 기능이 개인 개발자에게 무료로 이용할 수 있게 되어있으며, 현재 가장 많이 사용되는 게임 엔진이다. 그렇기 때문에 한국어와 영어 모두 참고할 자료가 매우 풍부한 편이다. 유니티를 사용하면 게임의 모든 부분을 직접 구현할 필요가 없으며, 공학적 원리보다 게임의 전체 로직에 더 집중할 수 있기 때문에 게임 개발 입문에 유니티가 추천되고 있다.
#1 게임 엔진은 무엇일까?
게임 엔진은 게임 소프트웨어의 구성에 필요한 소프트웨어 구성 요소를 재사용할 수 있게 만든 것이다. 엔진은 개발에 필요한 기능을 즉시 사용할 수 있도록 제공하여 개발의 단가와 복잡도를 줄여주고, 제 일정에 복잡한 게임을 출시할 수 있게 해 준다. 실제로 우리가 실생활에서 즐기는 수많은 게임은 해당 '게임 엔진'을 사용하여 개발된 것이라고 볼 수 있을 만큼 게임 업계에서는 없어서는 안 될 중요한 도구이다.
#2 유니티 엔진 첫 프로젝트 생성하기
우선 유니티를 설치하면 처음에 이런 화면이 나오게 된다. 이제 프로젝트를 생성하기 위해 우측 상단에 파란색 배경으로 되어있는 New project를 클릭한다.
그러면 위와 같이 화면이 나오게 된다.
1번은 어떤 환경을 기준으로 개발할지 결정하는 곳이며, 초기 셋업 외에는 개발에 영향을 주지 않고, 개발 도중 변경이 가능하다.
2번은 프로젝트의 이름이자 생성될 프로젝트 폴더의 이름이다.
3번은 프로젝트 폴더가 생성될 위치이다. 단, 경로에 한국어가 포함되면 안 된다고 한다.
위와 같이 선택 후 생성하게 되면, 새로운 프로젝트가 생성된다.
#3 인터페이스 이해하기
우선 새로운 프로젝트를 생성하게 되면 위와 같은 화면이 나오게 된다. 화면에 나오는 메인창을 먼저 이해해보자.
메인창은 왼쪽 상단부터 Hierarchy, Scene, Game, Inspector, Project, Console의 총 6개가 있다.
- Hierarchy(하이어라키) : 현재 씬에 존재하는 모든 게임 오브젝트가 표시된다. Main Camera 게임 오브젝트(플레이어가 보게 될 게임 화면을 그림)와 Directional Light 게임 오브젝트(씬에 빛을 만듦)를 확인할 수 있다.
- Scene : 하나의 게임 월드에 해당한다. 현재 활성화된 창을 시각적으로 편집이 가능하다.
- Game : 플레이어가 보게 될 화면 미리 보기 (해상도, 화면 비율, scale 등 바꿔볼 수 있음)
- Inspector : 선택한 오브젝트의 정보를 보여준다.
- Project : 프로젝트 내 모든 파일을 저장하는 곳인 assets과 packages를 보여준다.
- Cosole : error와 경고와 같은 것을 텍스트로 알려준다.
#트랜스폼 툴
화면 좌측 상단에 보면 아래 사진과 같은 도구들을 트랜스폼 툴이라고 한다. 트랜스폼 툴은 씬 창에서 씬을 돌아다니고 게임 object 편집할 때 사용한다.
왼쪽부터 Hand tool, Move tool, Rotate tool, Scale tool, Rect tool, Move/Rotate/Scale selected objects, Available Custom editor tools이다.
- Hand tool(단축키 Q) : 화면을 이동할 때 사용된다.
- Move tool(단축키 W) : 선택한 object를 원하는 방향으로 평행 이동시킨다. (빨: x, 초: y, 파: z축) 면을 드래그하면 해당 평면에 평행하게 드래그할 수 있다. 아랫면을 선택하면 y축은 고정된 채로 x, z축에 대해서만 평행이동된다.
- Rotate tool(단축키 E) : 실선을 드래그하면 해당 축을 기준으로 오브젝트를 회전할 수 있다.
- Scale tool(단축키 R) : 선택한 축 방향으로 드래그하여 오브젝트의 크기를 조절할 수 있다. 중간의 흰 큐브를 선택해 드래그하면 양 축 모두를 같은 비율로 크기 조절할 수 있다.
- Rect tool(단축키 T) : 선택한 object의 직사각형으로 편집한다. 가로 세로 방향의 크기만 편집하고 z축 크기는 변하지 않는다. 2D game object나 UI game object 편집할 때 주로 쓴다.
- Move/Rotate/Scale selected object(단축키 Y) : move+rotate+scale tool
#툴 핸들 포지션 버튼
위의 사진은 현재 씬 창이 표시되는 방식을 전환할 수 있는 툴 핸들 포지션 버튼이다.
- pivot : 실제 오브젝트의 위치를 기준으로 오브젝트에 쓰인 도구들 표시해준다.
- center : 실제 위치와 상관없이 오브젝트의 중앙점을 기준으로 쓰인 도구들 표시해준다.
- local : 선택한 오브젝트의 좌표계를 기준으로 쓰인 도구들 표시해준다.
- global : 선택한 오브젝트의 실제 방향을 무시하고 global 좌표계를 표시해준다.
#MEMO
앞으로 이 책을 통해 많은 것을 배우고 꾸준히 공부할 수 있었으면 좋겠다. 목차를 보면 생각보다 어려워 보이는 게임을 만들어야 하기에 내가 잘 만들 수 있을지 의문이 들기는 하지만 오늘 개발 환경을 준비하는 부분까지의 내용 설명에서는 아주 쉽게 이야기하고 있어 조금은 기대해도 될 것 같다. 앞으로 꾸준히 공부할 나를 위해 화이팅!