요즘은 게임을 만들려면 게임엔진을 활용하는 것이 일반적이다. 그중에서도 양대산맥은 유니티와 언리얼이다. 특히 유니티는 유연한 라이선스 모델과 풍부한 리소스 덕분에 캐주얼 게임이나 인디게임 등에서 많이 채택하여 사용되고 있다.  하지만 유니티가 워낙 많은 기능을 제공하다 보니 초반에 유니티를 배워볼까 하는 사람들에게는 어떤 책을 선택할까도 또 하나의 고민거리가 되곤 한다. 지인을 통해 추천받았던 유니티 도서들 중 하나가 Retr0님의 유니티 에센스 책이었는데, 이번에 개정판이 나와서 한번 살펴보면서 그동안의 지식을 업데이트해보았다. 참고로 나는 게임 개발자는 아니다.

전과수준으로 두꺼운 유니티.. 에센스면 정수만 뽑은건데.. 

첫 느낌...두껍다.

1070쪽의 두꺼운 분량이다. 두께가 주는 첫인상을 무시할 수는 없다. "아... 이 정도를 봐야 유니티의 개념을 익힐 수 있단 말이지"하는 생각이 절로 든다. 다행히 500쪽 정도로 2권이 분철되어 있어서 그래도 가볍게 들고 다니면서 볼 수 있었다. 분철된 도서는 처음이었는데, 사용경험이 생각보다 괜찮았다. 앞으로도 두꺼운 책은 분철된 형태로 구매하게 될 것 같다. 회사 다니면서 이 책의 내용을 전부 해보면서 읽었는데 대략 2주 정도 소요되었다.

 

4가지 게임 만들기

이 책의 흐름은 4개의 게임을 만들어보면서 유니티를 익히는 것이다.  4개의 게임을 잘 선택했다고 본다. 첫 번째로 만드는 <닷지>를 통해 유니티 인터페이스와 기본적인 에셋을 추가하고 스크립트를 적용하면서 MonoBehaviour,에 대한 개념을 익힌다. Unity의 좌표 시스템을 통해  캐릭터를 움직이고, Collider를 적용하면서 캐릭터의 충돌 감지 개념을 익힌다. 이 모든 것을 컴포넌트 기반으로 쌓아 올려서 게임을 만들 수 있구나 하는 생각을 하면서 게임을 따라 만들어 보았다.

두 번째로 만드는 게임은 <유니런>이라는 2차원 플랫폼 게임이다. 닷지를 통해 기본적인 내용을 익힌 상태에서 애니메이션 클립과 유한 상태 머신을 이용하는 방법을 배울 수 있는 좋은 예제였다. 여기까지가 1권의 내용이다.

2권에서는 좀비 서바이버라는 탑다운 슈팅 게임(마치 플레이어를 내려보는 관점에서 슈팅 게임)을 만들고 이를 네트워크 게임 플레이가 가능하도록 확장하는 내용으로 이루어져 있다.  유니티가 제공하는 인공지능 컴포넌트를 이용하여 좀비가 돌아다니면서 플레이어를 쫓아다니는 기능을 만든다거나, C# 인터페이스를 통해 코드의 재사용성을 높이기 위한 방법, 3D 모델에 레이어 개념을 적용하여 효과적인 애니메이션 효과를 얻는 방법, 포톤 엔진을 이용하여 다중 플레이어 게임을 만드는 방법(로비 기반)까지 설명하고 있다. 

예제를 통해 유니티 기초부터 활용까지 훑어볼 수 있게 설명했다는 점에서 저자가 고민을 많이 했다고 느껴졌다. 기능을 펼쳐놓고 이것저것의 기능을 설명하는 것이 아니라 백지상태에서 조금씩 기능을 추가로 사용하면서 익혔는데, 그 과정에서 4개의 게임이 만들어지도록 함으로써 흥미가 떨어지지 않고 끝까지 편하게 읽을 수 있었다.

 

친절한 설명

이 책의 독자가 누구일까? 나는 프로그래밍이 완전히 익숙하지 않은 유니티 게임 개발자가 되고 싶은 사람들을 위한 첫 책을 찾는 사람이라 생각한다. 책이 두꺼운 이유는 저자가 너무너무 상세하게 각 개발 과정을 설명하고 있다. 예를 들어 코드 설명도 초기 구조 설명 -> 각 부분별로 기능을 추가하면서 수정되는 내용 설명 -> 최종 완성된 전체 코드를 설명한다. 즉 깃헙으로 제공되는 기본 코드 골격에 이런 기능을 추가할 것이야 하면서 설명하고, 각 기능을 붙이면서 코드 한줄한줄 의도와 동작 방식을 설명한다. 그리고 그렇게 부분 부분 수정한 다음 완성된 전체 코드는 이런 모습이야 라고 보여줌으로써 초보자들의 실수를 막아준다. 예제대로 하다 보면 실수로(?) 뭔가를 빼먹었을 경우 여러 단계에서 쉽게 확인하여 수정할 수 있었다.

유니티를 사용하여 게임을 만드는 것 이외에도 C#의 기본적인 언어 특성을 설명하는데 꽤 많은 공을 들인 책이다. 하지만 언어 자체를 집중적으로 다루었다기보다는 게임 제작에 필요한 수준으로 설명하고 있다. 어느 정도 개발경험이 있는 독자라면 이런 부분은 다른 프로그래밍 서적과 유사하기 때문에 쉽게 진도를 나갈 수 있다. 예컨대 변수, 함수, 메서드, 제어문, 배열, 상속, 인터페이스, 풀링, 싱글톤, 람다식 등을 소개한 부분은 금방 넘길 수 있을 것이다. 초심자의 경우 개념을 익히는 수준에서 잘 설명되어 있다.

나의 경우 1권을 통해 유니티 개념을 살펴보고 2개의 예제 게임을 직접 만들어 보는데 3일,  2권을 통해 네트워킹까지 해보는데 4일 정도 소요되었다. 주로 주말에 집중해서 읽고 실제로 해보면 금방 저자가 전달하고자 하는 의도를 이해할 수 있었다.

 

나의 실수

책 읽으면서 한 가지 실수한 것이 있는데, 소스코드가 깃헙으로 공유되고 있다는 사실을 알고 있었다. 그런데 개정판 리포지토리가 이전 버전과 다른 것을 몰랐다. 저자분의 리포지토리를 구글링을 통해  방문했을 때 이전 버전이 맨 처음 노출되어서 이를 클론 하여 실습을 진행하였다. 그랬더니 가끔씩 책 내용에는 Asset 폴더에 있다는데 아무리 찾아봐도 없는 경우가 발생했다. 예컨대 Zombie 스크립트도 없어서 직접 작성하였다. 그 과정에서 ZombieData라는 객체를 사용하는 코드가 있는데 (750쪽) 이와 관련된 코드가 깃헙에 제공되는 코드가 없어서 결국 책 색인 부분에서 찾아서 774쪽에 나온 ZombieData 스크립트의 완성 버전을 입력하여 원하는 기능을 완성하였다.  오타를 발견한 줄 알고 출판사에 알려줘야지 하고 메모해 두었는데, 개정판 리포지토리가 따로 있는 것을 알고 방문했더니 떡하니 있는 게 아닌가.. 

저자분이 이전판 리포지토리에서 개정판 리포지토리를 안내하도록 README.md 파일을 수정해주면 나와 같은 실수를 겪는 독자가 없을 것이다.

 

 

요약

이 책을 한번 읽었다고 해서 자신이 원하는 게임을 쓱쓱 만들 수는 없을 것이다. 하지만 기본 개념들을 익히고, 자신이 원하는 게임을 만들고자 할 때 어떤 부분을 좀 더 봐야 하겠구나라는 방향타를 얻기에는 정말 좋은 책인 것 같다.

 

이 책을 다음 세 문장으로 소개하고 싶다.

  • 유니티에 대한 친절한 설명. 입문자용으로 매우 적합. 너무너무 친절한(기존 개발자에게는 지루할 정도의) 설명
  • c#이나 다른 언어에 익숙하다면 코드 부분은 정말 손쉽게 넘어간다.
  • 게임을 만들면서 개념을 익힐 수 있도록 잘 설계된 책.

 

 

 "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

반응형

+ Recent posts